nag_dae_ivp_dassl_setup (d02mwc) (PDF version)
d02 Chapter Contents
d02 Chapter Introduction
NAG Library Manual

NAG Library Function Document

nag_dae_ivp_dassl_setup (d02mwc)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_dae_ivp_dassl_setup (d02mwc) is a setup function which must be called prior to the integrator nag_dae_ivp_dassl_gen (d02nec), if the DASSL implementation of Backward Differentiation Formulae (BDF) is to be used.

2  Specification

#include <nag.h>
#include <nagd02.h>
void  nag_dae_ivp_dassl_setup (Integer neq, Integer maxord, Nag_EvaluateJacobian jceval, double hmax, double h0, Nag_Boolean vector_tol, Integer icom[], Integer licom, double com[], Integer lcom, NagError *fail)

3  Description

This integrator setup function must be called before the first call to the integrator nag_dae_ivp_dassl_gen (d02nec). nag_dae_ivp_dassl_setup (d02mwc) permits you to define options for the DASSL integrator, such as: whether the Jacobian is to be provided or is to be approximated numerically by the integrator; the initial and maximum step-sizes for the integration; whether relative and absolute tolerances are system wide or per system equation; and the maximum order of BDF method permitted.

4  References


5  Arguments

1:     neqIntegerInput
On entry: the number of differential-algebraic equations to be solved.
Constraint: neq1.
2:     maxordIntegerInput
On entry: the maximum order to be used for the BDF method. Orders up to 5th order are available; setting maxord>5 means that the maximum order used will be 5.
Constraint: 1maxord.
3:     jcevalNag_EvaluateJacobianInput
On entry: specifies the technique to be used to compute the Jacobian.
The Jacobian is to be evaluated numerically by the integrator.
You must supply a function to evaluate the Jacobian on a call to the integrator.
Constraint: jceval=Nag_NumericalJacobian or Nag_AnalyticalJacobian.
4:     hmaxdoubleInput
On entry: the maximum absolute step size to be allowed. Set hmax=0.0 if this option is not required.
Constraint: hmax0.0.
5:     h0doubleInput
On entry: the step size to be attempted on the first step. Set h0=0.0 if the initial step size is calculated internally.
6:     vector_tolNag_BooleanInput
On entry: a value to indicate the form of the local error test.
rtol and atol are single element vectors.
rtol and atol are vectors. This should be chosen if you want to apply different tolerances to each equation in the system.
Note: the tolerances must either both be single element vectors or both be vectors of length neq.
7:     icom[licom]IntegerCommunication Array
On exit: used to communicate details of the task to be carried out to the integration function nag_dae_ivp_dassl_gen (d02nec).
8:     licomIntegerInput
On entry: the dimension of the array icom.
Constraint: licomneq+50.
9:     com[lcom]doubleCommunication Array
On exit: used to communicate problem parameters to the integration function nag_dae_ivp_dassl_gen (d02nec). This must be the same communication array as the array com supplied to nag_dae_ivp_dassl_gen (d02nec). In particular, the values of hmax and h0 are contained in com.
10:   lcomIntegerInput
On entry: the dimension of the array com.
the array com must be large enough for the requirements of nag_dae_ivp_dassl_gen (d02nec). That is:
  • if the system Jacobian is dense, lcom 40 + maxord+4 × neq + neq2 ;
  • if the system Jacobian is banded, lcom 40 + maxord+4 × neq + 2×ml+mu+1 × neq + 2 × neq / ml + mu + 1 + 1 .
Here ml and mu are the lower and upper bandwidths respectively that are to be specified in a subsequent call to nag_dae_ivp_dassl_linalg (d02npc).
11:   failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

On entry, argument value had an illegal value.
On entry, licom=value and neq=value.
Constraint: licom50+neq.
On entry, maxord=value.
Constraint: maxord1.
On entry, neq=value.
Constraint: neq1.
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.
On entry, hmax=value.
Constraint: hmax0.0.

7  Accuracy

Not applicable.

8  Parallelism and Performance

Not applicable.

9  Further Comments


10  Example

This example solves the plane pendulum problem, defined by the following equations:
x = u y = v u = -λx v = -λy-1 x2+y2 = 1.
Differentiating the algebraic constraint once, a new algebraic constraint is obtained
xu+yv=0 .
Differentiating the algebraic constraint one more time, substituting for x, y, u, v and using x2+y2-1=0, the corresponding DAE system includes the differential equations and the algebraic equation in λ:
u2 + v2 - λ - y = 0 .
We solve the reformulated DAE system
y1 = y3 y2 = y4 y3 = -y5×y1 y4 = -y5×y2-1 y32 + y42 - y5 - y2 = 0.
For our experiments, we take consistent initial values
y10 = 1 , ​ y20 = 0 , ​ y30 = 0 , ​ y40 = 1 ​ and ​ y50 = 1
at t=0.

10.1  Program Text

Program Text (d02mwce.c)

10.2  Program Data


10.3  Program Results

Program Results (d02mwce.r)

nag_dae_ivp_dassl_setup (d02mwc) (PDF version)
d02 Chapter Contents
d02 Chapter Introduction
NAG Library Manual

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