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/14 17:12:38 UTC

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

Author: luc
Date: Mon Jul 14 08:12:36 2008
New Revision: 676618

URL: http://svn.apache.org/viewvc?rev=676618&view=rev
Log:
fixed a problem preventing integration stop when end time was exactly 0

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/EmbeddedRungeKuttaIntegrator.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=676618&r1=676617&r2=676618&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 Mon Jul 14 08:12:36 2008
@@ -164,12 +164,14 @@
      * <p>This method can be used to simplify handling of integration end time.
      * It leverages the nominal stop condition with the exceptional stop
      * conditions.</p>
+     * @param startTime integration start time
      * @param endTime desired end time
      * @param manager manager containing the user-defined handlers
      * @return a new manager containing all the user-defined handlers plus a
      * dedicated manager triggering a stop event at entTime
      */
-    protected CombinedEventsManager addEndTimeChecker(final double endTime,
+    protected CombinedEventsManager addEndTimeChecker(final double startTime,
+                                                      final double endTime,
                                                       final CombinedEventsManager manager) {
         CombinedEventsManager newManager = new CombinedEventsManager();
         for (final EventState state : manager.getEventsStates()) {
@@ -179,7 +181,9 @@
                                        state.getMaxIterationCount());
         }
         newManager.addEventHandler(new EndTimeChecker(endTime),
-                                   Double.POSITIVE_INFINITY, Math.ulp(endTime), 10);
+                                   Double.POSITIVE_INFINITY,
+                                   Math.ulp(Math.max(Math.abs(startTime), Math.abs(endTime))),
+                                   100);
         return newManager;
     }
 

Modified: commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/EmbeddedRungeKuttaIntegrator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/EmbeddedRungeKuttaIntegrator.java?rev=676618&r1=676617&r2=676618&view=diff
==============================================================================
--- commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/EmbeddedRungeKuttaIntegrator.java (original)
+++ commons/proper/math/branches/MATH_2_0/src/java/org/apache/commons/math/ode/nonstiff/EmbeddedRungeKuttaIntegrator.java Mon Jul 14 08:12:36 2008
@@ -198,7 +198,7 @@
     for (StepHandler handler : stepHandlers) {
         handler.reset();
     }
-    CombinedEventsManager manager = addEndTimeChecker(t, eventsHandlersManager);
+    CombinedEventsManager manager = addEndTimeChecker(t0, t, eventsHandlersManager);
     boolean lastStep = false;
 
     // main integration loop

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=676618&r1=676617&r2=676618&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 Mon Jul 14 08:12:36 2008
@@ -113,7 +113,7 @@
     for (StepHandler handler : stepHandlers) {
         handler.reset();
     }
-    CombinedEventsManager manager = addEndTimeChecker(t, eventsHandlersManager);
+    CombinedEventsManager manager = addEndTimeChecker(t0, t, eventsHandlersManager);
     boolean lastStep = false;
 
     // main integration loop