# NAG Library Routine Document

## 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 nagmk26.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[])

## 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}$ – IntegerInput
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}$ – IntegerOutput
On exit: the length of the integer workspace jacpvt reserved for the sparse matrix routines.
3:     $\mathbf{liwusd}$ – IntegerOutput
On exit: the length of the integer workspace jacpvt actually used by the sparse matrix routines.
4:     $\mathbf{lrwreq}$ – IntegerOutput
On exit: the length of the real workspace wkjac reserved for the sparse matrix routines.
5:     $\mathbf{lrwusd}$ – IntegerOutput
On exit: the length of the real workspace wkjac actually used by the sparse matrix routines.
6:     $\mathbf{nlu}$ – IntegerOutput
On exit: the number of $LU$ decompositions done during the integration.
7:     $\mathbf{nnz}$ – IntegerOutput
On exit: the number of nonzeros in the Jacobian.
8:     $\mathbf{ngp}$ – IntegerOutput
On exit: the number of fcn or resid calls needed to form the Jacobian.
9:     $\mathbf{isplit}$ – IntegerOutput
On exit: an appropriate value for the argument isplit when calling d02nuf for subsequent runs of similar problems.
10:   $\mathbf{igrow}$ – IntegerOutput
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}$ – LogicalInput
On entry: the value used for the argument lblock when calling d02nuf.
12:   $\mathbf{nblock}$ – IntegerOutput
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 arrayCommunication Array
On entry: contains information supplied by the integrator.

None.

Not applicable.

## 8Parallelism and Performance

d02nxf is not threaded in any implementation.