You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2008/07/03 20:36:03 UTC

svn commit: r673755 - in /commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode: AbstractIntegrator.java nonstiff/AdaptiveStepsizeIntegrator.java nonstiff/RungeKuttaIntegrator.java

Author: luc
Date: Thu Jul  3 11:36:03 2008
New Revision: 673755

URL: http://svn.apache.org/viewvc?rev=673755&view=rev
Log:
pushed common code up in the AbstractIntegrator base class

Modified:
    commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/AbstractIntegrator.java
    commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/AdaptiveStepsizeIntegrator.java
    commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/RungeKuttaIntegrator.java

Modified: commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/AbstractIntegrator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/AbstractIntegrator.java?rev=673755&r1=673754&r2=673755&view=diff
==============================================================================
--- commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/AbstractIntegrator.java (original)
+++ commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/AbstractIntegrator.java Thu Jul  3 11:36:03 2008
@@ -101,4 +101,44 @@
         return stepSize;
     }
 
+    /** Perform some sanity checks on the integration parameters.
+     * @param equations differential equations set
+     * @param t0 start time
+     * @param y0 state vector at t0
+     * @param t target time for the integration
+     * @param y placeholder where to put the state vector
+     * @exception IntegratorException if some inconsistency is detected
+     */
+    protected void sanityChecks(final FirstOrderDifferentialEquations equations,
+                                final double t0, final double[] y0,
+                                final double t, final double[] y)
+        throws IntegratorException {
+
+        if (equations.getDimension() != y0.length) {
+            throw new IntegratorException("dimensions mismatch: ODE problem has dimension {0}," +
+                                          " initial state vector has dimension {1}",
+                                          new Object[] {
+                                              Integer.valueOf(equations.getDimension()),
+                                              Integer.valueOf(y0.length)
+                                          });
+        }
+
+        if (equations.getDimension() != y.length) {
+            throw new IntegratorException("dimensions mismatch: ODE problem has dimension {0}," +
+                                          " final state vector has dimension {1}",
+                                          new Object[] {
+                                              Integer.valueOf(equations.getDimension()),
+                                              Integer.valueOf(y.length)
+                                          });
+        }
+
+        if (Math.abs(t - t0) <= 1.0e-12 * Math.max(Math.abs(t0), Math.abs(t))) {
+            throw new IntegratorException("too small integration interval: length = {0}",
+                                          new Object[] {
+                                              Double.valueOf(Math.abs(t - t0))
+                                          });
+        }
+
+    }
+
 }
\ No newline at end of file

Modified: commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/AdaptiveStepsizeIntegrator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/AdaptiveStepsizeIntegrator.java?rev=673755&r1=673754&r2=673755&view=diff
==============================================================================
--- commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/AdaptiveStepsizeIntegrator.java (original)
+++ commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/AdaptiveStepsizeIntegrator.java Thu Jul  3 11:36:03 2008
@@ -142,24 +142,12 @@
    * @exception IntegratorException if some inconsistency is detected
    */
   protected void sanityChecks(final FirstOrderDifferentialEquations equations,
-                              final double t0, final double[] y0, final double t, final double[] y)
+                              final double t0, final double[] y0,
+                              final double t, final double[] y)
       throws IntegratorException {
-      if (equations.getDimension() != y0.length) {
-          throw new IntegratorException("dimensions mismatch: ODE problem has dimension {0}," +
-                                        " initial state vector has dimension {1}",
-                                        new Object[] {
-                                          Integer.valueOf(equations.getDimension()),
-                                          Integer.valueOf(y0.length)
-                                        });
-      }
-      if (equations.getDimension() != y.length) {
-          throw new IntegratorException("dimensions mismatch: ODE problem has dimension {0}," +
-                                        " final state vector has dimension {1}",
-                                        new Object[] {
-                                          Integer.valueOf(equations.getDimension()),
-                                          Integer.valueOf(y.length)
-                                        });
-      }
+
+      super.sanityChecks(equations, t0, y0, t, y);
+
       if ((vecAbsoluteTolerance != null) && (vecAbsoluteTolerance.length != y0.length)) {
           throw new IntegratorException("dimensions mismatch: state vector has dimension {0}," +
                                         " absolute tolerance vector has dimension {1}",
@@ -168,6 +156,7 @@
                                           Integer.valueOf(vecAbsoluteTolerance.length)
                                         });
       }
+
       if ((vecRelativeTolerance != null) && (vecRelativeTolerance.length != y0.length)) {
           throw new IntegratorException("dimensions mismatch: state vector has dimension {0}," +
                                         " relative tolerance vector has dimension {1}",
@@ -176,11 +165,7 @@
                                           Integer.valueOf(vecRelativeTolerance.length)
                                         });
       }
-      if (Math.abs(t - t0) <= 1.0e-12 * Math.max(Math.abs(t0), Math.abs(t))) {
-        throw new IntegratorException("too small integration interval: length = {0}",
-                                      new Object[] { Double.valueOf(Math.abs(t - t0)) });
-      }
-      
+
   }
 
   /** Initialize the integration step.

Modified: commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/RungeKuttaIntegrator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/RungeKuttaIntegrator.java?rev=673755&r1=673754&r2=673755&view=diff
==============================================================================
--- commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/RungeKuttaIntegrator.java (original)
+++ commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/RungeKuttaIntegrator.java Thu Jul  3 11:36:03 2008
@@ -74,39 +74,6 @@
     this.step       = step;
   }
 
-  /** Perform some sanity checks on the integration parameters.
-   * @param equations differential equations set
-   * @param t0 start time
-   * @param y0 state vector at t0
-   * @param t target time for the integration
-   * @param y placeholder where to put the state vector
-   * @exception IntegratorException if some inconsistency is detected
-   */
-  private void sanityChecks(final FirstOrderDifferentialEquations equations,
-                            final double t0, final double[] y0, final double t, final double[] y)
-    throws IntegratorException {
-    if (equations.getDimension() != y0.length) {
-      throw new IntegratorException("dimensions mismatch: ODE problem has dimension {0}," +
-                                    " initial state vector has dimension {1}",
-                                    new Object[] {
-                                      Integer.valueOf(equations.getDimension()),
-                                      Integer.valueOf(y0.length)
-                                    });
-    }
-    if (equations.getDimension() != y.length) {
-        throw new IntegratorException("dimensions mismatch: ODE problem has dimension {0}," +
-                                      " final state vector has dimension {1}",
-                                      new Object[] {
-                                        Integer.valueOf(equations.getDimension()),
-                                        Integer.valueOf(y.length)
-                                      });
-      }
-    if (Math.abs(t - t0) <= 1.0e-12 * Math.max(Math.abs(t0), Math.abs(t))) {
-      throw new IntegratorException("too small integration interval: length = {0}",
-                                    new Object[] { Double.valueOf(Math.abs(t - t0)) });
-    }      
-  }
-
   /** {@inheritDoc} */
   public double integrate(final FirstOrderDifferentialEquations equations,
                           final double t0, final double[] y0,