ryujin 2.5.0 revision 3a6c8d57210175dea14d8116e1fe878f349f8c1c
Loading...
Searching...
No Matches
ryujin::Concept::HyperbolicSystemView Concept Reference

#include <include/ryujin/concept/hyperbolic_system.h>

Concept definition

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::PrecomputedVectorView &precomputed,
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>;
{
view.flux_contribution(precomputed, initial, i, U)
} -> std::same_as<typename V::flux_contribution_type>;
{
view.flux_contribution(precomputed, initial, js, U)
} -> 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::PrecomputedVectorView &precomputed,
const typename V::ScalarNumber tau,
const unsigned int i,
const unsigned int *js) {
{
view.nodal_source(precomputed, i, U, tau)
} -> std::same_as<typename V::state_type>;
{
view.nodal_source(precomputed, js, U, tau)
} -> std::same_as<typename V::state_type>;
})

Detailed Description

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.