nag_pde_interp_1d_coll (d03pyc) (PDF version)
d03 Chapter Contents
d03 Chapter Introduction
NAG Library Manual

NAG Library Function Document

nag_pde_interp_1d_coll (d03pyc)

+ Contents

    1  Purpose
    7  Accuracy
    10  Example

1  Purpose

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

2  Specification

#include <nag.h>
#include <nagd03.h>
void  nag_pde_interp_1d_coll (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)

3  Description

nag_pde_interp_1d_coll (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 nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc) on a set of mesh points; nag_pde_interp_1d_coll (d03pyc) can then be employed to compute the solution at a set of points other than those originally used in nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc). It can also evaluate the first derivative of the solution. Polynomial interpolation is used between each of the break-points xbkpts[i-1], for i=1,2,,nbkpts. When the derivative is needed (itype=2), the array xp[intpts-1] 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 nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc).
1:     npdeIntegerInput
On entry: the number of PDEs.
Constraint: npde1.
2:     u[npde×npts]const doubleInput
On entry: the PDE part of the original solution returned in the argument u by the function nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc).
3:     nbkptsIntegerInput
On entry: the number of break-points.
Constraint: nbkpts2.
4:     xbkpts[nbkpts]const doubleInput
On entry: xbkpts[i-1], for i=1,2,,nbkpts, must contain the break-points as used by nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc).
Constraint: xbkpts[0]<xbkpts[1]<<xbkpts[nbkpts-1].
5:     npolyIntegerInput
On entry: the degree of the Chebyshev polynomial used for approximation as used by nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc).
Constraint: 1npoly49.
6:     nptsIntegerInput
On entry: the number of mesh points as used by nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc).
Constraint: npts=nbkpts-1×npoly+1.
7:     xp[intpts]const doubleInput
On entry: xp[i-1], for i=1,2,,intpts, must contain the spatial interpolation points.
Constraints:
  • xbkpts[0]xp[0]<xp[1]<<xp[intpts-1]xbkpts[nbkpts-1];
  • if itype=2, xp[i-1]xbkpts[j-1], for i=1,2,,intpts and j=2,3,,nbkpts-1.
8:     intptsIntegerInput
On entry: the number of interpolation points.
Constraint: intpts1.
9:     itypeIntegerInput
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:   up[dim]doubleOutput
Note: the dimension, dim, of the array up must be at least npde×intpts×itype.
The element UPi,j,k is stored in the array element up[k-1×npde×intpts+j-1×npde+i-1].
On exit: if itype=1, UPi,j,1, contains the value of the solution Uixj,tout, at the interpolation points xj=xp[j-1], for j=1,2,,intpts and i=1,2,,npde.
If itype=2, UPi,j,1 contains Uixj,tout and UPi,j,2 contains Ui x  at these points.
11:   rsave[lrsave]doubleCommunication Array
The array rsave contains information required by nag_pde_interp_1d_coll (d03pyc) as returned by nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc). The contents of rsave must not be changed from the call to nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc). Some elements of this array are overwritten on exit.
12:   lrsaveIntegerInput
On entry: the size of the workspace rsave, as in nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc).
13:   failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_EXTRAPOLATION
Extrapolation is not allowed.
NE_INCOMPAT_PARAM
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.
NE_INT
On entry, intpts0: intpts=value.
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.
NE_INT_3
On entry, npts=value, nbkpts=value and npoly=value.
Constraint: npts=nbkpts-1×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.
NE_NOT_STRICTLY_INCREASING
On entry, break-points xbkpts badly ordered: I=value, xbkpts[I-1]=value, J=value and xbkpts[J-1]=value.
On entry, interpolation points xp badly ordered: I=value, xp[I-1]=value, J=value and xp[J-1]=value.

7  Accuracy

See the documents for nag_pde_parab_1d_coll (d03pdc) or nag_pde_parab_1d_coll_ode (d03pjc).

8  Parallelism and Performance

Not applicable.

9  Further Comments

None.

10  Example

See Section 10 in nag_pde_parab_1d_coll (d03pdc).

nag_pde_interp_1d_coll (d03pyc) (PDF version)
d03 Chapter Contents
d03 Chapter Introduction
NAG Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2014