ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
Loading...
Searching...
No Matches
List of all members
ryujin::TimeIntegrator< dim, Number > Class Template Referencefinal

#include <include/ryujin/discretization/time_integrator.h>

Inheritance diagram for ryujin::TimeIntegrator< dim, Number >:
Inheritance graph
[legend]
Collaboration diagram for ryujin::TimeIntegrator< dim, Number >:
Collaboration graph
[legend]

Public Member Functions

Constructor and setup
 TimeIntegrator (const MPIEnsemble &mpi_ensemble, const Interface::HyperbolicSystem &hyperbolic_system, const Interface::ParabolicSystem &parabolic_system, const Interface::HyperbolicModule< dim, Number > &hyperbolic_module, const Interface::ParabolicModule< dim, Number > &parabolic_module, const std::string &subsection="/TimeIntegrator")
 
void prepare () override
 
Functions for performing explicit time steps
void prepare_state_vector (StateVector< Number > &state_vector, Number t) const override
 
Number step (StateVector< Number > &state_vector, Number t, Number tau, Number tau_max=std::numeric_limits< Number >::max()) override
 
Setup
Functions for performing time steps

Additional Inherited Members

- Protected Member Functions inherited from ryujin::Interface::TimeIntegrator< dim, Number >
 TimeIntegrator (const std::string &subsection)
 
- Protected Attributes inherited from ryujin::Interface::TimeIntegrator< dim, Number >
std::string time_stepping_scheme_name_
 
Number efficiency_
 

Detailed Description

template<int dim, typename Number = double>
class ryujin::TimeIntegrator< dim, Number >

The TimeIntegrator class implements Interface::TimeIntegrator with IMEX timestepping strategies based on explicit and diagonally-implicit Runge Kutta schemes.

Definition at line 265 of file time_integrator.h.

Constructor & Destructor Documentation

◆ TimeIntegrator()

template<int dim, typename Number = double>
ryujin::TimeIntegrator< dim, Number >::TimeIntegrator ( const MPIEnsemble &  mpi_ensemble,
const Interface::HyperbolicSystem &  hyperbolic_system,
const Interface::ParabolicSystem &  parabolic_system,
const Interface::HyperbolicModule< dim, Number > &  hyperbolic_module,
const Interface::ParabolicModule< dim, Number > &  parabolic_module,
const std::string &  subsection = "/TimeIntegrator< dim, Number >" 
)

Constructor.

Member Function Documentation

◆ prepare()

template<int dim, typename Number = double>
void ryujin::TimeIntegrator< dim, Number >::prepare ( )
overridevirtual

Prepare time integration. A call to prepare() allocates temporary storage and is necessary before any of the following time-stepping functions can be called.

Implements ryujin::Interface::TimeIntegrator< dim, Number >.

◆ prepare_state_vector()

template<int dim, typename Number = double>
void ryujin::TimeIntegrator< dim, Number >::prepare_state_vector ( StateVector< Number > &  state_vector,
Number  t 
) const
overridevirtual

This function preprocesses a given state vector U for time stepping. It has to be called prior to step() to ensure that precomputed values are in place.

Note
Internally, this function first calls the ParabolicModule::prepare_state_vector() and afterwards HyperbolicModule::prepare_state_vector().

Implements ryujin::Interface::TimeIntegrator< dim, Number >.

◆ step()

template<int dim, typename Number = double>
Number ryujin::TimeIntegrator< dim, Number >::step ( StateVector< Number > &  state_vector,
Number  t,
Number  tau,
Number  tau_max = std::numeric_limits< Number >::max() 
)
overridevirtual

Given a reference to a previous state vector U at time t performs a time step (and store the result in U). The function returns the time step size tau with which the update was performed.

If tau is nonzero the step is performed with tau. A Restart signalled during such a step is passed on to the caller. If tau is 0 the time step size is chosen such that it is less than or equal to tau_max and the run time parameter "tau_max".

Note
This function switches between different Runge-Kutta methods depending on chosen runtime parameters.
Depending on chosen run time parameters different CFL adaptation and recovery strategies for invariant domain violations are used.
Precondition
The state_vector has to be prepared with the prepare_state_vector() function prior to calling the step() function.

Implements ryujin::Interface::TimeIntegrator< dim, Number >.


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