8#include <compile_time_options.h>
16#include <deal.II/base/parameter_acceptor.h>
17#include <deal.II/base/timer.h>
18#include <deal.II/lac/sparse_matrix.templates.h>
19#include <deal.II/lac/vector.h>
74 template <
typename Description,
int dim,
typename Number =
double>
87 typename HyperbolicSystem::template View<dim, Number>;
93 HyperbolicSystemView::problem_dimension;
98 using state_type =
typename HyperbolicSystemView::state_type;
103 using flux_type =
typename HyperbolicSystemView::flux_type;
119 HyperbolicSystemView::n_precomputed_values;
125 HyperbolicSystemView::n_precomputation_cycles;
131 typename HyperbolicSystemView::precomputed_vector_type;
137 HyperbolicSystemView::n_precomputed_initial_values;
143 typename HyperbolicSystemView::precomputed_initial_vector_type;
150 const MPI_Comm &mpi_communicator,
151 std::map<std::string, dealii::Timer> &computing_timer,
155 const std::string &subsection =
"/HyperbolicModule");
227 template <
int stages>
230 std::array<std::reference_wrapper<const vector_type>, stages> stage_U,
231 std::array<std::reference_wrapper<const precomputed_vector_type>,
232 stages> stage_precomputed,
233 const std::array<Number, stages> stage_weights,
236 Number tau = Number(0.))
const;
260 void cfl(Number new_cfl)
const
262 Assert(cfl_ > Number(0.), dealii::ExcInternalError());
319 unsigned int limiter_iter_;
320 Number limiter_newton_tolerance_;
321 unsigned int limiter_newton_max_iter_;
322 Number limiter_relaxation_factor_;
324 bool cfl_with_boundary_dofs_;
334 const MPI_Comm &mpi_communicator_;
335 std::map<std::
string, dealii::Timer> &computing_timer_;
337 dealii::SmartPointer<const
OfflineData<dim, Number>> offline_data_;
344 mutable
unsigned int n_restarts_;
346 mutable
unsigned int n_warnings_;
352 static constexpr auto n_bounds =
auto & hyperbolic_system() const
static constexpr unsigned int problem_dimension
static constexpr unsigned int n_precomputation_cycles
typename Description::HyperbolicSystem HyperbolicSystem
HyperbolicModule(const MPI_Comm &mpi_communicator, std::map< std::string, dealii::Timer > &computing_timer, const OfflineData< dim, Number > &offline_data, const HyperbolicSystem &hyperbolic_system, const InitialValues< Description, dim, Number > &initial_values, const std::string &subsection="/HyperbolicModule")
typename HyperbolicSystemView::precomputed_vector_type precomputed_vector_type
typename HyperbolicSystem::template View< dim, Number > HyperbolicSystemView
typename HyperbolicSystemView::precomputed_initial_vector_type precomputed_initial_vector_type
void apply_boundary_conditions(vector_type &U, Number t) const
auto & precomputed_initial() const
typename HyperbolicSystemView::state_type state_type
auto & n_warnings() const
static constexpr unsigned int n_precomputed_values
auto & n_restarts() const
typename OfflineData< dim, Number >::scalar_type scalar_type
void cfl(Number new_cfl) const
IDViolationStrategy id_violation_strategy_
typename HyperbolicSystemView::vector_type vector_type
Number step(const vector_type &old_U, std::array< std::reference_wrapper< const vector_type >, stages > stage_U, std::array< std::reference_wrapper< const precomputed_vector_type >, stages > stage_precomputed, const std::array< Number, stages > stage_weights, vector_type &new_U, precomputed_vector_type &new_precomputed, Number tau=Number(0.)) const
auto & offline_data() const
typename HyperbolicSystemView::flux_type flux_type
static constexpr unsigned int n_precomputed_initial_values
#define ACCESSOR_READ_ONLY(member)
Euler::HyperbolicSystem HyperbolicSystem