12 using namespace dealii;
14 template <
typename Description,
int dim,
typename Number>
17 std::map<std::string, dealii::Timer> &computing_timer,
22 const std::string &subsection )
23 : ParameterAcceptor(subsection)
25 , parabolic_solver_(mpi_ensemble,
39 template <
typename Description,
int dim,
typename Number>
43 std::cout <<
"ParabolicModule<Description, dim, Number>::prepare()"
46 if constexpr (!ParabolicSystem::is_identity)
47 parabolic_solver_.prepare();
53 template <
typename Description,
int dim,
typename Number>
58 std::array<std::reference_wrapper<const StateVector>,
60 const std::array<Number, stages> ,
64 if constexpr (ParabolicSystem::is_identity) {
67 dealii::ExcMessage(
"The parabolic system is the identity. This "
68 "function should have never been called."));
73 AssertThrow(stages == 0,
74 dealii::ExcMessage(
"Although IMEX schemes are implemented, "
75 "the high order fluxes are not. "));
77 const bool reinit_gmg = cycle_++ % 4 == 0;
78 parabolic_solver_.backward_euler_step(old_state_vector,
82 id_violation_strategy_,
86 n_restarts_ = parabolic_solver_.n_restarts();
87 n_corrections_ = parabolic_solver_.n_corrections();
88 n_warnings_ = parabolic_solver_.n_warnings();
93 template <
typename Description,
int dim,
typename Number>
100 if constexpr (ParabolicSystem::is_identity) {
103 dealii::ExcMessage(
"The parabolic system is the identity. This "
104 "function should have never been called."));
109 const bool reinit_gmg = cycle_++ % 4 == 0;
110 parabolic_solver_.crank_nicolson_step(old_state_vector,
114 id_violation_strategy_,
118 n_restarts_ = parabolic_solver_.n_restarts();
119 n_corrections_ = parabolic_solver_.n_corrections();
120 n_warnings_ = parabolic_solver_.n_warnings();
125 template <
typename Description,
int dim,
typename Number>
127 std::ostream &output)
const
129 if constexpr (!ParabolicSystem::is_identity) {
130 parabolic_solver_.print_solver_statistics(output);
typename View::StateVector StateVector
void crank_nicolson_step(const StateVector &old_state_vector, const Number old_t, StateVector &new_state_vector, Number tau) const
typename Description::ParabolicSystem ParabolicSystem
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")
typename Description::HyperbolicSystem HyperbolicSystem
void print_solver_statistics(std::ostream &output) const
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