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>
119 using state_type = dealii::Tensor<1, problem_dimension, Number>;
125 dealii::Tensor<1, problem_dimension, dealii::Tensor<1, dim, Number>>;
137 []() -> std::array<std::string, problem_dimension> {
138 if constexpr (dim == 1)
140 else if constexpr (dim == 2)
142 else if constexpr (dim == 3)
152 []() -> std::array<std::string, problem_dimension> {
153 if constexpr (dim == 1)
155 else if constexpr (dim == 2)
157 else if constexpr (dim == 3)
176 std::array<std::string, n_precomputed_values>{};
187 std::array<Number, n_initial_precomputed_values>;
193 std::array<std::string, n_initial_precomputed_values>{};
199 StateVector<ScalarNumber, problem_dimension, n_precomputed_values>;
236 template <
typename DISPATCH,
typename SPARSITY>
238 const DISPATCH &dispatch_check,
242 unsigned int )
const =
delete;
269 template <
typename Lambda>
271 const dealii::types::boundary_id ,
273 const dealii::Tensor<1, dim, Number> & ,
274 const Lambda & )
const
316 const unsigned int * ,
329 const dealii::Tensor<1, dim, Number> & )
const
342 const dealii::Tensor<1, dim, Number> &)
const =
delete;
359 const unsigned int * ,
379 template <
typename ST>
391 return primitive_state;
408 template <
typename Lambda>
410 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")