ryujin 2.1.1 revision ee5cbcbf2346c1299c942d0e1f13b46449973c18
Loading...
Searching...
No Matches
List of all members
ryujin::EulerAEOS::Limiter< ScalarNumber > Class Template Reference

#include <source/euler_aeos/limiter.h>

Inheritance diagram for ryujin::EulerAEOS::Limiter< ScalarNumber >:
Inheritance graph
[legend]
Collaboration diagram for ryujin::EulerAEOS::Limiter< ScalarNumber >:
Collaboration graph
[legend]

Public Types

Typedefs and constexpr constants
template<int dim, typename Number = double>
using View = LimiterView< dim, Number >
 

Public Member Functions

Constructor and setup
 Limiter (const HyperbolicSystem &hyperbolic_system, const std::string &subsection="/Limiter")
 
template<int dim, typename Number >
auto view () const
 

Internal data

template<int , typename >
class LimiterView
 

Detailed Description

template<typename ScalarNumber = double>
class ryujin::EulerAEOS::Limiter< ScalarNumber >

The convex limiter.

The limiter implements a convex limiting technique as described in [9], [12] and [3]. 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 57 of file limiter.h.

Member Typedef Documentation

◆ View

template<typename ScalarNumber = double>
template<int dim, typename Number = double>
using ryujin::EulerAEOS::Limiter< ScalarNumber >::View = LimiterView<dim, Number>

Alias for the view on the limiter for a given dimension dim and choice of number type Number.

Definition at line 70 of file limiter.h.

Constructor & Destructor Documentation

◆ Limiter()

template<typename ScalarNumber = double>
ryujin::EulerAEOS::Limiter< ScalarNumber >::Limiter ( const HyperbolicSystem hyperbolic_system,
const std::string &  subsection = "/Limiter< ScalarNumber >" 
)
inline

Constructor.

Definition at line 81 of file limiter.h.

Member Function Documentation

◆ view()

template<typename ScalarNumber = double>
template<int dim, typename Number >
auto ryujin::EulerAEOS::Limiter< ScalarNumber >::view ( ) const
inline

Return a view on the Limiter 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 117 of file limiter.h.

Friends And Related Symbol Documentation

◆ LimiterView

template<typename ScalarNumber = double>
template<int , typename >
friend class LimiterView
friend

Definition at line 146 of file limiter.h.


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