NAG FL Interfaced02nxf (ivp_​stiff_​sparjac_​diag)

▸▿ Contents

Settings help

FL Name Style:

FL Specification Language:

1Purpose

d02nxf is an optional output routine which you may call, on exit from an integrator in Sub-chapter D02M–N, if sparse matrix linear algebra has been selected.

2Specification

Fortran Interface
 Subroutine d02nxf ( nlu, nnz, ngp,
 Integer, Intent (In) :: icall, inform(23) Integer, Intent (Out) :: liwreq, liwusd, lrwreq, lrwusd, nlu, nnz, ngp, isplit, igrow, nblock Logical, Intent (In) :: lblock
#include <nag.h>
 void d02nxf_ (const Integer *icall, Integer *liwreq, Integer *liwusd, Integer *lrwreq, Integer *lrwusd, Integer *nlu, Integer *nnz, Integer *ngp, Integer *isplit, Integer *igrow, const logical *lblock, Integer *nblock, const Integer inform[])
The routine may be called by the names d02nxf or nagf_ode_ivp_stiff_sparjac_diag.

3Description

d02nxf permits you to examine the various outputs from the sparse linear algebra routines called by the integrator.

4References

See the D02M–N Sub-chapter Introduction.

5Arguments

1: $\mathbf{icall}$Integer Input
On entry: indicates whether or not all output arguments have been set during the call to the integrator. If so, that is, if the integrator returned with ${\mathbf{ifail}}={\mathbf{0}}$ or ${\mathbf{12}}$, then icall must be set to $0$. Otherwise icall must be set to $1$, indicating that integration did not take place due to lack of space in arrays wkjac and jacpvt, and only liwreq, liwusd, lrwreq, lrwusd have been set.
2: $\mathbf{liwreq}$Integer Output
On exit: the length of the integer workspace jacpvt reserved for the sparse matrix routines.
3: $\mathbf{liwusd}$Integer Output
On exit: the length of the integer workspace jacpvt actually used by the sparse matrix routines.
4: $\mathbf{lrwreq}$Integer Output
On exit: the length of the real workspace wkjac reserved for the sparse matrix routines.
5: $\mathbf{lrwusd}$Integer Output
On exit: the length of the real workspace wkjac actually used by the sparse matrix routines.
6: $\mathbf{nlu}$Integer Output
On exit: the number of $LU$ decompositions done during the integration.
7: $\mathbf{nnz}$Integer Output
On exit: the number of nonzeros in the Jacobian.
8: $\mathbf{ngp}$Integer Output
On exit: the number of fcn or resid calls needed to form the Jacobian.
9: $\mathbf{isplit}$Integer Output
On exit: an appropriate value for the argument isplit when calling d02nuf for subsequent runs of similar problems.
10: $\mathbf{igrow}$Integer Output
On exit: an estimate of the growth of the elements encountered during the last $LU$ decomposition performed. If the actual estimate exceeds the largest possible integer value for the machine being used (see x02bbf) igrow is set to the value returned by x02bbf.
11: $\mathbf{lblock}$Logical Input
On entry: the value used for the argument lblock when calling d02nuf.
12: $\mathbf{nblock}$Integer Output
On exit: if ${\mathbf{lblock}}=\mathrm{.TRUE.}$, nblock contains the number of diagonal blocks in the Jacobian matrix permuted to block lower triangular form. If ${\mathbf{nblock}}=1$ then on subsequent runs of a similar problem lblock should be set to .FALSE. in the call to d02nuf.
If ${\mathbf{lblock}}=\mathrm{.FALSE.}$, ${\mathbf{nblock}}=1$.
13: $\mathbf{inform}\left(23\right)$Integer array Communication Array
On entry: contains information supplied by the integrator.

None.

Not applicable.

8Parallelism and Performance

d02nxf is not threaded in any implementation.

The output from d02nxf, in particular the values of liwreq, liwusd, lrwreq, lrwusd, isplit and igrow, should be used to determine appropriate values for the arguments of the setup routine d02nuf on further calls to the integrator for the same or similar problems.

10Example

See Section 10 in d02ndf, d02njf and d02nnf.