TimeIntegration Namespace Reference

Developer Documentation: MeltPoolDG::TimeIntegration Namespace Reference
Developer Documentation
MeltPoolDG::TimeIntegration Namespace Reference

Class providing different low storage explicit Runge-Kutta schemes. The schemes implemented in this class are presented in. More...

Classes

class  BDFIntegrator
 
class  ImplicitExplicitIntegrator
 
class  LowStorageExplicitRungeKuttaIntegrator
 
class  OneStepTheta
 
class  SolutionHistory
 
class  TimeIntegratorBase
 
class  TimeIterator
 
struct  TimeStepLimitData
 
struct  TimeSteppingData
 

Functions

 BETTER_ENUM (TimeIntegratorSchemes, int, not_initialized, LSRK_stage_1_order_1, LSRK_stage_3_order_3, LSRK_stage_5_order_4, LSRK_stage_7_order_4, LSRK_stage_9_order_5, implicit_euler, explicit_euler, crank_nicolson, bdf_1, bdf_2, bdf_3, bdf_4, bdf_5, bdf_6, imex) template< typename number
 
bool time_integrator_scheme_is_explicit (const TimeIntegratorSchemes scheme)
 
bool time_integrator_scheme_is_implicit (const TimeIntegratorSchemes scheme)
 
template<typename number , typename PDEOperator >
TimeIntegratorBase< number > * explicit_time_integrator_factory (const PDEOperator &pde_operator, const TimeIntegratorData< number > &params)
 
template<int dim, typename number , typename PDEOperator >
TimeIntegratorBase< number > * implicit_time_integrator_factory (const PDEOperator &pde_operator, const ScratchData< dim, dim, number > &scratch_data, const unsigned int dof_idx, const TimeIntegratorData< number > &params)
 
template<typename number , typename PDEOperator , typename VectorType = dealii::LinearAlgebra::distributed::Vector<number>>
TimeIntegratorBase< number > * time_integrator_factory (const PDEOperator &pde_operator, const TimeIntegratorData< number > &params, const LinearSolverData< number > &linear_solver_data, dealii::TimerOutput &)
 

Variables

static constexpr std::array< TimeIntegratorSchemes, 6 > bdf_supported_schemes
 The time integrator schemes supported by the bdf time integrator.
 
static constexpr std::array< TimeIntegratorSchemes, 5 > explicit_lsrk_supported_schemes
 The time integrator schemes supported by the low storage explicit Runge-Kutta time integrator.
 
static constexpr std::array< TimeIntegratorSchemes, 1 > imex_supported_schemes
 The time integrator schemes supported by the implicit-explicit time integrator.
 
static constexpr std::array< TimeIntegratorSchemes, 3 > one_step_theta_supported_schemes
 

Detailed Description

Class providing different low storage explicit Runge-Kutta schemes. The schemes implemented in this class are presented in.

Time integrator base class from which all explicit time integrator classes are derived.

Kennedy, C.A., Carpenter, M.H & Lewis, R.M. (2000). Low-storage, explicit Runge-Kutta schemes for the compressible Navier-Stokes equations. Applied Numerical Mathematics, 35(2000), 177-219.

Adopted from

https://github.com/peterrum/pf-applications

Authors: Peter Munch, Vladimir Ivannikov

Function Documentation

◆ BETTER_ENUM()

MeltPoolDG::TimeIntegration::BETTER_ENUM ( TimeIntegratorSchemes  ,
int  ,
not_initialized  ,
LSRK_stage_1_order_1  ,
LSRK_stage_3_order_3  ,
LSRK_stage_5_order_4  ,
LSRK_stage_7_order_4  ,
LSRK_stage_9_order_5  ,
implicit_euler  ,
explicit_euler  ,
crank_nicolson  ,
bdf_1  ,
bdf_2  ,
bdf_3  ,
bdf_4  ,
bdf_5  ,
bdf_6  ,
imex   
)

Collection of all integrator parameters.

◆ explicit_time_integrator_factory()

template<typename number , typename PDEOperator >
TimeIntegratorBase< number > * MeltPoolDG::TimeIntegration::explicit_time_integrator_factory ( const PDEOperator &  pde_operator,
const TimeIntegratorData< number > &  params 
)

Factory function that creates and returns a raw pointer to an explicit time integrator based on the scheme specified in TimeIntegratorData.

Parameters
paramsContains the configuration details for the time integrator.
timerTimer passed to the constructor of the time integrator.
Returns
A raw pointer to the appropriate explicit time integrator.
Exceptions
Anexception if the specified integration scheme is not supported.
Note
This function returns a raw pointer, leaving the responsibility for memory management (e.g., wrapping it in a smart pointer) to the caller.

◆ implicit_time_integrator_factory()

