integrationScheme Class Referenceabstract

Base for a set of schemes which integrate simple ODEs which arise from semi-implicit rate expressions. More...

Inheritance diagram for integrationScheme:

Public Member Functions

 TypeName ("integrationScheme")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, integrationScheme, word,(),())
 Declare runtime constructor selection table. More...
 
 integrationScheme ()
 Construct. More...
 
virtual autoPtr< integrationSchemeclone () 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< integrationSchemeNew (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...
 

Detailed Description

Base for a set of schemes which integrate simple ODEs which arise from semi-implicit 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 - \beta_i (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.

Source files

Definition at line 88 of file integrationScheme.H.

Constructor & Destructor Documentation

◆ integrationScheme()

Construct.

Definition at line 38 of file integrationScheme.C.

◆ ~integrationScheme()

~integrationScheme ( )
virtual

Destructor.

Definition at line 44 of file integrationScheme.C.

Member Function Documentation

◆ TypeName()

TypeName ( "integrationScheme"  )

Runtime type information.

◆ declareRunTimeSelectionTable()

declareRunTimeSelectionTable ( autoPtr  ,
integrationScheme  ,
word  ,
()  ,
()   
)

Declare runtime constructor selection table.

◆ clone()

virtual autoPtr<integrationScheme> clone ( ) const
pure virtual

Construct and return clone.

Implemented in Euler, and analytical.

◆ New()

Foam::autoPtr< Foam::integrationScheme > New ( const word phiName,
const dictionary dict 
)
static

Select an integration scheme.

Definition at line 31 of file integrationSchemeNew.C.

References dict, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, and Foam::nl.

Here is the call graph for this function:

◆ explicitDelta()

Type explicitDelta ( const Type &  phi,
const scalar  dtEff,
const Type &  Alpha,
const scalar  Beta 
)
inlinestatic

Perform the integration explicitly.

Definition at line 31 of file integrationSchemeTemplates.C.

References integrationScheme::dtEff().

Here is the call graph for this function:

◆ delta()

Type delta ( const Type &  phi,
const scalar  dt,
const Type &  Alpha,
const scalar  Beta 
) const
inline

Perform the integration.

Definition at line 44 of file integrationSchemeTemplates.C.

◆ partialDelta()

Type partialDelta ( const Type &  phi,
const scalar  dt,
const Type &  Alpha,
const scalar  Beta,
const Type &  alphai,
const scalar  betai 
) const
inline

Perform a part of the integration.

Definition at line 57 of file integrationSchemeTemplates.C.

◆ dtEff()

virtual scalar dtEff ( const scalar  dt,
const scalar  Beta 
) const
pure virtual

Return the integration effective time step.

Implemented in Euler, and analytical.

Referenced by integrationScheme::explicitDelta().

Here is the caller graph for this function:

◆ sumDtEff()

virtual scalar sumDtEff ( const scalar  dt,
const scalar  Beta 
) const
pure virtual

Return the integral of the effective time step.

Implemented in Euler, and analytical.


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