NAG Library Routine Document

d03pyf (dim1_parab_coll_interp)

1
Purpose

d03pyf may be used in conjunction with either d03pdf/d03pda or d03pjf/d03pja. It computes the solution and its first derivative at user-specified points in the spatial coordinate.

2
Specification

Fortran Interface
Subroutine d03pyf ( npde, u, nbkpts, xbkpts, npoly, npts, xp, intpts, itype, up, rsave, lrsave, ifail)
Integer, Intent (In):: npde, nbkpts, npoly, npts, intpts, itype, lrsave
Integer, Intent (Inout):: ifail
Real (Kind=nag_wp), Intent (In):: u(npde,npts), xbkpts(nbkpts), xp(intpts)
Real (Kind=nag_wp), Intent (Inout):: rsave(lrsave)
Real (Kind=nag_wp), Intent (Out):: up(npde,intpts,itype)
C Header Interface
#include <nagmk26.h>
void  d03pyf_ (const Integer *npde, const double u[], const Integer *nbkpts, const double xbkpts[], const Integer *npoly, const Integer *npts, const double xp[], const Integer *intpts, const Integer *itype, double up[], double rsave[], const Integer *lrsave, Integer *ifail)

3
Description

d03pyf is an interpolation routine 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 d03pdf/d03pda or d03pjf/d03pja on a set of mesh points; d03pyf can then be employed to compute the solution at a set of points other than those originally used in d03pdf/d03pda or d03pjf/d03pja. It can also evaluate the first derivative of the solution. Polynomial interpolation is used between each of the break-points xbkptsi, for i=1,2,,nbkpts. When the derivative is needed (itype=2), the array xpintpts 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.

4
References

None.

5
Arguments

Note: the arguments u, npts, npde, xbkpts, nbkpts, rsave and lrsave must be supplied unchanged from either d03pdf/d03pda or d03pjf/d03pja.
1:     npde – IntegerInput
On entry: the number of PDEs.
Constraint: npde1.
2:     unpdenpts – Real (Kind=nag_wp) arrayInput
On entry: the PDE part of the original solution returned in the argument u by the routine d03pdf/d03pda or d03pjf/d03pja.
3:     nbkpts – IntegerInput
On entry: the number of break-points.
Constraint: nbkpts2.
4:     xbkptsnbkpts – Real (Kind=nag_wp) arrayInput
On entry: xbkptsi, for i=1,2,,nbkpts, must contain the break-points as used by d03pdf/d03pda or d03pjf/d03pja.
Constraint: xbkpts1<xbkpts2<<xbkptsnbkpts.
5:     npoly – IntegerInput
On entry: the degree of the Chebyshev polynomial used for approximation as used by d03pdf/d03pda or d03pjf/d03pja.
Constraint: 1npoly49.
6:     npts – IntegerInput
On entry: the number of mesh points as used by d03pdf/d03pda or d03pjf/d03pja.
Constraint: npts=nbkpts-1×npoly+1.
7:     xpintpts – Real (Kind=nag_wp) arrayInput
On entry: xpi, for i=1,2,,intpts, must contain the spatial interpolation points.
Constraints:
  • xbkpts1xp1<xp2<<xpintptsxbkptsnbkpts;
  • if itype=2, xpixbkptsj, for i=1,2,,intpts and j=2,3,,nbkpts-1.
8:     intpts – IntegerInput
On entry: the number of interpolation points.
Constraint: intpts1.
9:     itype – IntegerInput
On entry: specifies the interpolation to be performed.
itype=1
The solution at the interpolation points are computed.
itype=2
Both the solution and the first derivative at the interpolation points are computed.
Constraint: itype=1 or 2.
10:   upnpdeintptsitype – Real (Kind=nag_wp) arrayOutput
On exit: if itype=1, upij1, contains the value of the solution Uixj,tout, at the interpolation points xj=xpj, for j=1,2,,intpts and i=1,2,,npde.
If itype=2, upij1 contains Uixj,tout and upij2 contains Ui x  at these points.
11:   rsavelrsave – Real (Kind=nag_wp) arrayCommunication Array
The array rsave contains information required by d03pyf as returned by d03pdf/d03pda or d03pjf/d03pja. The contents of rsave must not be changed from the call to d03pdf/d03pda or d03pjf/d03pja. Some elements of this array are overwritten on exit.
12:   lrsave – IntegerInput
On entry: the size of the workspace rsave, as in d03pdf/d03pda or d03pjf/d03pja.
13:   ifail – IntegerInput/Output
On entry: ifail must be set to 0, -1 or 1. If you are unfamiliar with this argument you should refer to Section 3.4 in How to Use the NAG Library and its Documentation for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value -1 or 1 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 -1 or 1 is used it is essential to test the value of ifail on exit.
On exit: ifail=0 unless the routine detects an error or a warning has been flagged (see Section 6).

6
Error Indicators and Warnings

If on entry 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:
ifail=1
On entry, i=value, xbkptsi=value, j=value and xbkptsj=value.
Constraint: xbkpts1<xbkpts2<<xbkptsnbkpts.
On entry, intpts=value.
Constraint: intpts1.
On entry, itype=value.
Constraint: itype=1 or 2.
On entry, nbkpts=value.
Constraint: nbkpts2.
On entry, npde=value.
Constraint: npde>0.
On entry, npoly=value.
Constraint: npoly>0.
On entry, npts=value, nbkpts=value and npoly=value.
Constraint: npts=nbkpts-1×npoly+1.
ifail=2
On entry, i=value, xpi=value, j=value and xpj=value.
Constraint: xbkpts1xp1<xp2<<xpintptsxbkptsnbkpts.
On entry, itype=2 and at least one interpolation point coincides with a break-point, i.e., interpolation point no value with value value is close to break-point value with value value.
ifail=3
Extrapolation is not allowed.
ifail=-99
An unexpected error has been triggered by this routine. Please contact NAG.
See Section 3.9 in How to Use the NAG Library and its Documentation for further information.
ifail=-399
Your licence key may have expired or may not have been installed correctly.
See Section 3.8 in How to Use the NAG Library and its Documentation for further information.
ifail=-999
Dynamic memory allocation failed.
See Section 3.7 in How to Use the NAG Library and its Documentation for further information.

7
Accuracy

See the documents for d03pdf/d03pda or d03pjf/d03pja.

8
Parallelism and Performance

d03pyf is not threaded in any implementation.

9
Further Comments

None.

10
Example

See Section 10 in d03pdf/d03pda.