ryujin 2.1.1 revision 0348cbb53a3e4b1da2a4c037e81f88f2d21ce219
List of all members
ryujin::Euler::Indicator< dim, Number > Class Template Reference

#include <source/euler/indicator.h>

Public Member Functions

Stencil-based computation of indicators

Intended usage:

for (unsigned int i = n_internal; i < n_owned; ++i) {
// ...
indicator.reset(i, U_i);
for (unsigned int col_idx = 1; col_idx < row_length; ++col_idx) {
// ...
indicator.accumulate(js, U_j, c_ij);
}
indicator.alpha(hd_i);
}
void accumulate(const unsigned int *js, const state_type &U_j, const dealii::Tensor< 1, dim, Number > &c_ij)
Definition: indicator.h:212
Number alpha(const Number h_i) const
Definition: indicator.h:243
void reset(const unsigned int i, const state_type &U_i)
Definition: indicator.h:189
 Indicator (const HyperbolicSystem &hyperbolic_system, const Parameters &parameters, const PrecomputedVector &precomputed_values)
 
void reset (const unsigned int i, const state_type &U_i)
 
void accumulate (const unsigned int *js, const state_type &U_j, const dealii::Tensor< 1, dim, Number > &c_ij)
 
Number alpha (const Number h_i) const
 

Typedefs and constexpr constants

using View = HyperbolicSystemView< dim, Number >
 
using ScalarNumber = typename View::ScalarNumber
 
using state_type = typename View::state_type
 
using flux_type = typename View::flux_type
 
using precomputed_type = typename View::precomputed_type
 
using PrecomputedVector = typename View::PrecomputedVector
 
using Parameters = IndicatorParameters< ScalarNumber >
 
static constexpr auto problem_dimension = View::problem_dimension
 

Detailed Description

template<int dim, typename Number = double>
class ryujin::Euler::Indicator< dim, Number >

This class implements an indicator strategy used to form the preliminary high-order update.

The indicator is an entropy-viscosity commutator as described in [8] and [10]. For a given entropy \(\eta\) (either the mathematical entropy, or a Harten entropy, see the documentation of HyperbolicSystem) we let \(\eta'\) denote its derivative with respect to the state variables. We then compute a normalized entropy viscosity ratio \(\alpha_i^n\) for the state \(\boldsymbol U_i^n\) as follows:

\begin{align} \alpha_i^n\;=\;\frac{N_i^n}{D_i^n}, \quad N_i^n\;:=\;\left|a_i^n- \eta'(\boldsymbol U^n_i)\cdot\boldsymbol b_i^n +\frac{\eta(\boldsymbol U^n_i)}{\rho_i^n}\big(\boldsymbol b_i^n\big)_1\right|, \quad D_i^n\;:=\;\left|a_i^n\right| + \sum_{k=1}^{d+1}\left|\big(\eta'(\boldsymbol U^n_i)\big)_k- \delta_{1k}\frac{\eta(\boldsymbol U^n_i)}{\rho_i^n}\right| \,\left|\big(\boldsymbol b_i^n\big)_k\right|, \end{align}

where where \(\big(\,.\,\big)_k\) denotes the \(k\)-th component of a vector, \(\delta_{ij}\) is Kronecker's delta, and where we have set

\begin{align} a_i^n \;:=\; \sum_{j\in\mathcal{I}_i}\left(\frac{\eta(\boldsymbol U_j^n)}{\rho_j^n} -\frac{\eta(\boldsymbol U_i^n)}{\rho_i^n}\right)\, \boldsymbol m_j^n\cdot\boldsymbol c_{ij}, \qquad \boldsymbol b_i^n \;:=\; \sum_{j\in\mathcal{I}_i}\left(\mathbf{f}(\boldsymbol U_j^n)- \mathbf{f}(\boldsymbol U_i^n)\right)\cdot\boldsymbol c_{ij}, \end{align}

Definition at line 81 of file indicator.h.

Member Typedef Documentation

◆ View

template<int dim, typename Number = double>
using ryujin::Euler::Indicator< dim, Number >::View = HyperbolicSystemView<dim, Number>

Definition at line 89 of file indicator.h.

◆ ScalarNumber

template<int dim, typename Number = double>
using ryujin::Euler::Indicator< dim, Number >::ScalarNumber = typename View::ScalarNumber

Definition at line 91 of file indicator.h.

◆ state_type

template<int dim, typename Number = double>
using ryujin::Euler::Indicator< dim, Number >::state_type = typename View::state_type

Definition at line 95 of file indicator.h.

◆ flux_type

template<int dim, typename Number = double>
using ryujin::Euler::Indicator< dim, Number >::flux_type = typename View::flux_type

Definition at line 97 of file indicator.h.

◆ precomputed_type

template<int dim, typename Number = double>
using ryujin::Euler::Indicator< dim, Number >::precomputed_type = typename View::precomputed_type

Definition at line 99 of file indicator.h.

◆ PrecomputedVector

template<int dim, typename Number = double>
using ryujin::Euler::Indicator< dim, Number >::PrecomputedVector = typename View::PrecomputedVector

Definition at line 101 of file indicator.h.

◆ Parameters

template<int dim, typename Number = double>
using ryujin::Euler::Indicator< dim, Number >::Parameters = IndicatorParameters<ScalarNumber>

Definition at line 103 of file indicator.h.

Constructor & Destructor Documentation

◆ Indicator()

template<int dim, typename Number = double>
ryujin::Euler::Indicator< dim, Number >::Indicator ( const HyperbolicSystem hyperbolic_system,
const Parameters parameters,
const PrecomputedVector precomputed_values 
)
inline

Constructor taking a HyperbolicSystem instance as argument

Definition at line 128 of file indicator.h.

Member Function Documentation

◆ reset()

template<int dim, typename Number >
DEAL_II_ALWAYS_INLINE void ryujin::Euler::Indicator< dim, Number >::reset ( const unsigned int  i,
const state_type U_i 
)
inline

Reset temporary storage and initialize for a new row corresponding to state vector U_i.

Definition at line 189 of file indicator.h.

◆ accumulate()

template<int dim, typename Number >
DEAL_II_ALWAYS_INLINE void ryujin::Euler::Indicator< dim, Number >::accumulate ( const unsigned int *  js,
const state_type U_j,
const dealii::Tensor< 1, dim, Number > &  c_ij 
)
inline

When looping over the sparsity row, add the contribution associated with the neighboring state U_j.

Definition at line 212 of file indicator.h.

◆ alpha()

template<int dim, typename Number >
DEAL_II_ALWAYS_INLINE Number ryujin::Euler::Indicator< dim, Number >::alpha ( const Number  h_i) const
inline

Return the computed alpha_i value.

Definition at line 243 of file indicator.h.

Member Data Documentation

◆ problem_dimension

template<int dim, typename Number = double>
constexpr auto ryujin::Euler::Indicator< dim, Number >::problem_dimension = View::problem_dimension
staticconstexpr

Definition at line 93 of file indicator.h.


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