151 dealii::LinearAlgebra::distributed::BlockVector<Number>;
174 const std::string &subsection =
"/ParabolicModule");
216 template <
int stages>
220 std::array<std::reference_wrapper<const StateVector>,
221 stages> stage_state_vectors,
222 const std::array<Number, stages> stage_weights,
244 id_violation_strategy_ = strategy;
287 unsigned int gmg_max_iter_;
288 double gmg_smoother_range_;
289 double gmg_smoother_max_eig_;
290 unsigned int gmg_smoother_degree_;
291 unsigned int gmg_smoother_n_cg_iter_;
292 unsigned int gmg_min_level_;
295 bool tolerance_linfty_norm_;
304 static constexpr unsigned int order_fe = 1;
305 static constexpr unsigned int order_quad = 2;
309 dealii::ObserverPointer<const HyperbolicSystem> hyperbolic_system_;
310 dealii::ObserverPointer<const ParabolicSystem> parabolic_system_;
311 dealii::ObserverPointer<const ryujin::OfflineData<dim, Number>>
313 dealii::ObserverPointer<
317 ElectrostaticConfigurationLibrary::
318 electrostatic_configuration_list_type<dim, Number>
319 electrostatic_configuration_list_;
321 std::shared_ptr<ElectrostaticConfigurationLibrary::
322 ElectrostaticConfiguration<dim, Number>>
323 selected_electrostatic_configuration_;
327 mutable unsigned int cycle_;
328 mutable double n_iterations_gauss_;
329 mutable double n_iterations_step_;
331 mutable unsigned int n_restarts_;
332 mutable unsigned int n_corrections_;
333 mutable unsigned int n_warnings_;
335 dealii::MatrixFree<dim, Number> matrix_free_;
336 dealii::AffineConstraints<Number> affine_constraints_potential_;
339 dealii::DiagonalMatrix<ScalarHostVector> diagonal_preconditioner_;
349 mutable bool potential_initialized_;
350 mutable Number t_background_density_;
351 mutable Number t_magnetic_field_;
361 void create_constraints();
369 void update_background_density(
const Number t)
const;
377 void update_magnetic_field(
const Number t)
const;
383 void compute_potential(
const Number t,
StateVector &state_vector)
const;
389 void enforce_magnetic_drift_velocity(
StateVector &state_vector)
const;
404 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