Loading...
Searching...
No Matches
integrationScheme Class Referenceabstract

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

#include <integrationScheme.H>

Inheritance diagram for integrationScheme:

Public Member Functions

 TypeName ("integrationScheme")
 Runtime type information.
 declareRunTimeSelectionTable (autoPtr, integrationScheme, word,(),())
 Declare runtime constructor selection table.
 integrationScheme ()
 Construct.
virtual autoPtr< integrationSchemeclone () const =0
 Construct and return clone.
virtual ~integrationScheme ()
 Destructor.
template<class Type>
Type delta (const Type &phi, const scalar dt, const Type &Alpha, const scalar Beta) const
 Perform the integration.
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.
virtual scalar dtEff (const scalar dt, const scalar Beta) const =0
 Return the integration effective time step.
virtual scalar sumDtEff (const scalar dt, const scalar Beta) const =0
 Return the integral of the effective time step.

Static Public Member Functions

static autoPtr< integrationSchemeNew (const word &phiName, const dictionary &dict)
 Select an integration scheme.
template<class Type>
static Type explicitDelta (const Type &phi, const scalar dtEff, const Type &Alpha, const scalar Beta)
 Perform the integration explicitly.

Detailed Description

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.

Source files

Definition at line 86 of file integrationScheme.H.

Constructor & Destructor Documentation

◆ integrationScheme()

integrationScheme ( )

Construct.

Definition at line 33 of file integrationScheme.C.

Referenced by declareRunTimeSelectionTable().

Here is the caller graph for this function:

◆ ~integrationScheme()

~integrationScheme ( )
virtual

Destructor.

Definition at line 39 of file integrationScheme.C.

Member Function Documentation

◆ TypeName()

TypeName ( "integrationScheme" )

Runtime type information.

◆ declareRunTimeSelectionTable()

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

Declare runtime constructor selection table.

References integrationScheme().

Here is the call graph for this function:

◆ clone()

virtual autoPtr< integrationScheme > clone ( ) const
pure virtual

Construct and return clone.

Implemented in analytical, and Euler.

References dict, dtEff(), and phi.

Here is the call graph for this function:

◆ New()

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

Select an integration scheme.

Definition at line 27 of file integrationSchemeNew.C.

References Foam::abort(), dict, Foam::endl(), Foam::FatalIOError, FatalIOErrorInLookup, and Foam::Info.

Referenced by KinematicCloud< CloudType >::setModels(), and ThermoCloud< CloudType >::setModels().

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

◆ explicitDelta()

template<class Type>
Type explicitDelta ( const Type & phi,
const scalar dtEff,
const Type & Alpha,
const scalar Beta )
inlinestatic

Perform the integration explicitly.

Definition at line 26 of file integrationSchemeTemplates.C.

References dtEff(), and phi.

Referenced by delta(), and partialDelta().

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

◆ delta()

template<class Type>
Type delta ( const Type & phi,
const scalar dt,
const Type & Alpha,
const scalar Beta ) const
inline

Perform the integration.

Definition at line 39 of file integrationSchemeTemplates.C.

References dtEff(), explicitDelta(), and phi.

Here is the call graph for this function:

◆ partialDelta()

template<class Type>
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 52 of file integrationSchemeTemplates.C.

References explicitDelta(), phi, and sumDtEff().

Here is the call graph for this function:

◆ dtEff()

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

Return the integration effective time step.

Implemented in analytical, and Euler.

Referenced by clone(), delta(), and 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 analytical, and Euler.

Referenced by partialDelta().

Here is the caller graph for this function:

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