template<typename ScalarNumber = double>
class ryujin::Euler::Limiter< ScalarNumber >
The convex limiter.
The limiter implements a convex limiting technique as described in [9] and [12]. Given a computed set of bounds and an update direction \(\mathbf P_{ij}\) one can now determine a candidate \(\tilde l_{ij}\) by computing
\begin{align}
\tilde l_{ij} = \max_{l\,\in\,[0,1]}
\,\Big\{\rho_{\text{min}}\,\le\,\rho\,(\mathbf U_i +\tilde
l_{ij}\mathbf P_{ij})
\,\le\,\rho_{\text{max}},\quad
\phi_{\text{min}}\,\le\,\phi\,(\mathbf U_{i}+\tilde l_{ij}\mathbf
P_{ij})\Big\}, \end{align}
where \(\psi\) denots the specific entropy [12].
Algorithmically this is accomplished as follows: Given an initial interval \([t_L,t_R]\), where \(t_L\) is a good state, we first make the interval smaller ensuring the bounds on the density are fulfilled. If limiting on the specific entropy is selected we then then perform a quadratic Newton iteration (updating \([t_L,t_R]\) solving for the root of a 3-convex function
\begin{align}
\Psi(\mathbf U)\;=\;\rho^{\gamma+1}(\mathbf U)\,\big(\phi(\mathbf
U)-\phi_{\text{min}}\big). \end{align}
Definition at line 62 of file limiter.h.