ryujin 2.1.1 revision e1e0c9cf84519540dcc04ed5bb49dc8a8c052779
Loading...
Searching...
No Matches
List of all members
ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace > Class Template Reference

#include <source/shallow_water/hyperbolic_system.h>

Public Member Functions

Constructor and setup
 HyperbolicSystemView (const HyperbolicSystem &hyperbolic_system)
 
Access to runtime parameters
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber gravity () const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber manning_friction_coefficient () const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber reference_water_depth () const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber dry_state_relaxation_small () const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber dry_state_relaxation_large () const
 
Special functions for boundary states
template<int component>
DEAL_II_HOST_DEVICE state_type prescribe_riemann_characteristic (const state_type &U, const state_type &U_bar, const dealii::Tensor< 1, dim, Number > &normal) const
 
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 state_type expand_state (const ST &state) const
 
template<typename ST >
DEAL_II_HOST_DEVICE state_type from_initial_state (const ST &initial_state) const
 
DEAL_II_HOST_DEVICE state_type from_primitive_state (const state_type &primitive_state) const
 
DEAL_II_HOST_DEVICE state_type to_primitive_state (const state_type &state) const
 
template<typename Lambda >
DEAL_II_HOST_DEVICE state_type apply_galilei_transform (const state_type &state, const Lambda &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 = std::tuple< state_type, Number >
 
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 + dim
 
static constexpr unsigned int n_precomputed_values = 2
 
static constexpr unsigned int n_initial_precomputed_values = 1
 

Flux computations

static constexpr bool have_high_order_flux = true
 
DEAL_II_HOST_DEVICE flux_type f (const state_type &U) const
 
DEAL_II_HOST_DEVICE flux_type g (const state_type &U) const
 
DEAL_II_HOST_DEVICE state_type star_state (const state_type &U, const Number &Z_left, const Number &Z_right) const
 
DEAL_II_HOST_DEVICE std::array< state_type, 2 > equilibrated_states (const flux_contribution_type &, const flux_contribution_type &) const
 
DEAL_II_HOST_DEVICE flux_contribution_type flux_contribution (const PrecomputedVectorView &pv, const InitialPrecomputedVectorView &piv, const unsigned int i, const state_type &U_i) const
 
DEAL_II_HOST_DEVICE flux_contribution_type flux_contribution (const PrecomputedVectorView &pv, const InitialPrecomputedVectorView &piv, const unsigned int *js, const state_type &U_j) 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
 
DEAL_II_HOST_DEVICE state_type high_order_flux_divergence (const flux_contribution_type &flux_i, const flux_contribution_type &flux_j, const dealii::Tensor< 1, dim, Number > &c_ij) const
 
DEAL_II_HOST_DEVICE state_type affine_shift (const flux_contribution_type &flux_i, const flux_contribution_type &flux_j, const dealii::Tensor< 1, dim, Number > &c_ij, const Number &d_ij) const
 

Computing stencil source terms

static constexpr bool have_source_terms = true
 
DEAL_II_HOST_DEVICE state_type manning_friction (const state_type &U, const Number &h_star, const ScalarNumber tau) const
 
DEAL_II_HOST_DEVICE state_type nodal_source (const PrecomputedVectorView &pv, const unsigned int i, const state_type &U_i, const ScalarNumber tau) const
 
DEAL_II_HOST_DEVICE state_type nodal_source (const PrecomputedVectorView &pv, const unsigned int *js, const state_type &U_j, const ScalarNumber tau) const
 

Computing derived physical quantities

DEAL_II_HOST_DEVICE Number inverse_water_depth_mollified (const state_type &U) const
 
DEAL_II_HOST_DEVICE Number water_depth_sharp (const state_type &U) const
 
DEAL_II_HOST_DEVICE Number inverse_water_depth_sharp (const state_type &U) const
 
DEAL_II_HOST_DEVICE Number filter_dry_water_depth (const Number &h) const
 
DEAL_II_HOST_DEVICE Number kinetic_energy (const state_type &U) const
 
DEAL_II_HOST_DEVICE Number pressure (const state_type &U) const
 
DEAL_II_HOST_DEVICE Number speed_of_sound (const state_type &U) const
 
DEAL_II_HOST_DEVICE Number mathematical_entropy (const state_type &U) const
 
DEAL_II_HOST_DEVICE state_type mathematical_entropy_derivative (const state_type &U) const
 
DEAL_II_HOST_DEVICE bool is_admissible (const state_type &U) const
 
static DEAL_II_HOST_DEVICE Number water_depth (const state_type &U)
 
static DEAL_II_HOST_DEVICE dealii::Tensor< 1, dim, Number > momentum (const state_type &U)
 

Detailed Description

template<int dim, typename Number, typename MemorySpace>
class ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >

A view of the HyperbolicSystem that makes methods available 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.

Intended usage:

HyperbolicSystem hyperbolic_system;
const auto view = hyperbolic_system.template view<dim, Number>();
const auto flux_i = view.flux_contribution(...);
const auto flux_j = view.flux_contribution(...);
const auto flux_ij = view.flux_divergence(flux_i, flux_j, c_ij);
// etc.
Note
This class is designed to be copied by value into computation loops with access to either the host or device memory space.

Definition at line 146 of file hyperbolic_system.h.

Member Typedef Documentation

◆ ScalarNumber

template<int dim, typename Number , typename MemorySpace >
using ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::ScalarNumber = typename get_value_type<Number>::type

The underlying scalar number type.

Definition at line 162 of file hyperbolic_system.h.

◆ state_type

template<int dim, typename Number , typename MemorySpace >
using ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::state_type = dealii::Tensor<1, problem_dimension, Number>

Storage type for a (conserved) state vector \(\boldsymbol U\).

Definition at line 172 of file hyperbolic_system.h.

◆ flux_type

template<int dim, typename Number , typename MemorySpace >
using ryujin::ShallowWater::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 177 of file hyperbolic_system.h.

◆ flux_contribution_type

template<int dim, typename Number , typename MemorySpace >
using ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::flux_contribution_type = std::tuple<state_type, Number>

The storage type used for flux contributions.

Definition at line 183 of file hyperbolic_system.h.

◆ precomputed_type

template<int dim, typename Number , typename MemorySpace >
using ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::precomputed_type = std::array<Number, n_precomputed_values>

Array type used for precomputed values.

Definition at line 193 of file hyperbolic_system.h.

◆ initial_precomputed_type

template<int dim, typename Number , typename MemorySpace >
using ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::initial_precomputed_type = std::array<Number, n_initial_precomputed_values>

Array type used for precomputed initial values.

Definition at line 203 of file hyperbolic_system.h.

◆ VectorView

template<int dim, typename Number , typename MemorySpace >
template<int n_comp>
using ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::VectorView = MultiComponentVectorView<ScalarNumber, n_comp, MemorySpace, false>

Definition at line 207 of file hyperbolic_system.h.

◆ PrecomputedVectorView

template<int dim, typename Number , typename MemorySpace >
using ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::PrecomputedVectorView = VectorView<n_precomputed_values>

MulticomponentVectorView for accessing a vector of precomputed states:

Definition at line 214 of file hyperbolic_system.h.

◆ InitialPrecomputedVectorView

template<int dim, typename Number , typename MemorySpace >
using ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::InitialPrecomputedVectorView = VectorView<n_initial_precomputed_values>

MulticomponentVectorView for accessing a vector of precomputed initial states:

Definition at line 220 of file hyperbolic_system.h.

Constructor & Destructor Documentation

◆ HyperbolicSystemView()

template<int dim, typename Number , typename MemorySpace >
ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::HyperbolicSystemView ( const HyperbolicSystem &  hyperbolic_system)
inline

Constructor taking a reference to the underlying HyperbolicSystem

Definition at line 233 of file hyperbolic_system.h.

Member Function Documentation

◆ gravity()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::gravity ( ) const
inline

◆ manning_friction_coefficient()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::manning_friction_coefficient ( ) const
inline

◆ reference_water_depth()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::reference_water_depth ( ) const
inline

◆ dry_state_relaxation_small()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::dry_state_relaxation_small ( ) const
inline

◆ dry_state_relaxation_large()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::dry_state_relaxation_large ( ) const
inline

◆ water_depth()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::water_depth ( const state_type &  U)
static

For a given (1+dim dimensional) state vector U, return the water depth U[0]

Definition at line 722 of file hyperbolic_system.h.

◆ inverse_water_depth_mollified()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::inverse_water_depth_mollified ( const state_type &  U) const

For a given (1+dim dimensional) state vector U, return a regularized inverse of the water depth. This function returns 2h / (h^2+max(h, h_cutoff)^2), where h_cutoff is the reference water depth multiplied by eps.

Definition at line 731 of file hyperbolic_system.h.

References ryujin::positive_part().

◆ water_depth_sharp()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::water_depth_sharp ( const state_type &  U) const

For a given (1+dim dimensional) state vector U, return the regularized water depth U[0] This function returns max(h, h_cutoff), where h_cutoff is the reference water depth multiplied by eps.

Definition at line 749 of file hyperbolic_system.h.

◆ inverse_water_depth_sharp()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::inverse_water_depth_sharp ( const state_type &  U) const

For a given (1+dim dimensional) state vector U, return a regularized inverse of the water depth. This function returns 1 / max(h, h_cutoff), where h_cutoff is the reference water depth multiplied by eps.

Definition at line 765 of file hyperbolic_system.h.

◆ filter_dry_water_depth()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::filter_dry_water_depth ( const Number &  h) const

Given a water depth h this function returns 0 if h is in the interval [-relaxation * h_cutoff, relaxation * h_cutoff], otherwise h is returned unmodified. Here, h_cutoff is the reference water depth multiplied by eps.

Definition at line 774 of file hyperbolic_system.h.

◆ momentum()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE dealii::Tensor< 1, dim, Number > ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::momentum ( const state_type &  U)
static

For a given (1+dim dimensional) state vector U, return the momentum vector [U[1], ..., U[1+dim]].

Definition at line 790 of file hyperbolic_system.h.

◆ kinetic_energy()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::kinetic_energy ( const state_type &  U) const

For a given (1+dim dimensional) state vector U, compute and return the kinetic energy.

\[ KE = 1/2 |m|^2 / h \]

Definition at line 803 of file hyperbolic_system.h.

◆ pressure()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::pressure ( const state_type &  U) const

For a given (state dimensional) state vector U, compute and return the hydrostatic pressure \(p\):

\[ p = 1/2 g h^2 \]

Definition at line 816 of file hyperbolic_system.h.

◆ speed_of_sound()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::speed_of_sound ( const state_type &  U) const

For a given (1+dim dimensional) state vector U, compute the (physical) speed of sound:

\[ c^2 = g * h \]

Definition at line 828 of file hyperbolic_system.h.

◆ mathematical_entropy()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::mathematical_entropy ( const state_type &  U) const

For a given (1+dim dimensional) state vector U, compute and return the entropy \(\eta = 1/2 g h^2 + 1/2 |m|^2 / h\).

Definition at line 838 of file hyperbolic_system.h.

◆ mathematical_entropy_derivative()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::mathematical_entropy_derivative ( const state_type &  U) const

For a given (1+dim dimensional) state vector U, compute and return the derivative \(\eta'\) of the entropy defined above.

Definition at line 849 of file hyperbolic_system.h.

◆ is_admissible()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE bool ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::is_admissible ( const state_type &  U) const

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 882 of file hyperbolic_system.h.

◆ prescribe_riemann_characteristic()

template<int dim, typename Number , typename MemorySpace >
template<int component>
DEAL_II_HOST_DEVICE state_type ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::prescribe_riemann_characteristic ( const state_type &  U,
const state_type &  U_bar,
const dealii::Tensor< 1, dim, Number > &  normal 
) const

Decomposes a given state U into Riemann invariants and then replaces the first or second Riemann characteristic from the one taken from U_bar state.

◆ apply_boundary_conditions()

template<int dim, typename Number , typename MemorySpace >
template<typename Lambda >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE state_type ryujin::ShallowWater::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.

◆ f()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::f ( const state_type &  U) const

Given a state U compute the flux

\[ \begin{pmatrix} \textbf m \\ \textbf v\otimes \textbf m + p\mathbb{I}_d \\ \end{pmatrix}, \]

Definition at line 1041 of file hyperbolic_system.h.

◆ g()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::g ( const state_type &  U) const

Given a state U compute the flux \g[ \begin{pmatrix} \textbf m \ \textbf v\otimes \textbf m \ \end{pmatrix}, \f]

Definition at line 1061 of file hyperbolic_system.h.

◆ star_state()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::star_state ( const state_type &  U,
const Number &  Z_left,
const Number &  Z_right 
) const

For a given (1+dim dimensional) state vector U and left/right topography states Z_left and Z_right, return the star_state U_star

Definition at line 1079 of file hyperbolic_system.h.

◆ equilibrated_states()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::equilibrated_states ( const flux_contribution_type &  flux_i,
const flux_contribution_type &  flux_j 
) const

Given precomputed flux contributions prec_i and prec_j compute the equilibrated states \(U_i^{\ast,j}\) and \(U_j^{\ast,i}\).

Definition at line 1093 of file hyperbolic_system.h.

◆ flux_contribution() [1/2]

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::flux_contribution ( const PrecomputedVectorView &  pv,
const InitialPrecomputedVectorView &  piv,
const unsigned int  i,
const state_type &  U_i 
) const

Given a state U_i and an index i compute flux contributions.

Intended usage:

for (unsigned int i = n_internal; i < n_owned; ++i) {
// ...
const auto flux_i = flux_contribution(precomputed..., i, U_i);
for (unsigned int col_idx = 1; col_idx < row_length; ++col_idx) {
// ...
const auto flux_j = flux_contribution(precomputed..., js, U_j);
const auto flux_ij = flux_divergence(flux_i, flux_j, c_ij);
}
}
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
DEAL_II_HOST_DEVICE flux_contribution_type flux_contribution(const PrecomputedVectorView &pv, const InitialPrecomputedVectorView &piv, const unsigned int i, const state_type &U_i) const

For the Shallow water equations we simply retrieve the bathymetry and return, both, state and bathymetry.

Definition at line 1109 of file hyperbolic_system.h.

◆ flux_contribution() [2/2]

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::flux_contribution ( const PrecomputedVectorView &  pv,
const InitialPrecomputedVectorView &  piv,
const unsigned int *  js,
const state_type &  U_j 
) const

Definition at line 1122 of file hyperbolic_system.h.

◆ flux_divergence()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::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 precomputed flux contributions prec_i and prec_j compute the equilibrated, low-order flux \((f(U_i^{\ast,j}) + f(U_j^{\ast,i})\)

Definition at line 1135 of file hyperbolic_system.h.

References ryujin::add(), and ryujin::contract().

◆ high_order_flux_divergence()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::high_order_flux_divergence ( const flux_contribution_type &  flux_i,
const flux_contribution_type &  flux_j,
const dealii::Tensor< 1, dim, Number > &  c_ij 
) const

Given precomputed flux contributions prec_i and prec_j compute the high-order flux \((f(U_i^{\ast,j}) + f(U_j^{\ast,i})\)

Definition at line 1167 of file hyperbolic_system.h.

References ryujin::add(), and ryujin::contract().

◆ affine_shift()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::affine_shift ( const flux_contribution_type &  flux_i,
const flux_contribution_type &  flux_j,
const dealii::Tensor< 1, dim, Number > &  c_ij,
const Number &  d_ij 
) const

Given precomputed flux contributions prec_i and prec_j compute the equilibrated, low-order affine shift \( B_{ij} = -2d_ij(U^{\ast,j}_i)-2f((U^{\ast,j}_i))c_ij\).

Definition at line 1194 of file hyperbolic_system.h.

◆ manning_friction()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::manning_friction ( const state_type &  U,
const Number &  h_star,
const ScalarNumber  tau 
) const

A regularized Gauckler-Manning friction coefficient.

FIXME: details

Definition at line 1214 of file hyperbolic_system.h.

◆ nodal_source() [1/2]

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::nodal_source ( const PrecomputedVectorView &  pv,
const unsigned int  i,
const state_type &  U_i,
const ScalarNumber  tau 
) const

Definition at line 1241 of file hyperbolic_system.h.

◆ nodal_source() [2/2]

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::nodal_source ( const PrecomputedVectorView &  pv,
const unsigned int *  js,
const state_type &  U_j,
const ScalarNumber  tau 
) const

Definition at line 1256 of file hyperbolic_system.h.

◆ expand_state()

template<int dim, typename Number , typename MemorySpace >
template<typename ST >
DEAL_II_HOST_DEVICE state_type ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::expand_state ( const ST &  state) const

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.

Note
dim has to be larger or equal than the dimension of the ST vector.

◆ from_initial_state()

template<int dim, typename Number , typename MemorySpace >
template<typename ST >
DEAL_II_HOST_DEVICE state_type ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::from_initial_state ( const ST &  initial_state) const

Given an initial state [h, u_1, ..., u_d] return a conserved state [h, m_1, ..., m_d].

This function simply calls from_primitive_state() and expand_state().

Note
This function is used to conveniently convert (user provided) primitive initial states to a conserved state in the ShallowWaterInitialStateLibrary.

◆ from_primitive_state()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::from_primitive_state ( const state_type &  primitive_state) const

Given a primitive state [h, u_1, ..., u_d] return a conserved state

Definition at line 1304 of file hyperbolic_system.h.

◆ to_primitive_state()

template<int dim, typename Number , typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::to_primitive_state ( const state_type &  state) const

Given a conserved state return a primitive state [h, u_1, ..., u_d]

Definition at line 1320 of file hyperbolic_system.h.

◆ apply_galilei_transform()

template<int dim, typename Number , typename MemorySpace >
template<typename Lambda >
DEAL_II_HOST_DEVICE state_type ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::apply_galilei_transform ( const state_type &  state,
const Lambda &  lambda 
) const

Transform the current state according to a given operator lambda acting on a dim dimensional momentum (or velocity) vector.

Member Data Documentation

◆ problem_dimension

template<int dim, typename Number , typename MemorySpace >
constexpr unsigned int ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::problem_dimension = 1 + dim
staticconstexpr

The dimension of the state space.

Definition at line 167 of file hyperbolic_system.h.

◆ n_precomputed_values

template<int dim, typename Number , typename MemorySpace >
constexpr unsigned int ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::n_precomputed_values = 2
staticconstexpr

The number of precomputed values.

Definition at line 188 of file hyperbolic_system.h.

◆ n_initial_precomputed_values

template<int dim, typename Number , typename MemorySpace >
constexpr unsigned int ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::n_initial_precomputed_values = 1
staticconstexpr

The number of precomputed initial values.

Definition at line 198 of file hyperbolic_system.h.

◆ have_high_order_flux

template<int dim, typename Number , typename MemorySpace >
constexpr bool ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::have_high_order_flux = true
staticconstexpr

The low-order and high-order fluxes differ:

Definition at line 496 of file hyperbolic_system.h.

◆ have_source_terms

template<int dim, typename Number , typename MemorySpace >
constexpr bool ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::have_source_terms = true
staticconstexpr

We do have source terms

Definition at line 527 of file hyperbolic_system.h.


The documentation for this class was generated from the following file: