ryujin 2.1.1 revision d0a94ad2ccc0c4c2e8c2485c52b06b90e2fc9853
|
#include <source/time_integrator.h>
Public Types | |
using | HyperbolicSystem = typename Description::HyperbolicSystem |
using | ParabolicSystem = typename Description::ParabolicSystem |
using | View = typename Description::template HyperbolicSystemView< dim, Number > |
using | vector_type = MultiComponentVector< Number, problem_dimension > |
using | precomputed_type = MultiComponentVector< Number, n_precomputed_values > |
Public Member Functions | |
TimeIntegrator (const MPI_Comm &mpi_communicator, std::map< std::string, dealii::Timer > &computing_timer, const OfflineData< dim, Number > &offline_data, const HyperbolicModule< Description, dim, Number > &hyperbolic_module, const ParabolicModule< Description, dim, Number > ¶bolic_module, const std::string &subsection="/TimeIntegrator") | |
void | prepare () |
Static Public Attributes | |
static constexpr unsigned int | problem_dimension = View::problem_dimension |
static constexpr unsigned int | n_precomputed_values |
Functions for performing explicit time steps | |
Number | step (vector_type &U, Number t) |
auto & | time_stepping_scheme () const |
auto & | efficiency () const |
Number | step_ssprk_22 (vector_type &U, Number t) |
Number | step_ssprk_33 (vector_type &U, Number t) |
Number | step_erk_11 (vector_type &U, Number t) |
Number | step_erk_22 (vector_type &U, Number t) |
Number | step_erk_33 (vector_type &U, Number t) |
Number | step_erk_43 (vector_type &U, Number t) |
Number | step_erk_54 (vector_type &U, Number t) |
Number | step_strang_ssprk_33_cn (vector_type &U, Number t) |
Number | step_strang_erk_33_cn (vector_type &U, Number t) |
Number | step_strang_erk_43_cn (vector_type &U, Number t) |
The TimeIntegrator class implements IMEX timestepping strategies based on explicit and diagonally-implicit Runge Kutta schemes.
Definition at line 172 of file time_integrator.h.
using ryujin::TimeIntegrator< Description, dim, Number >::HyperbolicSystem = typename Description::HyperbolicSystem |
Definition at line 178 of file time_integrator.h.
using ryujin::TimeIntegrator< Description, dim, Number >::ParabolicSystem = typename Description::ParabolicSystem |
Definition at line 183 of file time_integrator.h.
using ryujin::TimeIntegrator< Description, dim, Number >::View = typename Description::template HyperbolicSystemView<dim, Number> |
Definition at line 188 of file time_integrator.h.
using ryujin::TimeIntegrator< Description, dim, Number >::vector_type = MultiComponentVector<Number, problem_dimension> |
Typedef for a MultiComponentVector storing the state U.
Definition at line 205 of file time_integrator.h.
using ryujin::TimeIntegrator< Description, dim, Number >::precomputed_type = MultiComponentVector<Number, n_precomputed_values> |
Typedef for a MultiComponentVector storing precomputed values.
Definition at line 210 of file time_integrator.h.
ryujin::TimeIntegrator< Description, dim, Number >::TimeIntegrator | ( | const MPI_Comm & | mpi_communicator, |
std::map< std::string, dealii::Timer > & | computing_timer, | ||
const OfflineData< dim, Number > & | offline_data, | ||
const HyperbolicModule< Description, dim, Number > & | hyperbolic_module, | ||
const ParabolicModule< Description, dim, Number > & | parabolic_module, | ||
const std::string & | subsection = "/TimeIntegrator< Description, dim, Number >" |
||
) |
Constructor.
Definition at line 15 of file time_integrator.template.h.
References ryujin::bang_bang_control, ryujin::erk_33, ryujin::ScalarConservation::ParabolicSystem::is_identity, and ryujin::strang_erk_33_cn.
void ryujin::TimeIntegrator< Description, dim, Number >::prepare |
Prepare time integration. A call to prepare() allocates temporary storage and is necessary before any of the following time-stepping functions can be called.
Definition at line 62 of file time_integrator.template.h.
References ryujin::erk_11, ryujin::erk_22, ryujin::erk_33, ryujin::erk_43, ryujin::erk_54, ryujin::ScalarConservation::ParabolicSystem::is_identity, ryujin::ssprk_22, ryujin::ssprk_33, ryujin::strang_erk_33_cn, ryujin::strang_erk_43_cn, and ryujin::strang_ssprk_33_cn.
Number ryujin::TimeIntegrator< Description, dim, Number >::step | ( | vector_type & | U, |
Number | t | ||
) |
Given a reference to a previous state vector U performs an explicit time step (and store the result in U). The function returns the chosen time step size tau.
Definition at line 190 of file time_integrator.template.h.
References ryujin::erk_11, ryujin::erk_22, ryujin::erk_33, ryujin::erk_43, ryujin::erk_54, ryujin::ssprk_22, ryujin::ssprk_33, and ryujin::strang_ssprk_33_cn.
|
inline |
The selected time-stepping scheme.
Definition at line 252 of file time_integrator.h.
|
inline |
The eficiency of the selected time-stepping scheme expressed as the ratio of step size of the combined method to step size of an elementary forward Euler step. For example, SSPRK33 has an efficiency ratio of 1 whereas ERK33 has an efficiency ratio of 3.
Definition at line 260 of file time_integrator.h.
|
protected |
Given a reference to a previous state vector U performs an explicit second-order strong-stability preserving Runge-Kutta SSPRK(2,2;1/2) time step (and store the result in U). The function returns the chosen time step size tau.
If the parameter tau
is set to a nonzero value then the supplied value is used for time stepping instead of the computed maximal time step size.
Definition at line 252 of file time_integrator.template.h.
|
protected |
Given a reference to a previous state vector U performs an explicit third-order strong-stability preserving Runge-Kutta SSPRK(3,3;1/3) time step (and store the result in U). The function returns the chosen time step size tau.
If the parameter tau
is set to a nonzero value then the supplied value is used for time stepping instead of the computed maximal time step size.
Definition at line 274 of file time_integrator.template.h.
|
protected |
Given a reference to a previous state vector U performs an explicit first-order Euler step ERK(1,1;1) time step (and store the result in U). The function returns the chosen time step size tau.
Definition at line 302 of file time_integrator.template.h.
|
protected |
Given a reference to a previous state vector U performs an explicit second-order Runge-Kutta ERK(2,2;1) time step (and store the result in U). The function returns the chosen time step size tau.
Definition at line 320 of file time_integrator.template.h.
|
protected |
Given a reference to a previous state vector U performs an explicit third-order Runge-Kutta ERK(3,3;1) time step (and store the result in U). The function returns the chosen time step size tau.
Definition at line 348 of file time_integrator.template.h.
|
protected |
Given a reference to a previous state vector U performs an explicit 4 stage third-order Runge-Kutta ERK(4,3;1) time step (and store the result in U). The function returns the chosen time step size tau.
Definition at line 386 of file time_integrator.template.h.
|
protected |
Given a reference to a previous state vector U performs an explicit 4 stage fourth-order Runge-Kutta ERK(5,4;1) time step (and store the result in U). The function returns the chosen time step size tau.
Definition at line 434 of file time_integrator.template.h.
|
protected |
Given a reference to a previous state vector U performs a combined explicit implicit Strang split using a third-order Runge-Kutta ERK(3,3;1/3) time step and an implicit Crank-Nicolson step (and store the result in U). The function returns the chosen time step size tau.
Definition at line 515 of file time_integrator.template.h.
|
protected |
Given a reference to a previous state vector U performs a combined explicit implicit Strang split using a third-order Runge-Kutta ERK(3,3;1) time step and an implicit Crank-Nicolson step (and store the result in U). The function returns the chosen time step size tau.
Definition at line 567 of file time_integrator.template.h.
|
protected |
Given a reference to a previous state vector U performs a combined explicit implicit Strang split using a third-order Runge-Kutta ERK(4,3;1) time step and an implicit Crank-Nicolson step (and store the result in U). The function returns the chosen time step size tau.
Definition at line 635 of file time_integrator.template.h.
|
staticconstexpr |
Definition at line 194 of file time_integrator.h.
|
staticconstexpr |
Definition at line 199 of file time_integrator.h.