restarting an ODE solver that has been stopped by an event doesn't work
-----------------------------------------------------------------------

                 Key: MATH-421
                 URL: https://issues.apache.org/jira/browse/MATH-421
             Project: Commons Math
          Issue Type: Bug
    Affects Versions: 2.1
         Environment: Linux
            Reporter: Luc Maisonobe
            Assignee: Luc Maisonobe
            Priority: Minor
             Fix For: 2.2


If an ODE solver is setup with an EventHandler that return STOP when the even 
is triggered, the integrators stops (which is exactly the expected behavior).
If however the user want to restart the solver from the final state reached at 
the event with the same configuration (expecting the event to be triggered 
again at a later time), then the integrator may fail to start. It can get stuck 
at the previous event.

The occurrence of the bug depends on the residual sign of the g function which 
is not exactly 0, it depends on the convergence of the first event.

As this use case is fairly general, event occurring less than epsilon after the 
solver start in the first step should be ignored, where epsilon is the 
convergence threshold of the event. The sign of the g function should be 
evaluated after this initial ignore zone, not exactly at beginning (if there 
are no event at the very beginning g(t0) and g(t0+epsilon) have the same sign, 
so this does not hurt ; if there is an event at the very beginning, g(t0) and 
g(t0+epsilon) have opposite signs and we want to start with the second one. Of 
course, the sign of epsilon depend on the integration direction (forward or 
backward).


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to