125 typename Interface::ParabolicModule<dim, Number>::StageVectors;
128 typename Interface::ParabolicModule<dim, Number>::StageWeights;
139 dealii::LinearAlgebra::distributed::BlockVector<Number>;
162 const std::string &subsection =
"ParabolicModule");
195 Number t)
const override;
214 Number tau_max = std::numeric_limits<Number>::max())
const override;
226 Number tau_max = std::numeric_limits<Number>::max())
const override;
248 bool use_gmg_velocity_;
249 bool use_gmg_internal_energy_;
252 bool tolerance_linfty_norm_;
254 unsigned int gmg_max_iter_vel_;
255 unsigned int gmg_max_iter_en_;
256 double gmg_smoother_range_vel_;
257 double gmg_smoother_range_en_;
258 double gmg_smoother_max_eig_vel_;
259 double gmg_smoother_max_eig_en_;
260 unsigned int gmg_smoother_degree_;
261 unsigned int gmg_smoother_n_cg_iter_;
262 unsigned int gmg_min_level_;
271 static constexpr unsigned int order_fe = 1;
272 static constexpr unsigned int order_quad = 2;
276 dealii::ObserverPointer<const HyperbolicSystem> hyperbolic_system_;
277 dealii::ObserverPointer<const ParabolicSystem> parabolic_system_;
278 dealii::ObserverPointer<const ryujin::OfflineData<dim, Number>>
280 dealii::ObserverPointer<
284 mutable unsigned int cycle_;
285 mutable double n_iterations_velocity_;
286 mutable double n_iterations_internal_energy_;
288 mutable dealii::MatrixFree<dim, Number> matrix_free_;
296 mutable dealii::MGLevelObject<dealii::MatrixFree<dim, float>>
298 mutable dealii::MGConstrainedDoFs mg_constrained_dofs_;
299 mutable dealii::MGLevelObject<
300 dealii::LinearAlgebra::distributed::Vector<float>>
303 mutable dealii::MGLevelObject<VelocityMatrix<dim, float, Number>>
304 level_velocity_matrices_;
306 mutable dealii::MGLevelObject<EnergyMatrix<dim, float, Number>>
307 level_energy_matrices_;
309 mutable dealii::mg::SmootherRelaxation<
310 dealii::PreconditionChebyshev<
312 dealii::LinearAlgebra::distributed::BlockVector<float>,
314 dealii::LinearAlgebra::distributed::BlockVector<float>>
315 mg_smoother_velocity_;
317 mutable dealii::mg::SmootherRelaxation<
318 dealii::PreconditionChebyshev<
320 dealii::LinearAlgebra::distributed::Vector<float>>,
321 dealii::LinearAlgebra::distributed::Vector<float>>
336 template <
int stages>
357 const bool crank_nicolson_extrapolation)
const;
Number backward_euler_step(const StateVector< Number > &old_state_vector, StageVectors stage_state_vectors, StageWeights stage_weights, StateVector< Number > &new_state_vector, Number t, Number tau, Number tau_max=std::numeric_limits< Number >::max()) const override