144 typename Interface::ParabolicModule<dim, Number>::StageVectors;
147 typename Interface::ParabolicModule<dim, Number>::StageWeights;
156 dealii::LinearAlgebra::distributed::BlockVector<Number>;
179 const std::string &subsection =
"/ParabolicModule");
212 Number t)
const override;
231 Number tau_max = std::numeric_limits<Number>::max())
const override;
246 Number tau_max = std::numeric_limits<Number>::max())
const override;
270 unsigned int gmg_max_iter_;
271 double gmg_smoother_range_;
272 double gmg_smoother_max_eig_;
273 unsigned int gmg_smoother_degree_;
274 unsigned int gmg_smoother_n_cg_iter_;
275 unsigned int gmg_min_level_;
278 bool tolerance_linfty_norm_;
287 static constexpr unsigned int order_fe = 1;
288 static constexpr unsigned int order_quad = 2;
292 dealii::ObserverPointer<const HyperbolicSystem> hyperbolic_system_;
293 dealii::ObserverPointer<const ParabolicSystem> parabolic_system_;
294 dealii::ObserverPointer<const ryujin::OfflineData<dim, Number>>
296 dealii::ObserverPointer<
300 std::vector<std::unique_ptr<ElectrostaticConfiguration<dim, Number>>>
301 electrostatic_configuration_list_;
304 *selected_electrostatic_configuration_ =
nullptr;
306 mutable unsigned int cycle_;
307 mutable double n_iterations_gauss_;
308 mutable double n_iterations_step_;
310 dealii::MatrixFree<dim, Number> matrix_free_;
311 dealii::AffineConstraints<Number> affine_constraints_potential_;
314 dealii::DiagonalMatrix<ScalarHostVector<Number>> diagonal_preconditioner_;
324 mutable bool potential_initialized_;
325 mutable Number t_background_density_;
326 mutable Number t_magnetic_field_;
339 template <
int stages>
350 void create_constraints();
358 void update_background_density(
const Number t)
const;
366 void update_magnetic_field(
const Number t)
const;
372 void compute_potential(
const Number t,
395 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