High-level overview of CVODE stepping

In attempting to take a successful integration step, CVODE performs the following operations (function CVStep in cvode.c)

• 1. Predict solution at the next step using the current step size
• 2. Solve the nonlinear system to find the correction (this is where the LMM is actually used)
• 3. Test convergence of the NLS
• 3.1. If the NLS was successful, proceed to error test (goto 4)
• 3.2. Otherwise
• 3.2.1. Undo the prediction
• 3.2.2. If an unrecoverable error occurred (in the linear solver for Newton, or if too many repeated failures occurred), stop
• 3.2.3. If a recoverable failure occurred in the NLS, reduce the step size and reattempt the step (goto 1)
• 4. Perform error test
• 4.1. Test \$C ||correction||_{WRMS} \le 1\$ where \$correction\$ is the cumulative correction in step 2 and \$C\$ is a known constant for the given LMM. This is equivalent to \$||LTE||_{WRMS} \le 1\$
• 4.2. If the test is satisfied, proceed to completing the step (goto 5)
• 4.3. Otherwise
• 4.3.1. If too many repeated error test failures (\$maxnef\$) occurred, stop
• 4.3.2. If a given number of repeated failures (\$mxnef1 < maxnef\$) occurred, force an order reduction.
• 4.3.3. Reduce the step size, undo the prediction, and reattempt the step (goto 1)
• 5. Complete the step (apply correction to the Nordsieck history array, update counters, record some saved values, etc)
• 6. Prepare next step
• 6.1. Estimate what the step size for the next step should be at the current method order (\$q\$)
• 6.2. Consider an order change by testing if a method of order \$q-1\$ or \$q+1\$ would permit a significantly enough larger step size on the next step.
• 6.3. Set the method order and step size to be used on the next step
page revision: 10, last edited: 11 Apr 2007 21:28