NAG CL Interface
d02tyc (bvp_coll_nlin_interp)
1
Purpose
d02tyc interpolates on the solution of a general twopoint boundary value problem computed by
d02tlc.
2
Specification
void 
d02tyc (double x,
double y[],
Integer neq,
Integer mmax,
double rcomm[],
const Integer icomm[],
NagError *fail) 

The function may be called by the names: d02tyc or nag_ode_bvp_coll_nlin_interp.
3
Description
d02tyc and its associated functions (
d02tlc,
d02tvc,
d02txc and
d02tzc) solve the twopoint boundary value problem for a nonlinear mixed order system of ordinary differential equations
over an interval
$\left[a,b\right]$ subject to
$p$ (
$\text{}>0$) nonlinear boundary conditions at
$a$ and
$q$ (
$\text{}>0$) nonlinear boundary conditions at
$b$, where
$p+q={\displaystyle \sum _{i=1}^{n}}{m}_{i}$. Note that
${y}_{i}^{\left(m\right)}\left(x\right)$ is the
$m$th derivative of the
$i$th solution component. Hence
${y}_{i}^{\left(0\right)}\left(x\right)={y}_{i}\left(x\right)$. The left boundary conditions at
$a$ are defined as
and the right boundary conditions at
$b$ as
where
$y=\left({y}_{1},{y}_{2},\dots ,{y}_{n}\right)$ and
First,
d02tvc must be called to specify the initial mesh, error requirements and other details. Then,
d02tlc can be used to solve the boundary value problem. After successful computation,
d02tzc can be used to ascertain details about the final mesh and other details of the solution procedure, and
d02tyc can be used to compute the approximate solution anywhere on the interval
$\left[a,b\right]$ using interpolation.
The functions are based on modified versions of the codes COLSYS and COLNEW (see
Ascher et al. (1979) and
Ascher and Bader (1987)). A comprehensive treatment of the numerical solution of boundary value problems can be found in
Ascher et al. (1988) and
Keller (1992).
4
References
Ascher U M and Bader G (1987) A new basis implementation for a mixed order boundary value ODE solver SIAM J. Sci. Stat. Comput. 8 483–500
Ascher U M, Christiansen J and Russell R D (1979) A collocation solver for mixed order systems of boundary value problems Math. Comput. 33 659–679
Ascher U M, Mattheij R M M and Russell R D (1988) Numerical Solution of Boundary Value Problems for Ordinary Differential Equations Prentice–Hall
Grossman C (1992) Enclosures of the solution of the Thomas–Fermi equation by monotone discretization J. Comput. Phys. 98 26–32
Keller H B (1992) Numerical Methods for Twopoint Boundaryvalue Problems Dover, New York
5
Arguments

1:
$\mathbf{x}$ – double
Input

On entry: $x$, the independent variable.
Constraint:
$a\le {\mathbf{x}}\le b$, i.e., not outside the range of the original mesh specified in the initialization call to
d02tvc.

2:
$\mathbf{y}\left[{\mathbf{neq}}\times {\mathbf{mmax}}\right]$ – double
Output

Note: where ${\mathbf{Y}}\left(i,j\right)$ appears in this document, it refers to the array element
${\mathbf{y}}\left[j\times {\mathbf{neq}}+i1\right]$.
On exit:
${\mathbf{Y}}\left(\mathit{i},\mathit{j}\right)$ contains an approximation to
${y}_{\mathit{i}}^{\left(\mathit{j}\right)}\left(x\right)$, for
$\mathit{i}=1,2,\dots ,{\mathbf{neq}}$ and
$\mathit{j}=0,1,\dots ,{m}_{\mathit{i}}1$. The remaining elements of
y (where
${m}_{i}<{\mathbf{mmax}}$) are initialized to
$0.0$.

3:
$\mathbf{neq}$ – Integer
Input

On entry: the number of differential equations.
Constraint:
${\mathbf{neq}}$ must be the same value as supplied to
d02tvc.

4:
$\mathbf{mmax}$ – Integer
Input

On entry: the maximal order of the differential equations,
$\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({m}_{\mathit{i}}\right)$, for $\mathit{i}=1,2,\dots ,{\mathbf{neq}}$.
Constraint:
${\mathbf{mmax}}$ must contain the maximum value of the components of the argument
m as supplied to
d02tvc.

5:
$\mathbf{rcomm}\left[\mathit{dim}\right]$ – double
Communication Array

Note: the dimension,
$\mathit{dim}$, of this array is dictated by the requirements of associated functions that must have been previously called. This array MUST be the same array passed as argument
rcomm in the previous call to
d02tlc.
On entry: this must be the same array as supplied to
d02tlc and
must remain unchanged between calls.
On exit: contains information about the solution for use on subsequent calls to associated functions.