template<int dim, typename number , typename PDEOperator >
TimeIntegratorBase< number > * MeltPoolDG::TimeIntegration::implicit_time_integrator_factory ( const PDEOperator &  pde_operator,
const ScratchData< dim, dim, number > &  scratch_data,
const unsigned int  dof_idx,
const TimeIntegratorData< number > &  params 
)

Factory function that creates and returns a raw pointer to an implicit time integrator based on the scheme specified in TimeIntegratorData.

Parameters
paramsContains the configuration details for the time integrator.
scratch_dataScratch data object to get relevant dof information for the integrator.
dof_idxRelevant dof index in the scratch data object.
timerTimer passed to the constructor of the time integrator.
Returns
A raw pointer to the appropriate implicit time integrator.
Exceptions
Anexception if the specified integration scheme is not supported.
Note
This function returns a raw pointer, leaving the responsibility for memory management (e.g., wrapping it in a smart pointer) to the caller.

◆ time_integrator_factory()

template<typename number , typename PDEOperator , typename VectorType = dealii::LinearAlgebra::distributed::Vector<number>>
TimeIntegratorBase< number > * MeltPoolDG::TimeIntegration::time_integrator_factory ( const PDEOperator &  pde_operator,
const TimeIntegratorData< number > &  params,
const LinearSolverData< number > &  linear_solver_data,
dealii::TimerOutput &   
)

Factory function that creates and returns a raw pointer to any suitable time integrator derived form the time integrator base class based on the scheme specified in TimeIntegratorData.

Parameters
paramsContains the configuration details for the time integrator.
linear_solver_dataData for the linear solver used in (semi-) implicit time stepping.
timerTimer passed to the constructor of the time integrator.
Returns
A raw pointer to the appropriate time integrator.
Exceptions
Anexception if the specified integration scheme is not supported.
Note
This function returns a raw pointer, leaving the responsibility for memory management (e.g., wrapping it in a smart pointer) to the caller.

◆ time_integrator_scheme_is_explicit()

bool MeltPoolDG::TimeIntegration::time_integrator_scheme_is_explicit ( const TimeIntegratorSchemes  scheme)
inline

Checks if the given scheme is explicit and supported by one of the available explicit integrator classes.

Parameters
schemeThe time integration scheme to check.
Returns
True if the scheme is explicit and supported; otherwise, false.

◆ time_integrator_scheme_is_implicit()

bool MeltPoolDG::TimeIntegration::time_integrator_scheme_is_implicit ( const TimeIntegratorSchemes  scheme)
inline

Checks if the given scheme is implicit and supported by one of the available implicit integrator classes.

Parameters
schemeThe time integration scheme to check.
Returns
True if the scheme is implicit and supported; otherwise, false.

Variable Documentation

◆ bdf_supported_schemes

constexpr std::array<TimeIntegratorSchemes, 6> MeltPoolDG::TimeIntegration::bdf_supported_schemes
inlinestaticconstexpr
Initial value:
{
{TimeIntegratorSchemes::bdf_1,
TimeIntegratorSchemes::bdf_2,
TimeIntegratorSchemes::bdf_3,
TimeIntegratorSchemes::bdf_4,
TimeIntegratorSchemes::bdf_5,
TimeIntegratorSchemes::bdf_6}}

The time integrator schemes supported by the bdf time integrator.

◆ explicit_lsrk_supported_schemes

constexpr std::array<TimeIntegratorSchemes, 5> MeltPoolDG::TimeIntegration::explicit_lsrk_supported_schemes
inlinestaticconstexpr
Initial value:
{{
TimeIntegratorSchemes::LSRK_stage_1_order_1,
TimeIntegratorSchemes::LSRK_stage_3_order_3,
TimeIntegratorSchemes::LSRK_stage_5_order_4,
TimeIntegratorSchemes::LSRK_stage_7_order_4,
TimeIntegratorSchemes::LSRK_stage_9_order_5,
}}

The time integrator schemes supported by the low storage explicit Runge-Kutta time integrator.

◆ imex_supported_schemes

constexpr std::array<TimeIntegratorSchemes, 1> MeltPoolDG::TimeIntegration::imex_supported_schemes
inlinestaticconstexpr
Initial value:
{
{TimeIntegratorSchemes::imex}}

The time integrator schemes supported by the implicit-explicit time integrator.

◆ one_step_theta_supported_schemes

constexpr std::array<TimeIntegratorSchemes, 3> MeltPoolDG::TimeIntegration::one_step_theta_supported_schemes
inlinestaticconstexpr
Initial value:
{
{TimeIntegratorSchemes::explicit_euler,
TimeIntegratorSchemes::implicit_euler,
TimeIntegratorSchemes::crank_nicolson}}