All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SIBS Class Reference

A semi-implicit mid-point solver for stiff systems of ordinary differential equations. More...

Inheritance diagram for SIBS:
Collaboration diagram for SIBS:

Public Member Functions

 TypeName ("SIBS")
 Runtime type information. More...
 
 SIBS (const ODESystem &ode, const dictionary &dict)
 Construct from ODE system. More...
 
virtual ~SIBS ()
 Destructor. More...
 
virtual bool resize ()
 Resize the ODE solver. More...
 
virtual void solve (scalar &x, scalarField &y, const label li, scalar &dxTry) const
 Solve the ODE system from the current state xStart, y. 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...
 
 ODESolver (const ODESolver &)=delete
 Disallow default bitwise copy construction. More...
 
virtual ~ODESolver ()
 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...
 
template<class Type >
void resizeField (UList< Type > &f) const
 
void resizeMatrix (scalarSquareMatrix &m) const
 
virtual void solve (scalar &x, scalarField &y, const label li, stepState &step) const
 Solve the ODE system from the current state xStart, y. More...
 
virtual void solve (const scalar xStart, const scalar xEnd, scalarField &y, const label li, scalar &dxEst) const
 Solve the ODE system from the current state xStart, y. More...
 
void operator= (const ODESolver &)=delete
 Disallow default bitwise assignment. 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 normalized scalar error. 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

A semi-implicit mid-point solver for stiff systems of ordinary differential equations.

Reference:

    Bader, G., & Deuflhard, P. (1983).
    A semi-implicit mid-point rule for stiff systems
    of ordinary differential equations.
    Numerische Mathematik, 41(3), 373-398.
Source files

Definition at line 58 of file SIBS.H.

Constructor & Destructor Documentation

◆ SIBS()

SIBS ( const ODESystem ode,
const dictionary dict 
)

Construct from ODE system.

Definition at line 49 of file SIBS.C.

◆ ~SIBS()

virtual ~SIBS ( )
inlinevirtual

Destructor.

Definition at line 126 of file SIBS.H.

References SIBS::resize(), SIBS::solve(), and x.

Here is the call graph for this function:

Member Function Documentation

◆ TypeName()

TypeName ( "SIBS"  )

Runtime type information.

◆ resize()

bool resize ( )
virtual

Resize the ODE solver.

Implements ODESolver.

Definition at line 71 of file SIBS.C.

References ODESolver::resize(), ODESolver::resizeField(), ODESolver::resizeMatrix(), and SIBS::solve().

Referenced by SIBS::~SIBS().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve()

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

Solve the ODE system from the current state xStart, y.

and the optional index into the list of systems to solve li as far as possible up to dxTry adjusting the step as necessary to provide a solution within the specified tolerance. Update the state and return an estimate for the next step in dxTry

Reimplemented from ODESolver.

Definition at line 92 of file SIBS.C.

References ODESolver::absTol_, ODESystem::derivatives(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::constant::universal::h, ODESystem::jacobian(), k, Foam::mag(), Foam::max(), Foam::min(), ODESolver::n_, ODESolver::odes_, Foam::pow(), ODESolver::relTol_, Foam::sqr(), and y.

Referenced by SIBS::resize(), and SIBS::~SIBS().

Here is the call graph for this function:
Here is the caller graph for this function:

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