15#include <deal.II/base/parameter_acceptor.h>
16#include <deal.II/base/tensor.h>
25 template <
int dim,
typename Number>
26 class HyperbolicSystemView;
40 "Skeleton Hyperbolic System";
46 : ParameterAcceptor(subsection)
56 template <
int dim,
typename Number>
63 template <
int dim,
typename Number>
73 template <
int dim,
typename Number>
82 : hyperbolic_system_(hyperbolic_system)
89 template <
int dim2,
typename Number2>
118 using state_type = dealii::Tensor<1, problem_dimension, Number>;
124 dealii::Tensor<1, problem_dimension, dealii::Tensor<1, dim, Number>>;
136 []() -> std::array<std::string, problem_dimension> {
137 if constexpr (dim == 1)
139 else if constexpr (dim == 2)
141 else if constexpr (dim == 3)
151 []() -> std::array<std::string, problem_dimension> {
152 if constexpr (dim == 1)
154 else if constexpr (dim == 2)
156 else if constexpr (dim == 3)
175 std::array<std::string, n_precomputed_values>{};
186 std::array<Number, n_initial_precomputed_values>;
192 std::array<std::string, n_initial_precomputed_values>{};
198 StateVector<ScalarNumber, problem_dimension, n_precomputed_values>;
235 template <
typename DISPATCH,
typename SPARSITY>
237 const DISPATCH &dispatch_check,
241 unsigned int )
const =
delete;
268 template <
typename Lambda>
270 const dealii::types::boundary_id ,
272 const dealii::Tensor<1, dim, Number> & ,
273 const Lambda & )
const
315 const unsigned int * ,
328 const dealii::Tensor<1, dim, Number> & )
const
341 const dealii::Tensor<1, dim, Number> &)
const =
delete;
358 const unsigned int * ,
378 template <
typename ST>
390 return primitive_state;
407 template <
typename Lambda>
409 const Lambda & )
const
std::array< Number, n_precomputed_values > precomputed_type
state_type apply_galilei_transform(const state_type &state, const Lambda &) const
bool is_admissible(const state_type &) const
static constexpr unsigned int n_precomputed_values
static const auto precomputed_names
static constexpr bool have_high_order_flux
state_type nodal_source(const PrecomputedVector &, const unsigned int *, const state_type &, const ScalarNumber) const =delete
state_type nodal_source(const PrecomputedVector &, const unsigned int, const state_type &, const ScalarNumber) const =delete
dealii::Tensor< 1, problem_dimension, Number > state_type
HyperbolicSystemView(const HyperbolicSystem &hyperbolic_system)
state_type expand_state(const ST &state) const
typename get_value_type< Number >::type ScalarNumber
dealii::Tensor< 1, problem_dimension, dealii::Tensor< 1, dim, Number > > flux_type
state_type apply_boundary_conditions(const dealii::types::boundary_id, const state_type &U, const dealii::Tensor< 1, dim, Number > &, const Lambda &) const
static const auto primitive_component_names
Vectors::StateVector< ScalarNumber, problem_dimension, n_precomputed_values > StateVector
static constexpr bool have_source_terms
void precomputation_loop(unsigned int, const DISPATCH &dispatch_check, const SPARSITY &, StateVector &, unsigned int, unsigned int) const =delete
state_type high_order_flux_divergence(const flux_contribution_type &, const flux_contribution_type &, const dealii::Tensor< 1, dim, Number > &) const =delete
flux_contribution_type flux_contribution(const PrecomputedVector &, const InitialPrecomputedVector &, const unsigned int *, const state_type &) const
state_type flux_divergence(const flux_contribution_type &, const flux_contribution_type &, const dealii::Tensor< 1, dim, Number > &) const
static constexpr unsigned int n_precomputation_cycles
flux_contribution_type flux_contribution(const PrecomputedVector &, const InitialPrecomputedVector &, const unsigned int, const state_type &) const
static const auto component_names
static constexpr unsigned int problem_dimension
static constexpr unsigned int n_initial_precomputed_values
state_type to_primitive_state(const state_type &state) const
state_type from_primitive_state(const state_type &primitive_state) const
flux_type flux_contribution_type
std::array< Number, n_initial_precomputed_values > initial_precomputed_type
static const auto initial_precomputed_names
static const std::string problem_name
HyperbolicSystem(const std::string &subsection="/HyperbolicSystem")