|
|
Intended usage:
for (unsigned int i = n_internal; i < n_owned; ++i) {
limiter_view. reset(pv, i, U_i, flux_i);
for (unsigned int col_idx = 1; col_idx < row_length; ++col_idx) {
limiter_view. accumulate(pv, js, U_j, flux_j, scaled_c_ij,
affine_shift);
}
}
Bounds bounds(const Number hd_i) const
void reset(const PrecomputedVectorView &pv, const unsigned int i, const state_type &U_i, const flux_contribution_type &flux_i)
void accumulate(const PrecomputedVectorView &pv, const unsigned int *js, const state_type &U_j, const flux_contribution_type &flux_j, const dealii::Tensor< 1, dim, Number > &scaled_c_ij, const state_type &affine_shift)
|
| void | reset (const PrecomputedVectorView &pv, const unsigned int i, const state_type &U_i, const flux_contribution_type &flux_i) |
| |
| void | accumulate (const PrecomputedVectorView &pv, const unsigned int *js, const state_type &U_j, const flux_contribution_type &flux_j, const dealii::Tensor< 1, dim, Number > &scaled_c_ij, const state_type &affine_shift) |
| |
| Bounds | bounds (const Number hd_i) const |
| |
|
| std::tuple< Number, bool > | limit (const Bounds &bounds, const state_type &U, const state_type &P, const Number t_min=Number(0.), const Number t_max=Number(1.)) const |
| |
template<int dim, typename Number>
class ryujin::EulerAEOS::LimiterView< dim, Number >
A view of the Limiter that makes the interface 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).
Definition at line 159 of file limiter.h.
template<int dim, typename Number >
This function applies a relaxation to a given a (strict) bound bounds using a non dimensionalized measure hd (that should scale as $h^d$, where $h$ is the local mesh size). This is done for the case of the Euler equations by multiplying maximum bounds with $(1+r)$ and minimum bounds with $(1-r)$, while ensuring that the bounds still describe an admissible state.
Definition at line 400 of file limiter.h.
template<int dim, typename Number >
Given a state \(\mathbf U\) and an update \(\mathbf P\) this function computes and returns the maximal coefficient \(t\), obeying \(t_{\text{min}} < t < t_{\text{max}}\), such that the selected local minimum principles are obeyed.
The returned boolean is set to true if the original low-order update was within bounds.
- Note
- If the debug option
DEBUG_EXPENSIVE_BOUNDS_CHECK is set to true, then the boolean is set to true if the low-order and the resulting high-order update are within bounds. The latter might be violated due to round-off errors when computing the limiter bounds.
Definition at line 17 of file limiter.template.h.
References ryujin::negative_part(), ryujin::positive_part(), ryujin::pow(), and ryujin::quadratic_newton_step().