template<typename V, int dim, typename Number>
requires {
typename V::ScalarNumber;
typename V::flux_contribution_type;
typename V::PrecomputedVectorView;
typename V::InitialPrecomputedVectorView;
{
V::have_high_order_flux
} -> std::convertible_to<bool>;
{
V::have_source_terms
} -> std::convertible_to<bool>;
} &&
std::same_as<typename V::state_type,
dealii::Tensor<1, V::problem_dimension, Number>> &&
std::same_as<typename V::precomputed_type,
std::array<Number, V::n_precomputed_values>> &&
std::same_as<typename V::initial_precomputed_type,
std::array<Number, V::n_initial_precomputed_values>> &&
requires(const V &view,
const typename V::state_type &U,
const typename V::flux_contribution_type &flux,
const typename V::InitialPrecomputedVectorView &initial,
const dealii::Tensor<1, dim, Number> &c_ij,
const dealii::types::boundary_id id,
typename V::state_type (&get_dirichlet_data)(),
const unsigned int i,
const unsigned int *js) {
{
view.is_admissible(U)
} -> std::convertible_to<bool>;
{
view.apply_boundary_conditions(id, U, c_ij, get_dirichlet_data)
} -> std::same_as<typename V::state_type>;
{
} -> std::same_as<typename V::flux_contribution_type>;
{
} -> std::same_as<typename V::flux_contribution_type>;
{
view.flux_divergence(flux, flux, c_ij)
} -> std::same_as<typename V::state_type>;
{
view.to_primitive_state(U)
} -> std::same_as<typename V::state_type>;
{
view.from_primitive_state(U)
} -> std::same_as<typename V::state_type>;
} &&
(!V::have_high_order_flux ||
requires(const V &view,
const typename V::flux_contribution_type &flux,
const dealii::Tensor<1, dim, Number> &c_ij) {
{
view.high_order_flux_divergence(flux, flux, c_ij)
} -> std::same_as<typename V::state_type>;
}) &&
(!V::have_source_terms ||
requires(const V &view,
const typename V::state_type &U,
const typename V::ScalarNumber tau,
const unsigned int i,
const unsigned int *js) {
{
} -> std::same_as<typename V::state_type>;
{
} -> std::same_as<typename V::state_type>;
})
The view of a hyperbolic system: sizes and types of the state and the kernels that the generic modules call. All names are stored in Interface::HyperbolicSystem.
Definition at line 56 of file hyperbolic_system.h.