D02NJF is a forward communication routine for integrating stiff systems of implicit ordinary differential equations coupled with algebraic equations when the Jacobian is a sparse matrix.
D02NJF is a general purpose routine for integrating the initial value problem for a stiff system of implicit ordinary differential equations coupled with algebraic equations, written in the form
It is designed specifically for the case where the resulting Jacobian is a sparse matrix (see the description of JAC
Both interval and step oriented modes of operation are available and also modes designed to permit intermediate output within an interval oriented mode.
An outline of a typical calling program for D02NJF is given below. It calls
the sparse matrix linear algebra setup routine D02NUF
the Backward Differentiation Formula (BDF) integrator setup
, its diagnostic counterpart D02NYF
the sparse matrix linear algebra diagnostic routine D02NXF
EXTERNAL RESID, JAC, MONITR
IFAIL = 0
CALL D02NUF(NEQ, NEQMAX, JCEVAL, NWKJAC, IA, NIA, JA, NJA, &
JACPVT, NJCPVT, SENS, U, ETA, LBLOCK, ISPLIT, &
IFAIL = -1
CALL D02NJF(NEQ, NEQMAX, T, TOUT, Y, YDOT, RWORK, RTOL, &
ATOL, ITOL, INFORM, RESID, YSAVE, NY2DIM, JAC, &
WKJAC, NWKJAC, JACPVT, NJCPVT, MONITR, LDERIV, &
ITASK, ITRACE, IFAIL)
IF(IFAIL.EQ.1 .OR. IFAIL.GE.14) STOP
IFAIL = 0
The linear algebra setup routine D02NUF
the integrator setup
must be called prior to the call of D02NJF.
Either or both of the integrator diagnostic routine D02NYF
, or the
sparse matrix linear algebra diagnostic routine D02NXF
, may be called after the call to D02NJF.
There is also a routine, D02NZF
, designed to permit you to change step size on a continuation call to D02NJF without restarting the integration process.
If on entry
, explanatory error messages are output on the current error message unit (as defined by X04AAF
The accuracy of the numerical solution may be controlled by a careful choice of the parameters RTOL
, and to a much lesser extent by the choice of norm. You are advised to use scalar error control unless the components of the solution are expected to be poorly scaled. For the type of decaying solution typical of many stiff problems, relative error control with a small absolute error threshold will be most appropriate (that is, you are advised to choose
small but positive).
Since numerical stability and memory are often conflicting requirements when solving ordinary differential systems where the Jacobian matrix is sparse we provide a diagnostic routine, D02NXF
, whose aim is to inform you how much memory is required to solve the problem and to give you some indicators of numerical stability.
In general, you are advised to choose the BDF option (setup routine D02NVF
) but if efficiency is of great importance and especially if it is suspected that
has complex eigenvalues near the imaginary axis for some part of the integration, you should try the BLEND option (setup routine D02NWF
This example solves the well-known stiff Robertson problem written as a mixed differential/algebraic system in implicit form
exploiting the fact that, from the initial conditions
, we know that
for all time. We integrate over the range
with vector relative error control and scalar absolute error control (
) and using the BDF integrator (setup routine
and a modified Newton method.
The Jacobian is evaluated, in turn, using the 'A' (Analytical) and 'F' (Full information) options.
We provide a monitor routine to terminate the integration when the value of the component a falls below