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

#include <source/euler/limiter.h>

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

Classes

struct  Parameters
 

Public Types

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

Public Member Functions

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

Internal data

template<int , typename , typename >
class LimiterView
 

Detailed Description

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.

Member Typedef Documentation

◆ View

template<typename ScalarNumber = double>
template<int dim, typename Number = double, typename MemorySpace = dealii::MemorySpace::Host>
using ryujin::Euler::Limiter< ScalarNumber >::View = LimiterView<dim, Number, MemorySpace>

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

Definition at line 87 of file limiter.h.

Constructor & Destructor Documentation

◆ Limiter()

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

Constructor.

Definition at line 98 of file limiter.h.

Member Function Documentation

◆ view()

template<typename ScalarNumber = double>
template<int dim, typename Number , typename MemorySpace = dealii::MemorySpace::Host>
auto ryujin::Euler::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). The optional MemorySpace template parameter selects whether the view is intended for the host or device memory space.

Definition at line 160 of file limiter.h.

Friends And Related Symbol Documentation

◆ LimiterView

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

Definition at line 187 of file limiter.h.


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