Highlevel 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 $q1$ 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