ryujin 2.1.1 revision 0348cbb53a3e4b1da2a4c037e81f88f2d21ce219
|
#include <source/euler/indicator.h>
Public Member Functions | |
Stencil-based computation of indicators | |
Intended usage: Indicator<dim, Number> indicator;
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);
}
Definition: indicator.h:82 void accumulate(const unsigned int *js, const state_type &U_j, const dealii::Tensor< 1, dim, Number > &c_ij) Definition: indicator.h:212 void reset(const unsigned int i, const state_type &U_i) Definition: indicator.h:189 | |
Indicator (const HyperbolicSystem &hyperbolic_system, const Parameters ¶meters, 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 |
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.
using ryujin::Euler::Indicator< dim, Number >::View = HyperbolicSystemView<dim, Number> |
Definition at line 89 of file indicator.h.
using ryujin::Euler::Indicator< dim, Number >::ScalarNumber = typename View::ScalarNumber |
Definition at line 91 of file indicator.h.
using ryujin::Euler::Indicator< dim, Number >::state_type = typename View::state_type |
Definition at line 95 of file indicator.h.
using ryujin::Euler::Indicator< dim, Number >::flux_type = typename View::flux_type |
Definition at line 97 of file indicator.h.
using ryujin::Euler::Indicator< dim, Number >::precomputed_type = typename View::precomputed_type |
Definition at line 99 of file indicator.h.
using ryujin::Euler::Indicator< dim, Number >::PrecomputedVector = typename View::PrecomputedVector |
Definition at line 101 of file indicator.h.
using ryujin::Euler::Indicator< dim, Number >::Parameters = IndicatorParameters<ScalarNumber> |
Definition at line 103 of file indicator.h.
|
inline |
Constructor taking a HyperbolicSystem instance as argument
Definition at line 128 of file indicator.h.
|
inline |
Reset temporary storage and initialize for a new row corresponding to state vector U_i.
Definition at line 189 of file indicator.h.
|
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.
|
inline |
Return the computed alpha_i value.
Definition at line 243 of file indicator.h.
|
staticconstexpr |
Definition at line 93 of file indicator.h.