# NAG FL Interfaced03pzf (dim1_​parab_​fd_​interp)

## 1Purpose

d03pzf interpolates in the spatial coordinate the solution and derivative of a system of partial differential equations (PDEs). The solution must first be computed using one of the finite difference schemes d03pcf/​d03pca, d03phf/​d03pha or d03ppf/​d03ppa, or one of the Keller box schemes d03pef, d03pkf or d03prf.

## 2Specification

Fortran Interface
 Subroutine d03pzf ( npde, m, u, npts, x, xp, up,
 Integer, Intent (In) :: npde, m, npts, intpts, itype Integer, Intent (Inout) :: ifail Real (Kind=nag_wp), Intent (In) :: u(npde,npts), x(npts), xp(intpts) Real (Kind=nag_wp), Intent (Out) :: up(npde,intpts,itype)
#include <nag.h>
 void d03pzf_ (const Integer *npde, const Integer *m, const double u[], const Integer *npts, const double x[], const double xp[], const Integer *intpts, const Integer *itype, double up[], Integer *ifail)
The routine may be called by the names d03pzf or nagf_pde_dim1_parab_fd_interp.

## 3Description

d03pzf is an interpolation routine for evaluating the solution of a system of partial differential equations (PDEs), at a set of user-specified points. The solution of the system of equations (possibly with coupled ordinary differential equations) must be computed using a finite difference scheme or a Keller box scheme on a set of mesh points. d03pzf can then be employed to compute the solution at a set of points anywhere in the range of the mesh. It can also evaluate the first spatial derivative of the solution. It uses linear interpolation for approximating the solution.

None.

## 5Arguments

Note: the arguments x, m, u, npts and npde must be supplied unchanged from the PDE routine.
1: $\mathbf{npde}$Integer Input
On entry: the number of PDEs.
Constraint: ${\mathbf{npde}}\ge 1$.
2: $\mathbf{m}$Integer Input
On entry: the coordinate system used. If the call to d03pzf follows one of the finite difference routines then m must be the same argument m as used in that call. For the Keller box scheme only Cartesian coordinate systems are valid and so m must be set to zero. No check will be made by d03pzf in this case.
${\mathbf{m}}=0$
Indicates Cartesian coordinates.
${\mathbf{m}}=1$
Indicates cylindrical polar coordinates.
${\mathbf{m}}=2$
Indicates spherical polar coordinates.
Constraints:
• $0\le {\mathbf{m}}\le 2$ following a finite difference routine;
• ${\mathbf{m}}=0$ following a Keller box scheme routine.
3: $\mathbf{u}\left({\mathbf{npde}},{\mathbf{npts}}\right)$Real (Kind=nag_wp) array Input
On entry: the PDE part of the original solution returned in the argument u by the PDE routine.
Constraint: ${\mathbf{npde}}\ge 1$.
4: $\mathbf{npts}$Integer Input
On entry: the number of mesh points.
Constraint: ${\mathbf{npts}}\ge 3$.
5: $\mathbf{x}\left({\mathbf{npts}}\right)$Real (Kind=nag_wp) array Input
On entry: ${\mathbf{x}}\left(\mathit{i}\right)$, for $\mathit{i}=1,2,\dots ,{\mathbf{npts}}$, must contain the mesh points as used by the PDE routine.
6: $\mathbf{xp}\left({\mathbf{intpts}}\right)$Real (Kind=nag_wp) array Input
On entry: ${\mathbf{xp}}\left(\mathit{i}\right)$, for $\mathit{i}=1,2,\dots ,{\mathbf{intpts}}$, must contain the spatial interpolation points.
Constraint: ${\mathbf{x}}\left(1\right)\le {\mathbf{xp}}\left(1\right)<{\mathbf{xp}}\left(2\right)<\cdots <{\mathbf{xp}}\left({\mathbf{intpts}}\right)\le {\mathbf{x}}\left({\mathbf{npts}}\right)$.
7: $\mathbf{intpts}$Integer Input
On entry: the number of interpolation points.
Constraint: ${\mathbf{intpts}}\ge 1$.
8: $\mathbf{itype}$Integer Input
On entry: specifies the interpolation to be performed.
${\mathbf{itype}}=1$
The solutions at the interpolation points are computed.
${\mathbf{itype}}=2$
Both the solutions and their first derivatives at the interpolation points are computed.
Constraint: ${\mathbf{itype}}=1$ or $2$.
9: $\mathbf{up}\left({\mathbf{npde}},{\mathbf{intpts}},{\mathbf{itype}}\right)$Real (Kind=nag_wp) array Output
On exit: if ${\mathbf{itype}}=1$, ${\mathbf{up}}\left(\mathit{i},\mathit{j},1\right)$, contains the value of the solution ${U}_{\mathit{i}}\left({x}_{\mathit{j}},{t}_{\mathrm{out}}\right)$, at the interpolation points ${x}_{\mathit{j}}={\mathbf{xp}}\left(\mathit{j}\right)$, for $\mathit{j}=1,2,\dots ,{\mathbf{intpts}}$ and $\mathit{i}=1,2,\dots ,{\mathbf{npde}}$.
If ${\mathbf{itype}}=2$, ${\mathbf{up}}\left(\mathit{i},\mathit{j},1\right)$ contains ${U}_{\mathit{i}}\left({x}_{\mathit{j}},{t}_{\mathrm{out}}\right)$ and ${\mathbf{up}}\left(\mathit{i},\mathit{j},2\right)$ contains $\frac{\partial {U}_{\mathit{i}}}{\partial x}$ at these points.
10: $\mathbf{ifail}$Integer Input/Output
On entry: ifail must be set to $0$, . If you are unfamiliar with this argument you should refer to Section 4 in the Introduction to the NAG Library FL Interface for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value is recommended. If the output of error messages is undesirable, then the value $1$ is recommended. Otherwise, if you are not familiar with this argument, the recommended value is $0$. When the value is used it is essential to test the value of ifail on exit.
On exit: ${\mathbf{ifail}}={\mathbf{0}}$ unless the routine detects an error or a warning has been flagged (see Section 6).

## 6Error Indicators and Warnings

If on entry ${\mathbf{ifail}}=0$ or $-1$, explanatory error messages are output on the current error message unit (as defined by x04aaf).
Errors or warnings detected by the routine:
${\mathbf{ifail}}=1$
On entry, $\mathit{i}=〈\mathit{\text{value}}〉$, ${\mathbf{x}}\left(\mathit{i}\right)=〈\mathit{\text{value}}〉$, $\mathit{j}=〈\mathit{\text{value}}〉$ and ${\mathbf{x}}\left(\mathit{j}\right)=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{x}}\left(1\right)<{\mathbf{x}}\left(2\right)<\cdots <{\mathbf{x}}\left({\mathbf{npts}}\right)$.
On entry, ${\mathbf{intpts}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{intpts}}\ge 1$.
On entry, ${\mathbf{itype}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{itype}}=1$ or $2$.
On entry, ${\mathbf{m}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{m}}=0$, $1$ or $2$.
On entry, ${\mathbf{npde}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{npde}}>0$.
On entry, ${\mathbf{npts}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{npts}}>2$.
${\mathbf{ifail}}=2$
On entry, $\mathit{i}=〈\mathit{\text{value}}〉$, ${\mathbf{xp}}\left(\mathit{i}\right)=〈\mathit{\text{value}}〉$, $\mathit{j}=〈\mathit{\text{value}}〉$ and ${\mathbf{xp}}\left(\mathit{j}\right)=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{x}}\left(1\right)\le {\mathbf{xp}}\left(1\right)<{\mathbf{xp}}\left(2\right)<\cdots <{\mathbf{xp}}\left({\mathbf{intpts}}\right)\le {\mathbf{x}}\left({\mathbf{npts}}\right)$.
${\mathbf{ifail}}=3$
On entry, interpolating point $〈\mathit{\text{value}}〉$ with the value $〈\mathit{\text{value}}〉$ is outside the x range.
${\mathbf{ifail}}=-99$
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
${\mathbf{ifail}}=-399$
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library FL Interface for further information.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.

## 7Accuracy

See the PDE routine documents.

## 8Parallelism and Performance

d03pzf is not threaded in any implementation.