L-stable embedded Rosenbrock ODE solver of order (3)4. More...

Inheritance diagram for Rosenbrock34:
[legend]
Collaboration diagram for Rosenbrock34:
[legend]

Public Member Functions

 TypeName ("Rosenbrock34")
 Runtime type information. More...
 
 Rosenbrock34 (const ODESystem &ode, const dictionary &dict)
 Construct from ODESystem. More...
 
virtual ~Rosenbrock34 ()=default
 Destructor. More...
 
virtual bool resize ()
 Resize the ODE solver. More...
 
virtual scalar solve (const scalar x0, const scalarField &y0, const scalarField &dydx0, const scalar dx, scalarField &y) const
 Solve a single step dx and return the error. More...
 
virtual void solve (scalar &x, scalarField &y, scalar &dxTry) const
 Solve the ODE system and the update the state. More...
 
virtual void solve (scalar &x, scalarField &y, scalar &dxTry) const
 Inherit solve from ODESolver. More...
 
virtual void solve (scalar &x, scalarField &y, stepState &step) const
 Inherit solve from ODESolver. More...
 
virtual void solve (const scalar xStart, const scalar xEnd, scalarField &y, scalar &dxEst) const
 Inherit solve from ODESolver. More...
 
- Public Member Functions inherited from ODESolver
 TypeName ("ODESolver")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, ODESolver, dictionary,(const ODESystem &ode, const dictionary &dict),(ode, dict))
 
 ODESolver (const ODESystem &ode, const dictionary &dict)
 Construct for given ODESystem. More...
 
 ODESolver (const ODESystem &ode, const scalarField &absTol, const scalarField &relTol)
 Construct for given ODESystem specifying tolerances. More...
 
virtual ~ODESolver ()=default
 Destructor. More...
 
label nEqns () const
 Return the number of equations to solve. More...
 
scalarFieldabsTol ()
 Return access to the absolute tolerance field. More...
 
scalarFieldrelTol ()
 Return access to the relative tolerance field. More...
 
virtual bool resize ()=0
 Resize the ODE solver. More...
 
template<class Type >
void resizeField (UList< Type > &f) const
 
void resizeMatrix (scalarSquareMatrix &m) const
 
virtual void solve (scalar &x, scalarField &y, scalar &dxTry) const
 Solve the ODE system as far as possible up to dxTry. More...
 
virtual void solve (scalar &x, scalarField &y, stepState &step) const
 Solve the ODE system as far as possible up to dxTry. More...
 
virtual void solve (const scalar xStart, const scalar xEnd, scalarField &y, scalar &dxEst) const
 Solve the ODE system from xStart to xEnd, update the state. More...
 
- Public Member Functions inherited from adaptiveSolver
 adaptiveSolver (const ODESystem &ode, const dictionary &dict)
 Construct from ODESystem. More...
 
virtual ~adaptiveSolver ()=default
 Destructor. More...
 
bool resize (const label n)
 Resize the ODE solver. More...
 
virtual scalar solve (const scalar x0, const scalarField &y0, const scalarField &dydx0, const scalar dx, scalarField &y) const =0
 Solve a single step dx and return the error. More...
 
void solve (const ODESystem &ode, scalar &x, scalarField &y, scalar &dxTry) const
 Solve the ODE system and the update the state. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ODESolver
static autoPtr< ODESolverNew (const ODESystem &ode, const dictionary &dict)
 Select null constructed. More...
 
template<class Type >
static void resizeField (UList< Type > &f, const label n)
 
- Protected Member Functions inherited from ODESolver
scalar normalizeError (const scalarField &y0, const scalarField &y, const scalarField &err) const
 Return the nomalized scalar error. More...
 
 ODESolver (const ODESolver &)=delete
 No copy construct. More...
 
void operator= (const ODESolver &)=delete
 No copy assignment. More...
 
- Protected Attributes inherited from ODESolver
const ODESystemodes_
 Reference to ODESystem. More...
 
const label maxN_
 Maximum size of the ODESystem. More...
 
label n_
 Size of the ODESystem (adjustable) More...
 
scalarField absTol_
 Absolute convergence tolerance per step. More...
 
scalarField relTol_
 Relative convergence tolerance per step. More...
 
label maxSteps_
 The maximum number of sub-steps allowed for the integration step. More...
 

Detailed Description

L-stable embedded Rosenbrock ODE solver of order (3)4.

    Hairer, E., Nørsett, S. P., & Wanner, G. (1996).
    Solving Ordinary Differential Equations II:
    Stiff and Differential-Algebraic Problems, second edition",
    Springer-Verlag, Berlin.

The default constants are from:

    Shampine, L. F. (1982).
    Implementation of Rosenbrock Methods.
    ACM Transactions on Mathematical Software, vol. 8, pp. 93–113.

with which the scheme is more accurate than with the L-Stable coefficients for small step-size but less stable for large step-size.

The L-Stable scheme constants are provided commented-out in Rosenbrock34.C

Source files

Definition at line 73 of file Rosenbrock34.H.

Constructor & Destructor Documentation

◆ Rosenbrock34()

Rosenbrock34 ( const ODESystem ode,
const dictionary dict 
)

Construct from ODESystem.

Definition at line 111 of file Rosenbrock34.C.

◆ ~Rosenbrock34()

virtual ~Rosenbrock34 ( )
virtualdefault

Destructor.

Member Function Documentation

◆ TypeName()

TypeName ( "Rosenbrock34"  )

Runtime type information.

◆ resize()

bool resize ( )
virtual

Resize the ODE solver.

Implements ODESolver.

Definition at line 130 of file Rosenbrock34.C.

References Euler::resize(), and ODESolver::resize().

Here is the call graph for this function:

◆ solve() [1/5]

Foam::scalar solve ( const scalar  x0,
const scalarField y0,
const scalarField dydx0,
const scalar  dx,
scalarField y 
) const
virtual

Solve a single step dx and return the error.

Implements adaptiveSolver.

Definition at line 154 of file Rosenbrock34.C.

References forAll, gamma, Foam::LUBacksubstitute(), Foam::LUDecompose(), y, and Foam::y0().

Here is the call graph for this function:

◆ solve() [2/5]

void solve ( scalar &  x,
scalarField y,
scalar &  dxTry 
) const
virtual

Solve the ODE system and the update the state.

Reimplemented from ODESolver.

Definition at line 235 of file Rosenbrock34.C.

References solve(), x, and y.

Here is the call graph for this function:

◆ solve() [3/5]

void solve ( scalar &  x,
scalarField y,
scalar &  dxTry 
) const
virtual

Inherit solve from ODESolver.

Reimplemented from ODESolver.

Definition at line 197 of file ODESolver.C.

◆ solve() [4/5]

void solve ( scalar &  x,
scalarField y,
stepState step 
) const
virtual

Inherit solve from ODESolver.

Reimplemented from ODESolver.

Definition at line 208 of file ODESolver.C.

◆ solve() [5/5]

void solve ( const scalar  xStart,
const scalar  xEnd,
scalarField y,
scalar &  dxEst 
) const
virtual

Inherit solve from ODESolver.

Reimplemented from ODESolver.

Definition at line 217 of file ODESolver.C.


The documentation for this class was generated from the following files: