172 const std::string &subsection =
"/ParabolicModule");
214 template <
int stages>
218 std::array<std::reference_wrapper<const StateVector>,
219 stages> stage_state_vectors,
220 const std::array<Number, stages> stage_weights,
242 id_violation_strategy_ = strategy;
285 unsigned int gmg_max_iter_;
286 double gmg_smoother_range_;
287 double gmg_smoother_max_eig_;
288 unsigned int gmg_smoother_degree_;
289 unsigned int gmg_smoother_n_cg_iter_;
290 unsigned int gmg_min_level_;
293 bool tolerance_linfty_norm_;
302 static constexpr unsigned int order_fe = 1;
303 static constexpr unsigned int order_quad = 2;
307 dealii::ObserverPointer<const HyperbolicSystem> hyperbolic_system_;
308 dealii::ObserverPointer<const ParabolicSystem> parabolic_system_;
309 dealii::ObserverPointer<const ryujin::OfflineData<dim, Number>>
311 dealii::ObserverPointer<
315 ElectrostaticConfigurationLibrary::
316 electrostatic_configuration_list_type<dim, Number>
317 electrostatic_configuration_list_;
319 std::shared_ptr<ElectrostaticConfigurationLibrary::
320 ElectrostaticConfiguration<dim, Number>>
321 selected_electrostatic_configuration_;
325 mutable unsigned int cycle_;
326 mutable double n_iterations_gauss_;
327 mutable double n_iterations_step_;
329 mutable unsigned int n_restarts_;
330 mutable unsigned int n_corrections_;
331 mutable unsigned int n_warnings_;
333 dealii::MatrixFree<dim, Number> matrix_free_;
334 dealii::AffineConstraints<Number> affine_constraints_potential_;
337 dealii::DiagonalMatrix<ScalarHostVector> diagonal_preconditioner_;
347 mutable bool potential_initialized_;
348 mutable Number t_background_density_;
349 mutable Number t_magnetic_field_;
359 void create_constraints();
367 void update_background_density(
const Number t)
const;
375 void update_magnetic_field(
const Number t)
const;
381 void compute_potential(
const Number t,
StateVector &state_vector)
const;
387 void enforce_magnetic_drift_velocity(
StateVector &state_vector)
const;
402 const bool crank_nicolson_extrapolation)
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