naginterfaces.library.ode.bvp_coll_nlin_contin(nmesh, mesh, ipmesh, comm)[source]

bvp_coll_nlin_contin allows a solution to a nonlinear two-point boundary value problem computed by bvp_coll_nlin_solve() to be used as an initial approximation in the solution of a related nonlinear two-point boundary value problem in a continuation call to bvp_coll_nlin_solve().

For full information please refer to the NAG Library document for d02tx


The number of points to be used in the new initial mesh. It is strongly recommended that if this function is called that the suggested value (see below) for is used. In this case the arrays and returned by bvp_coll_nlin_diag() can be passed to this function without any modification.

Suggested value: , where is the number of mesh points used in the previous mesh as returned in the argument of bvp_coll_nlin_diag().

meshfloat, array-like, shape

The points to be used in the new initial mesh as specified by .

Suggested value: the argument returned from a call to bvp_coll_nlin_diag().

ipmeshint, array-like, shape

Specifies the points in to be used as the new initial mesh. Let be the set of array indices of such that or and . Then will be included in the new initial mesh.

If , will be a fixed point in the new initial mesh.

If for any , will not be included in the new mesh.

Suggested value: the argument returned in a call to bvp_coll_nlin_diag().

commdict, communication object, modified in place

Communication structure.

This argument must have been initialized by a prior call to bvp_coll_nlin_setup().

(errno )

The entries in are not strictly increasing.

(errno )

The last point of the new mesh does not coincide with the right hand end of the range previously specified.

Last point of the new mesh: ; right-hand end of the range: .

(errno )

You have set the element of corresponding to the last element of to be included in the new mesh as , which is not .

(errno )

Expected elements of to be or , but such elements found.

(errno )

An element of was set to before elements containing or were detected.

(errno )

, , or for some .

(errno )

On entry, .

Constraint: .

(errno )

The first element of array does not coincide with the left-hand end of the range previously specified.

First element of : ; left-hand of the range: .

(errno )

On entry, and .

Constraint: .

(errno )

On entry, .

Constraint: .

(errno )

On entry, and in bvp_coll_nlin_setup().

Constraint: in bvp_coll_nlin_setup().

(errno )

The solver function did not produce any results suitable for remeshing.

(errno )

The solver function does not appear to have been called.


bvp_coll_nlin_contin and its associated functions (bvp_coll_nlin_solve(), bvp_coll_nlin_setup(), bvp_coll_nlin_interp() and bvp_coll_nlin_diag()) solve the two-point boundary value problem for a nonlinear system of ordinary differential equations

over an interval subject to () nonlinear boundary conditions at and () nonlinear boundary conditions at , where . Note that is the th derivative of the th solution component. Hence . The left boundary conditions at are defined as

and the right boundary conditions at as

where and

First, bvp_coll_nlin_setup() must be called to specify the initial mesh, error requirements and other details. Then, bvp_coll_nlin_solve() can be used to solve the boundary value problem. After successful computation, bvp_coll_nlin_diag() can be used to ascertain details about the final mesh. bvp_coll_nlin_interp() can be used to compute the approximate solution anywhere on the interval using interpolation.

If the boundary value problem being solved is one of a sequence of related problems, for example as part of some continuation process, then bvp_coll_nlin_contin should be used between calls to bvp_coll_nlin_solve(). This avoids the overhead of a complete initialization when the setup function bvp_coll_nlin_setup() is used. bvp_coll_nlin_contin allows the solution values computed in the previous call to bvp_coll_nlin_solve() to be used as an initial approximation for the solution in the next call to bvp_coll_nlin_solve().

You must specify the new initial mesh. The previous mesh can be obtained by a call to bvp_coll_nlin_diag(). It may be used unchanged as the new mesh, in which case any fixed points in the previous mesh remain as fixed points in the new mesh. Fixed and other points may be added or subtracted from the mesh by manipulation of the contents of the array argument . Initial values for the solution components on the new mesh are computed by interpolation on the values for the solution components on the previous mesh.

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).


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

Keller, H B, 1992, Numerical Methods for Two-point Boundary-value Problems, Dover, New York