![]() |
ryujin 2.1.1 revision 2a854fb0d4e6d04a038cc316dc02ab35814ea246
|
#include <source/parabolic_module.h>
Public Types | |
Typedefs and constexpr constants | |
using | HyperbolicSystem = typename Description::HyperbolicSystem |
using | View = typename Description::template HyperbolicSystemView< dim, Number > |
using | ParabolicSystem = typename Description::ParabolicSystem |
using | ParabolicSolver = typename Description::template ParabolicSolver< dim, Number > |
using | StateVector = typename View::StateVector |
Public Member Functions | |
Constructor and setup | |
ParabolicModule (const MPIEnsemble &mpi_ensemble, std::map< std::string, dealii::Timer > &computing_timer, const OfflineData< dim, Number > &offline_data, const HyperbolicSystem &hyperbolic_system, const ParabolicSystem ¶bolic_system, const InitialValues< Description, dim, Number > &initial_values, const std::string &subsection="/ParabolicModule") | |
void | prepare () |
Functons for performing explicit time steps | |
void | prepare_state_vector (StateVector &state_vector, Number t) const |
template<int stages> | |
void | backward_euler_step (const StateVector &old_state_vector, const Number old_t, std::array< std::reference_wrapper< const StateVector >, stages > stage_state_vectors, const std::array< Number, stages > stage_weights, StateVector &new_state_vector, Number tau) const |
void | crank_nicolson_step (const StateVector &old_state_vector, const Number old_t, StateVector &new_state_vector, Number tau) const |
void | print_solver_statistics (std::ostream &output) const |
Accessors | |
IDViolationStrategy | id_violation_strategy_ |
const auto & | n_restarts () const |
const auto & | n_corrections () const |
const auto & | n_warnings () const |
Implicit backward Euler time-stepping and Crank-Nicolson time-stepping for the parabolic subsystem.
Definition at line 33 of file parabolic_module.h.
using ryujin::ParabolicModule< Description, dim, Number >::HyperbolicSystem = typename Description::HyperbolicSystem |
Definition at line 41 of file parabolic_module.h.
using ryujin::ParabolicModule< Description, dim, Number >::View = typename Description::template HyperbolicSystemView<dim, Number> |
Definition at line 43 of file parabolic_module.h.
using ryujin::ParabolicModule< Description, dim, Number >::ParabolicSystem = typename Description::ParabolicSystem |
Definition at line 46 of file parabolic_module.h.
using ryujin::ParabolicModule< Description, dim, Number >::ParabolicSolver = typename Description::template ParabolicSolver<dim, Number> |
Definition at line 48 of file parabolic_module.h.
using ryujin::ParabolicModule< Description, dim, Number >::StateVector = typename View::StateVector |
Definition at line 51 of file parabolic_module.h.
ryujin::ParabolicModule< Description, dim, Number >::ParabolicModule | ( | const MPIEnsemble & | mpi_ensemble, |
std::map< std::string, dealii::Timer > & | computing_timer, | ||
const OfflineData< dim, Number > & | offline_data, | ||
const HyperbolicSystem & | hyperbolic_system, | ||
const ParabolicSystem & | parabolic_system, | ||
const InitialValues< Description, dim, Number > & | initial_values, | ||
const std::string & | subsection = "/ParabolicModule< Description, dim, Number >" |
||
) |
void ryujin::ParabolicModule< Description, dim, Number >::prepare |
Prepare time stepping. A call to prepare()
allocates temporary storage and is necessary before any of the following time-stepping functions can be called.
Definition at line 40 of file parabolic_module.template.h.
void ryujin::ParabolicModule< Description, dim, Number >::prepare_state_vector | ( | StateVector & | state_vector, |
Number | t | ||
) | const |
This function preprocesses a given state vector U
in preparation for a high order IMEX time step. This function exists because some time stepping variants have to precompute quantities before we can perform an IMEX step. In addition, this function is called whenever we perform a mesh transfer or output operation.
Definition at line 54 of file parabolic_module.template.h.
void ryujin::ParabolicModule< Description, dim, Number >::backward_euler_step | ( | const StateVector & | old_state_vector, |
const Number | old_t, | ||
std::array< std::reference_wrapper< const StateVector >, stages > | stage_state_vectors, | ||
const std::array< Number, stages > | stage_weights, | ||
StateVector & | new_state_vector, | ||
Number | tau | ||
) | const |
Given a reference to a previous state vector old_U
at time old_t
and a time-step size tau
perform an implicit backward euler step (and store the result in new_U
).
The function takes an optional array of states stage_U
together with a an array of weights stage_weights
to construct a modified high-order right-hand side / flux.
Definition at line 78 of file parabolic_module.template.h.
void ryujin::ParabolicModule< Description, dim, Number >::crank_nicolson_step | ( | const StateVector & | old_state_vector, |
const Number | old_t, | ||
StateVector & | new_state_vector, | ||
Number | tau | ||
) | const |
Given a reference to a previous state vector old_U
at time old_t
and a time-step size tau
perform an implicit Crank-Nicolson step (and store the result in new_U
).
This variant is used in the TimeIntegrator class for the Strang split variants.
Definition at line 117 of file parabolic_module.template.h.
void ryujin::ParabolicModule< Description, dim, Number >::print_solver_statistics | ( | std::ostream & | output | ) | const |
Print a status line with solver statistics. This function is used for constructing the status message displayed periodically in the TimeLoop.
Definition at line 149 of file parabolic_module.template.h.
|
inline |
The number of restarts signalled by the step() function.
Definition at line 140 of file parabolic_module.h.
|
inline |
The number of corrections performed by the step() function. This function exists to mirror the ParabolicModule interface and will always return 0.
Definition at line 148 of file parabolic_module.h.
|
inline |
The number of ID violation warnings encounterd in the step() function.
Definition at line 154 of file parabolic_module.h.
|
mutable |
Definition at line 157 of file parabolic_module.h.