A semi-implicit mid-point solver for stiff systems of ordinary differential equations. More...
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... | |
scalarField & | absTol () |
Return access to the absolute tolerance field. More... | |
scalarField & | relTol () |
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< ODESolver > | New (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 | normaliseError (const scalarField &y0, const scalarField &y, const scalarField &err) const |
Return the normalised scalar error. More... | |
Protected Attributes inherited from ODESolver | |
const ODESystem & | odes_ |
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... | |
A semi-implicit mid-point solver for stiff systems of ordinary differential equations.
Bader, G., & Deuflhard, P. (1983). A semi-implicit mid-point rule for stiff systems of ordinary differential equations. Numerische Mathematik, 41(3), 373-398.
SIBS | ( | const ODESystem & | ode, |
const dictionary & | dict | ||
) |
|
inlinevirtual |
Destructor.
Definition at line 126 of file SIBS.H.
References SIBS::resize(), SIBS::solve(), and x.
TypeName | ( | "SIBS" | ) |
Runtime type information.
|
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().
|
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().