Base for a set of schemes which integrate simple ODEs which arise from semi-implcit rate expressions. More...
Public Member Functions | |
TypeName ("integrationScheme") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, integrationScheme, word,(),()) | |
Declare runtime constructor selection table. More... | |
integrationScheme () | |
Construct. More... | |
virtual autoPtr< integrationScheme > | clone () const =0 |
Construct and return clone. More... | |
virtual | ~integrationScheme () |
Destructor. More... | |
template<class Type > | |
Type | delta (const Type &phi, const scalar dt, const Type &Alpha, const scalar Beta) const |
Perform the integration. More... | |
template<class Type > | |
Type | partialDelta (const Type &phi, const scalar dt, const Type &Alpha, const scalar Beta, const Type &alphai, const scalar betai) const |
Perform a part of the integration. More... | |
virtual scalar | dtEff (const scalar dt, const scalar Beta) const =0 |
Return the integration effective time step. More... | |
virtual scalar | sumDtEff (const scalar dt, const scalar Beta) const =0 |
Return the integral of the effective time step. More... | |
Static Public Member Functions | |
static autoPtr< integrationScheme > | New (const word &phiName, const dictionary &dict) |
Select an integration scheme. More... | |
template<class Type > | |
static Type | explicitDelta (const Type &phi, const scalar dtEff, const Type &Alpha, const scalar Beta) |
Perform the integration explicitly. More... | |
Base for a set of schemes which integrate simple ODEs which arise from semi-implcit rate expressions.
\[ \frac{d \phi}{d t} = A - B \phi \]
The methods are defined in terms of the effective time-step \(\Delta t_e\) by which the explicit rate is multiplied. The effective time-step is a function of the actual time step and the implicit coefficient, which must be implemented in each derived scheme.
\[ \Delta t_e = f(\Delta t, B) \]
\[ \Delta \phi = (A - B \phi^n) \Delta t_e \]
This class also facilitates integration in stages. If the explicit and implicit coefficients, \(A\) and \(B\), are a summation of differing contributions, \(\sum \alpha_i\) and \(\sum \beta_i\), then the integration can be split up to determine the effect of each contribution.
\[ \frac{d \phi_i}{d t} = \alpha_i - \beta_i \phi \]
\[ \Delta \phi_i = \alpha_i \Delta t - \beta_i \int_0^{\Delta t} \phi d t \]
\[ \Delta \phi_i = (\alpha_i - \beta_i \phi^n) \Delta t - (A - B \phi^n) \int_0^{\Delta t} t_e dt \]
These partial calculations are defined in terms of the integral of the effective time-step, \(\int_0^{\Delta t} t_e dt\), which is also implemented in every derivation.
Definition at line 90 of file integrationScheme.H.
Construct.
Definition at line 40 of file integrationScheme.C.
|
virtual |
Destructor.
Definition at line 46 of file integrationScheme.C.
TypeName | ( | "integrationScheme" | ) |
Runtime type information.
declareRunTimeSelectionTable | ( | autoPtr | , |
integrationScheme | , | ||
word | , | ||
() | , | ||
() | |||
) |
Declare runtime constructor selection table.
|
pure virtual |
Construct and return clone.
Implemented in analytical, and Euler.
|
static |
Select an integration scheme.
Definition at line 34 of file integrationSchemeNew.C.
References Foam::abort(), dict, Foam::endl(), Foam::FatalIOError, FatalIOErrorInLookup, dictionary::get(), and Foam::Info.
|
inlinestatic |
Perform the integration explicitly.
Definition at line 33 of file integrationSchemeTemplates.C.
References integrationScheme::dtEff(), and phi.
|
inline |
Perform the integration.
Definition at line 46 of file integrationSchemeTemplates.C.
References phi.
|
inline |
Perform a part of the integration.
Definition at line 59 of file integrationSchemeTemplates.C.
References phi.
|
pure virtual |
Return the integration effective time step.
Implemented in analytical, and Euler.
Referenced by integrationScheme::explicitDelta().
|
pure virtual |
Return the integral of the effective time step.
Implemented in analytical, and Euler.