![]() |
ryujin 2.1.1 revision 71cbe157f0746717db03d7e1e977da66a7d7bfb5
|
#include <source/scalar_conservation/hyperbolic_system.h>
Public Member Functions | |
Constructor and setup | |
| HyperbolicSystemView (const HyperbolicSystem &hyperbolic_system) | |
Access to runtime parameters | |
| DEAL_II_ALWAYS_INLINE const std::string & | flux () const |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber | derivative_approximation_delta () const |
Low-level access to the flux function parser | |
| |
| DEAL_II_ALWAYS_INLINE dealii::Tensor< 1, dim, Number > | flux_function (const Number &u) const |
| DEAL_II_ALWAYS_INLINE dealii::Tensor< 1, dim, Number > | flux_gradient_function (const Number &u) const |
Special functions for boundary states | |
| template<typename Lambda > | |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE state_type | apply_boundary_conditions (const dealii::types::boundary_id id, const state_type &U, const dealii::Tensor< 1, dim, Number > &normal, const Lambda &get_dirichlet_data) const |
State transformations | |
| template<typename ST > | |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE state_type | expand_state (const ST &state) const |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE state_type | from_primitive_state (const state_type &primitive_state) const |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE state_type | to_primitive_state (const state_type &state) const |
| template<typename Lambda > | |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE state_type | apply_galilei_transform (const state_type &state, const Lambda &) const |
Typedefs and constexpr constants | |
| using | ScalarNumber = typename get_value_type< Number >::type |
| using | state_type = dealii::Tensor< 1, problem_dimension, Number > |
| using | flux_type = dealii::Tensor< 1, problem_dimension, dealii::Tensor< 1, dim, Number > > |
| using | flux_contribution_type = flux_type |
| using | precomputed_type = std::array< Number, n_precomputed_values > |
| using | initial_precomputed_type = std::array< Number, n_initial_precomputed_values > |
| template<int n_comp> | |
| using | VectorView = MultiComponentVectorView< ScalarNumber, n_comp, MemorySpace, false > |
| using | PrecomputedVectorView = VectorView< n_precomputed_values > |
| using | InitialPrecomputedVectorView = VectorView< n_initial_precomputed_values > |
| static constexpr unsigned int | problem_dimension = 1 |
| static const auto | component_names |
| static const auto | primitive_component_names |
| static constexpr unsigned int | n_precomputed_values = 2 * dim |
| static const auto | precomputed_names |
| static constexpr unsigned int | n_initial_precomputed_values = 0 |
| static const auto | initial_precomputed_names |
Flux computations | |
| static constexpr bool | have_high_order_flux = false |
| DEAL_II_HOST_DEVICE dealii::Tensor< 1, dim, Number > | construct_flux_tensor (const precomputed_type &precomputed_state) const |
| DEAL_II_HOST_DEVICE dealii::Tensor< 1, dim, Number > | construct_flux_gradient_tensor (const precomputed_type &precomputed_state) const |
| DEAL_II_HOST_DEVICE flux_contribution_type | flux_contribution (const PrecomputedVectorView &pv, const InitialPrecomputedVectorView &, const unsigned int i, const state_type &) const |
| DEAL_II_HOST_DEVICE flux_contribution_type | flux_contribution (const PrecomputedVectorView &pv, const InitialPrecomputedVectorView &, const unsigned int *js, const state_type &) const |
| DEAL_II_HOST_DEVICE state_type | flux_divergence (const flux_contribution_type &flux_i, const flux_contribution_type &flux_j, const dealii::Tensor< 1, dim, Number > &c_ij) const |
| state_type | high_order_flux_divergence (const flux_contribution_type &, const flux_contribution_type &, const dealii::Tensor< 1, dim, Number > &c_ij) const =delete |
Computing stencil source terms | |
| static constexpr bool | have_source_terms = false |
| state_type | nodal_source (const PrecomputedVectorView &pv, const unsigned int i, const state_type &U_i, const ScalarNumber tau) const =delete |
| state_type | nodal_source (const PrecomputedVectorView &pv, const unsigned int *js, const state_type &U_j, const ScalarNumber tau) const =delete |
Computing derived physical quantities | |
| DEAL_II_HOST_DEVICE Number | square_entropy (const Number &u) const |
| DEAL_II_HOST_DEVICE Number | square_entropy_derivative (const Number &u) const |
| DEAL_II_HOST_DEVICE Number | kruzkov_entropy (const Number &k, const Number &u) const |
| DEAL_II_HOST_DEVICE Number | kruzkov_entropy_derivative (const Number &k, const Number &u) const |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE bool | is_admissible (const state_type &) const |
| static DEAL_II_HOST_DEVICE Number | state (const state_type &U) |
A view on the HyperbolicSystem for a given dimension dim and choice of number type Number (which can be a scalar float, or double, as well as a VectorizedArray holding packed scalars.
Definition at line 148 of file hyperbolic_system.h.
| using ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::ScalarNumber = typename get_value_type<Number>::type |
The underlying scalar number type.
Definition at line 164 of file hyperbolic_system.h.
| using ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::state_type = dealii::Tensor<1, problem_dimension, Number> |
Storage type for a (conserved) state vector \(\boldsymbol U\).
Definition at line 174 of file hyperbolic_system.h.
| using ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::flux_type = dealii::Tensor<1, problem_dimension, dealii::Tensor<1, dim, Number> > |
Storage type for the flux \(\mathbf{f}\).
Definition at line 179 of file hyperbolic_system.h.
| using ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::flux_contribution_type = flux_type |
The storage type used for flux contributions.
Definition at line 185 of file hyperbolic_system.h.
| using ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::precomputed_type = std::array<Number, n_precomputed_values> |
Array type used for precomputed values.
Definition at line 209 of file hyperbolic_system.h.
| using ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::initial_precomputed_type = std::array<Number, n_initial_precomputed_values> |
Array type used for precomputed initial values.
Definition at line 233 of file hyperbolic_system.h.
| using ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::VectorView = MultiComponentVectorView<ScalarNumber, n_comp, MemorySpace, false> |
Definition at line 243 of file hyperbolic_system.h.
| using ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::PrecomputedVectorView = VectorView<n_precomputed_values> |
MulticomponentVectorView for accessing a vector of precomputed states:
Definition at line 250 of file hyperbolic_system.h.
| using ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::InitialPrecomputedVectorView = VectorView<n_initial_precomputed_values> |
MulticomponentVectorView for accessing a vector of precomputed initial states:
Definition at line 256 of file hyperbolic_system.h.
|
inline |
Constructor taking a reference to the underlying HyperbolicSystem
Definition at line 269 of file hyperbolic_system.h.
|
inline |
Return the name of the selected flux.
Definition at line 287 of file hyperbolic_system.h.
|
inline |
Definition at line 293 of file hyperbolic_system.h.
References ryujin::ScalarConservation::HyperbolicSystem::Parameters::derivative_approximation_delta.
|
inline |
For a given state \(u\) compute the flux \(f(u)\).
Definition at line 717 of file hyperbolic_system.h.
|
inline |
For a given state \(u\) compute the flux gradient \(f'(u)\).
Definition at line 739 of file hyperbolic_system.h.
|
static |
Return the scalar value stored in the state "vector". Given the fact that a scalar conservation equation is indeed scalar this simply unwraps the Tensor from the state_type and returns the one and only entry.
Definition at line 762 of file hyperbolic_system.h.
Referenced by ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::apply_galilei_transform(), ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::expand_state(), and ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::to_primitive_state().
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::square_entropy | ( | const Number & | u | ) | const |
For a given state U, compute the square entropy
\[ \eta = 1/2 u^2. \]
Definition at line 770 of file hyperbolic_system.h.
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::square_entropy_derivative | ( | const Number & | u | ) | const |
For a given state U, compute the derivative of the square entropy
\[ \eta' = u. \]
Definition at line 779 of file hyperbolic_system.h.
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::kruzkov_entropy | ( | const Number & | k, |
| const Number & | u | ||
| ) | const |
For a given state U, compute the Krŭzkov entropy
\[ \eta = |u-k|. \]
Definition at line 788 of file hyperbolic_system.h.
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::kruzkov_entropy_derivative | ( | const Number & | k, |
| const Number & | u | ||
| ) | const |
For a given state U, compute the derivative of the Krŭzkov entropy:
\[ \eta' = \text{sgn}(u-k). \]
Definition at line 797 of file hyperbolic_system.h.
|
inline |
Returns whether the state U is admissible. If U is a vectorized state then U is admissible if all vectorized values are admissible.
Definition at line 377 of file hyperbolic_system.h.
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE state_type ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::apply_boundary_conditions | ( | const dealii::types::boundary_id | id, |
| const state_type & | U, | ||
| const dealii::Tensor< 1, dim, Number > & | normal, | ||
| const Lambda & | get_dirichlet_data | ||
| ) | const |
Apply boundary conditions.
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE dealii::Tensor< 1, dim, Number > ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::construct_flux_tensor | ( | const precomputed_type & | precomputed_state | ) | const |
Helper function that given a precomputed_state constructs a dealii::Tensor with the flux \(f(u)\).
Definition at line 866 of file hyperbolic_system.h.
References ryujin::precomputed.
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE dealii::Tensor< 1, dim, Number > ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::construct_flux_gradient_tensor | ( | const precomputed_type & | precomputed_state | ) | const |
Helper function that given a precomputed_state constructs a dealii::Tensor with the gradient of the flux \(f(u)\) with respect to the state \(u\).
Definition at line 878 of file hyperbolic_system.h.
References ryujin::precomputed.
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::flux_contribution | ( | const PrecomputedVectorView & | pv, |
| const InitialPrecomputedVectorView & | , | ||
| const unsigned int | i, | ||
| const state_type & | |||
| ) | const |
Given a state U_i and an index i compute flux contributions.
Intended usage:
For the Euler equations we simply compute f(U_i).
Definition at line 891 of file hyperbolic_system.h.
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::flux_contribution | ( | const PrecomputedVectorView & | pv, |
| const InitialPrecomputedVectorView & | , | ||
| const unsigned int * | js, | ||
| const state_type & | |||
| ) | const |
Definition at line 907 of file hyperbolic_system.h.
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::flux_divergence | ( | const flux_contribution_type & | flux_i, |
| const flux_contribution_type & | flux_j, | ||
| const dealii::Tensor< 1, dim, Number > & | c_ij | ||
| ) | const |
Given flux contributions flux_i and flux_j compute the flux (-f(U_i) - f(U_j)
Definition at line 923 of file hyperbolic_system.h.
References ryujin::add(), and ryujin::contract().
|
delete |
|
delete |
|
delete |
|
inline |
Given a state vector associated with a different spatial dimensions than the current one, return an "expanded" version of the state vector associated with dim spatial dimensions where the momentum vector of the conserved state state is expaned with zeros to a total length of dim entries.
Definition at line 508 of file hyperbolic_system.h.
References ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::state().
|
inline |
Given a primitive state [rho, u_1, ..., u_d, p] return a conserved state
Definition at line 518 of file hyperbolic_system.h.
|
inline |
Given a conserved state return a primitive state [rho, u_1, ..., u_d, p]
Definition at line 528 of file hyperbolic_system.h.
References ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::state().
|
inline |
Transform the current state according to a given operator lambda acting on a dim dimensional momentum (or velocity) vector.
Definition at line 539 of file hyperbolic_system.h.
References ryujin::ScalarConservation::HyperbolicSystemView< dim, Number, MemorySpace >::state().
|
staticconstexpr |
The dimension of the state space.
Definition at line 169 of file hyperbolic_system.h.
|
inlinestatic |
An array holding all component names of the conserved state as a string.
Definition at line 191 of file hyperbolic_system.h.
|
inlinestatic |
An array holding all component names of the primitive state as a string.
Definition at line 198 of file hyperbolic_system.h.
|
staticconstexpr |
The number of precomputed values.
Definition at line 204 of file hyperbolic_system.h.
Referenced by ryujin::ScalarConservation::HyperbolicSystem::fill_precomputed_values().
|
inlinestatic |
An array holding all component names of the precomputed values.
Definition at line 214 of file hyperbolic_system.h.
|
staticconstexpr |
The number of precomputed initial values.
Definition at line 228 of file hyperbolic_system.h.
|
inlinestatic |
An array holding all component names of the precomputed values.
Definition at line 239 of file hyperbolic_system.h.
|
staticconstexpr |
The low-order and high-order fluxes are the same
Definition at line 464 of file hyperbolic_system.h.
|
staticconstexpr |
We do not have source terms
Definition at line 478 of file hyperbolic_system.h.