Abstract base-class for ODE system solvers. More...
Classes | |
class | stepState |
Public Member Functions | |
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... | |
scalarField & | absTol () |
Return access to the absolute tolerance field. More... | |
scalarField & | relTol () |
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... | |
Static Public Member Functions | |
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 | |
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 | |
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... | |
Friends | |
class | ODESystem |
ODESolver | ( | const ODESystem & | ode, |
const dictionary & | dict | ||
) |
Construct for given ODESystem.
Definition at line 56 of file ODESolver.C.
ODESolver | ( | const ODESystem & | ode, |
const scalarField & | absTol, | ||
const scalarField & | relTol | ||
) |
Construct for given ODESystem specifying tolerances.
Definition at line 68 of file ODESolver.C.
|
virtualdefault |
Destructor.
|
protected |
Return the nomalized scalar error.
Definition at line 36 of file ODESolver.C.
References forAll, Foam::mag(), Foam::max(), y, and Foam::y0().
|
protecteddelete |
No copy assignment.
TypeName | ( | "ODESolver" | ) |
Runtime type information.
declareRunTimeSelectionTable | ( | autoPtr | , |
ODESolver | , | ||
dictionary | , | ||
(const ODESystem &ode, const dictionary &dict) | , | ||
(ode, dict) | |||
) |
|
static |
Select null constructed.
Definition at line 27 of file ODESolverNew.C.
References dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, and Foam::Info.
Referenced by thermoCoupleProbes::thermoCoupleProbes().
|
inline |
Return the number of equations to solve.
Definition at line 24 of file ODESolverI.H.
References ODESolver::n_.
|
inline |
Return access to the absolute tolerance field.
Definition at line 30 of file ODESolverI.H.
|
inline |
Return access to the relative tolerance field.
Definition at line 36 of file ODESolverI.H.
|
pure virtual |
Resize the ODE solver.
Implemented in seulex, SIBS, RKF45, RKDP45, Rosenbrock34, RKCK45, rodas34, rodas23, Rosenbrock23, Rosenbrock12, EulerSI, Euler, and Trapezoid.
Definition at line 85 of file ODESolver.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
Referenced by Trapezoid::resize(), Euler::resize(), EulerSI::resize(), Rosenbrock12::resize(), Rosenbrock23::resize(), rodas23::resize(), rodas34::resize(), RKCK45::resize(), RKDP45::resize(), Rosenbrock34::resize(), RKF45::resize(), SIBS::resize(), and seulex::resize().
|
inlinestatic |
Definition at line 43 of file ODESolverI.H.
References UList< T >::begin(), f(), n, and List< T >::shallowCopy().
Referenced by adaptiveSolver::resize().
|
inline |
Definition at line 50 of file ODESolverI.H.
References f().
|
inline |
Definition at line 56 of file ODESolverI.H.
References SquareMatrix< Type >::shallowResize().
|
virtual |
Solve the ODE system 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 in RKF45, RKDP45, Rosenbrock34, RKCK45, SIBS, rodas34, rodas23, Rosenbrock23, Rosenbrock12, EulerSI, Euler, and Trapezoid.
Definition at line 110 of file ODESolver.C.
References ODESolver::stepState::dxTry, Foam::solve(), x, and y.
|
virtual |
Solve the ODE system 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 in seulex.
Definition at line 123 of file ODESolver.C.
References ODESolver::stepState::dxDid, ODESolver::stepState::dxTry, Foam::solve(), x, and y.
|
virtual |
Solve the ODE system from xStart to xEnd, update the state.
and return an estimate for the next step in dxTry
Definition at line 136 of file ODESolver.C.
References ODESolver::stepState::dxDid, ODESolver::stepState::dxTry, Foam::exit(), Foam::FatalError, FatalErrorInFunction, ODESolver::stepState::first, ODESolver::stepState::last, Foam::nl, ODESolver::stepState::prevReject, ODESolver::stepState::reject, Foam::solve(), x, and y.
|
friend |
Definition at line 115 of file ODESolver.H.
|
protected |
Reference to ODESystem.
Definition at line 62 of file ODESolver.H.
|
protected |
Maximum size of the ODESystem.
Definition at line 67 of file ODESolver.H.
|
mutableprotected |
Size of the ODESystem (adjustable)
Definition at line 72 of file ODESolver.H.
Referenced by ODESolver::nEqns().
|
protected |
Absolute convergence tolerance per step.
Definition at line 77 of file ODESolver.H.
|
protected |
Relative convergence tolerance per step.
Definition at line 82 of file ODESolver.H.
|
protected |
The maximum number of sub-steps allowed for the integration step.
Definition at line 87 of file ODESolver.H.
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.