ryujin 2.1.1 revision 4bf2aee841e245e84ddb1251f8ca4f7f06dda1bb
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 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.

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 89 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 139 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 164 of file limiter.h.


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