6:
$\mathbf{icomm}\left[\mathit{dim}\right]$ – const Integer
Communication Array

Note: the dimension,
$\mathit{dim}$, of this array is dictated by the requirements of associated functions that must have been previously called. This array MUST be the same array passed as argument
icomm in the previous call to
d02tlc.
On entry: this must be the same array as supplied to
d02tlc and
must remain unchanged between calls.
On exit: contains information about the solution for use on subsequent calls to associated functions.

7:
$\mathbf{fail}$ – NagError *
Input/Output

The NAG error argument (see
Section 7 in the Introduction to the NAG Library CL Interface).
6
Error 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.
 NE_BAD_PARAM

On entry, argument $\u2329\mathit{\text{value}}\u232a$ had an illegal value.
 NE_CONVERGENCE_SOL

The solver function did not produce any results suitable for interpolation.
 NE_INT_2

On entry,
${\mathbf{mmax}}=\u2329\mathit{\text{value}}\u232a$ and
$\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{m}}\left[i\right]\right)=\u2329\mathit{\text{value}}\u232a$ in
d02tvc.
Constraint:
${\mathbf{mmax}}=\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{m}}\left[i\right]\right)$ in
d02tvc.
 NE_INT_CHANGED

On entry,
${\mathbf{neq}}=\u2329\mathit{\text{value}}\u232a$ and
${\mathbf{neq}}=\u2329\mathit{\text{value}}\u232a$ in
d02tvc.
Constraint:
${\mathbf{neq}}={\mathbf{neq}}$ in
d02tvc.
 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_MISSING_CALL

The solver function does not appear to have been called.
 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_REAL

On entry, ${\mathbf{x}}=\u2329\mathit{\text{value}}\u232a$.
Constraint: ${\mathbf{x}}\le \u2329\mathit{\text{value}}\u232a$.
On entry, ${\mathbf{x}}=\u2329\mathit{\text{value}}\u232a$.
Constraint: ${\mathbf{x}}\ge \u2329\mathit{\text{value}}\u232a$.
 NW_NOT_CONVERGED

The solver function did not converge to a suitable solution.
A converged intermediate solution has been used.
Interpolated values should be treated with caution.
 NW_TOO_MUCH_ACC_REQUESTED

The solver function did not satisfy the error requirements.
Interpolated values should be treated with caution.
7
Accuracy
If
d02tyc returns the value
${\mathbf{fail}}\mathbf{.}\mathbf{code}=$ NE_NOERROR, the computed values of the solution components
${y}_{i}$ should be of similar accuracy to that specified by the argument
tols of
d02tvc. Note that during the solution process the error in the derivatives
${y}_{i}^{\left(\mathit{j}\right)}$, for
$\mathit{j}=1,2,\dots ,{m}_{i}1$, has not been controlled and that the derivative values returned by
d02tyc are computed via differentiation of the piecewise polynomial approximation to
${y}_{i}$. See also
Section 9.
8
Parallelism and Performance
d02tyc makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the
X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the
Users' Note for your implementation for any additional implementationspecific information.
If
d02tyc returns the value
fail.code $={\mathbf{NW\_NOT\_CONVERGED}}$,
then the accuracy of the interpolated values may be proportional to the quantity
ermx as returned by
d02tzc.
If
d02tlc returned a value for
fail.code
other than
${\mathbf{fail}}\mathbf{.}\mathbf{code}=$ NE_NOERROR, then nothing can be said regarding either the quality or accuracy of the values computed by
d02tyc.
10
Example
The following example is used to illustrate that a system with singular coefficients can be treated without modification of the system definition. See also
d02tlc,
d02tvc,
d02txc and
d02tzc, for the illustration of other facilities.
Consider the Thomas–Fermi equation used in the investigation of potentials and charge densities of ionized atoms. See
Grossman (1992), for example, and the references therein. The equation is
with boundary conditions
The coefficient
${x}^{1/2}$ implies a singularity at the lefthand boundary
$x=0$.
We use the initial approximation
$y\left(x\right)=1x/a$, which satisfies the boundary conditions, on a uniform mesh of six points. For illustration we choose
$a=1$, as in
Grossman (1992). Note that in
ffun and
fjac (see
d02tlc) we have taken the precaution of setting the function value and Jacobian value to
$0.0$ in case a value of
$y$ becomes negative, although starting from our initial solution profile this proves unnecessary during the solution phase. Of course the true solution
$y\left(x\right)$ is positive for all
$x<a$.
10.1
Program Text
10.2
Program Data
10.3
Program Results