NAG CL Interfaced03pyc (dim1_​parab_​coll_​interp)

1Purpose

d03pyc may be used in conjunction with either d03pdc or d03pjc. It computes the solution and its first derivative at user-specified points in the spatial coordinate.

2Specification

 #include
 void d03pyc (Integer npde, const double u[], Integer nbkpts, const double xbkpts[], Integer npoly, Integer npts, const double xp[], Integer intpts, Integer itype, double up[], double rsave[], Integer lrsave, NagError *fail)
The function may be called by the names: d03pyc, nag_pde_dim1_parab_coll_interp or nag_pde_interp_1d_coll.

3Description

d03pyc is an interpolation function for evaluating the solution of a system of partial differential equations (PDEs), or the PDE components of a system of PDEs with coupled ordinary differential equations (ODEs), at a set of user-specified points. The solution of a system of equations can be computed using d03pdc or d03pjc on a set of mesh points; d03pyc can then be employed to compute the solution at a set of points other than those originally used in d03pdc or d03pjc. It can also evaluate the first derivative of the solution. Polynomial interpolation is used between each of the break-points ${\mathbf{xbkpts}}\left[\mathit{i}-1\right]$, for $\mathit{i}=1,2,\dots ,{\mathbf{nbkpts}}$. When the derivative is needed (${\mathbf{itype}}=2$), the array ${\mathbf{xp}}\left[{\mathbf{intpts}}-1\right]$ must not contain any of the break-points, as the method, and consequently the interpolation scheme, assumes that only the solution is continuous at these points.

None.

5Arguments

Note: the arguments u, npts, npde, xbkpts, nbkpts, rsave and lrsave must be supplied unchanged from either d03pdc or d03pjc.
1: $\mathbf{npde}$Integer Input
On entry: the number of PDEs.
Constraint: ${\mathbf{npde}}\ge 1$.
2: $\mathbf{u}\left[{\mathbf{npde}}×{\mathbf{npts}}\right]$const double Input
Note: the $\left(i,j\right)$th element of the matrix $U$ is stored in ${\mathbf{u}}\left[\left(j-1\right)×{\mathbf{npde}}+i-1\right]$.
On entry: the PDE part of the original solution returned in the argument u by the function d03pdc or d03pjc.
3: $\mathbf{nbkpts}$Integer Input
On entry: the number of break-points.
Constraint: ${\mathbf{nbkpts}}\ge 2$.
4: $\mathbf{xbkpts}\left[{\mathbf{nbkpts}}\right]$const double Input
On entry: ${\mathbf{xbkpts}}\left[\mathit{i}-1\right]$, for $\mathit{i}=1,2,\dots ,{\mathbf{nbkpts}}$, must contain the break-points as used by d03pdc or d03pjc.
Constraint: ${\mathbf{xbkpts}}\left[0\right]<{\mathbf{xbkpts}}\left[1\right]<\cdots <{\mathbf{xbkpts}}\left[{\mathbf{nbkpts}}-1\right]$.
5: $\mathbf{npoly}$Integer Input
On entry: the degree of the Chebyshev polynomial used for approximation as used by d03pdc or d03pjc.
Constraint: $1\le {\mathbf{npoly}}\le 49$.
6: $\mathbf{npts}$Integer Input
On entry: the number of mesh points as used by d03pdc or d03pjc.
Constraint: ${\mathbf{npts}}=\left({\mathbf{nbkpts}}-1\right)×{\mathbf{npoly}}+1$.
7: $\mathbf{xp}\left[{\mathbf{intpts}}\right]$const double Input
On entry: ${\mathbf{xp}}\left[\mathit{i}-1\right]$, for $\mathit{i}=1,2,\dots ,{\mathbf{intpts}}$, must contain the spatial interpolation points.
Constraints:
• ${\mathbf{xbkpts}}\left[0\right]\le {\mathbf{xp}}\left[0\right]<{\mathbf{xp}}\left[1\right]<\cdots <{\mathbf{xp}}\left[{\mathbf{intpts}}-1\right]\le {\mathbf{xbkpts}}\left[{\mathbf{nbkpts}}-1\right]$;
• if ${\mathbf{itype}}=2$, ${\mathbf{xp}}\left[\mathit{i}-1\right]\ne {\mathbf{xbkpts}}\left[\mathit{j}-1\right]$, for $\mathit{i}=1,2,\dots ,{\mathbf{intpts}}$ and $\mathit{j}=2,3,\dots ,{\mathbf{nbkpts}}-1$.
8: $\mathbf{intpts}$Integer Input
On entry: the number of interpolation points.
Constraint: ${\mathbf{intpts}}\ge 1$.
9: $\mathbf{itype}$Integer Input
On entry: specifies the interpolation to be performed.
${\mathbf{itype}}=1$
The solution at the interpolation points are computed.
${\mathbf{itype}}=2$
Both the solution and the first derivative at the interpolation points are computed.
Constraint: ${\mathbf{itype}}=1$ or $2$.
10: $\mathbf{up}\left[\mathit{dim}\right]$double Output
Note: the dimension, dim, of the array up must be at least ${\mathbf{npde}}×{\mathbf{intpts}}×{\mathbf{itype}}$.
the element ${\mathbf{UP}}\left(i,j,k\right)$ is stored in the array element ${\mathbf{up}}\left[\left(k-1\right)×{\mathbf{npde}}×{\mathbf{intpts}}+\left(j-1\right)×{\mathbf{npde}}+i-1\right]$.
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}-1\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.
11: $\mathbf{rsave}\left[{\mathbf{lrsave}}\right]$double Communication Array
The array rsave contains information required by d03pyc as returned by d03pdc or d03pjc. The contents of rsave must not be changed from the call to d03pdc or d03pjc. Some elements of this array are overwritten on exit.
12: $\mathbf{lrsave}$Integer Input
On entry: the size of the workspace rsave, as in d03pdc or d03pjc.
13: $\mathbf{fail}$NagError * Input/Output
The NAG error argument (see Section 7 in the Introduction to the NAG Library CL Interface).

6Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
See Section 3.1.2 in the Introduction to the NAG Library CL Interface for further information.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_EXTRAPOLATION
Extrapolation is not allowed.
NE_INCOMPAT_PARAM
On entry, ${\mathbf{itype}}=2$ and at least one interpolation point coincides with a break-point, i.e., interpolation point no $〈\mathit{\text{value}}〉$ with value $〈\mathit{\text{value}}〉$ is close to break-point $〈\mathit{\text{value}}〉$ with value $〈\mathit{\text{value}}〉$.
NE_INT
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{nbkpts}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{nbkpts}}\ge 2$.
On entry, ${\mathbf{npde}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{npde}}>0$.
On entry, ${\mathbf{npoly}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{npoly}}>0$.
NE_INT_3
On entry, ${\mathbf{npts}}=〈\mathit{\text{value}}〉$, ${\mathbf{nbkpts}}=〈\mathit{\text{value}}〉$ and ${\mathbf{npoly}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{npts}}=\left({\mathbf{nbkpts}}-1\right)×{\mathbf{npoly}}+1$.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
See Section 7.5 in the Introduction to the NAG Library CL Interface for further information.
NE_NO_LICENCE
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library CL Interface for further information.
NE_NOT_STRICTLY_INCREASING
On entry, $\mathit{i}=〈\mathit{\text{value}}〉$, ${\mathbf{xbkpts}}\left[\mathit{i}-1\right]=〈\mathit{\text{value}}〉$, $\mathit{j}=〈\mathit{\text{value}}〉$ and ${\mathbf{xbkpts}}\left[\mathit{j}-1\right]=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{xbkpts}}\left[0\right]<{\mathbf{xbkpts}}\left[1\right]<\cdots <{\mathbf{xbkpts}}\left[{\mathbf{nbkpts}}-1\right]$.
On entry, $\mathit{i}=〈\mathit{\text{value}}〉$, ${\mathbf{xp}}\left[\mathit{i}-1\right]=〈\mathit{\text{value}}〉$, $\mathit{j}=〈\mathit{\text{value}}〉$ and ${\mathbf{xp}}\left[\mathit{j}-1\right]=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{xbkpts}}\left[0\right]\le {\mathbf{xp}}\left[0\right]<{\mathbf{xp}}\left[1\right]<\cdots <{\mathbf{xp}}\left[{\mathbf{intpts}}-1\right]\le {\mathbf{xbkpts}}\left[{\mathbf{nbkpts}}-1\right]$.

7Accuracy

See the documents for d03pdc or d03pjc.

8Parallelism and Performance

d03pyc is not threaded in any implementation.