ryujin 2.1.1 revision 8e904ddb3fa1d9e336dac21cf982add6a65e5467
Loading...
Searching...
No Matches
Classes | List of all members
ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace > Class Template Reference

#include <source/euler_aeos/nasg_riemann_solver.h>

Classes

struct  RiemannSolution
 

Public Member Functions

Constructor and parameters
 NASGRiemannSolverView (const NASGRiemannSolver< ScalarNumber, options > &riemann_solver)
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber newton_tolerance () const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE unsigned int newton_max_iterations () const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber covolume_b () const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber pinf () const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE bool compute_expensive_bounds () const
 
Methods for computing wavespeed estimates
DEAL_II_HOST_DEVICE Number compute (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j) const
 
Methods for computing the full Riemann solution
DEAL_II_HOST_DEVICE RiemannSolution riemann_solution (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j, const Number p_star) const
 
DEAL_II_HOST_DEVICE RiemannSolution solve (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j, const unsigned int max_iterations=100) const
 
DEAL_II_HOST_DEVICE primitive_type sample (const RiemannSolution &solution, const Number &xi, const unsigned int max_iterations=100) const
 
DEAL_II_HOST_DEVICE Number rarefaction_fan_pressure (const primitive_type &riemann_data, const Number &xi, const ScalarNumber sign, const unsigned int max_iterations) const
 
Equation of state
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number one_minus_b_rho (const Number &rho) const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number shift (const Number &p) const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number unshift (const Number &p) const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number safe_division (const Number &numerator, const Number &denominator) const
 
DEAL_II_HOST_DEVICE Number speed_of_sound (const Number &rho, const Number &p, const Number &gamma) const
 
DEAL_II_HOST_DEVICE Number rho_star (const primitive_type &riemann_data, const Number &p_star) const
 
Wave curves
DEAL_II_HOST_DEVICE Number f (const primitive_type &riemann_data, const Number p_star) const
 
DEAL_II_HOST_DEVICE Number df (const primitive_type &riemann_data, const Number &p_star) const
 
DEAL_II_HOST_DEVICE Number phi (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j, const Number p_in) const
 
DEAL_II_HOST_DEVICE Number dphi (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j, const Number &p) const
 
DEAL_II_HOST_DEVICE Number phi_of_p_max (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j) const
 
DEAL_II_HOST_DEVICE Number lambda1_minus (const primitive_type &riemann_data, const Number p_star) const
 
DEAL_II_HOST_DEVICE Number lambda3_plus (const primitive_type &riemann_data, const Number p_star) const
 
Bounds on p_star
DEAL_II_HOST_DEVICE Number p_star_upper_bound (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j, const Number &phi_p_max) const
 
DEAL_II_HOST_DEVICE Number p_star_single_gamma (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j, const Number &phi_p_max) const
 
DEAL_II_HOST_DEVICE Number p_star_interpolated (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j) const
 
DEAL_II_HOST_DEVICE Number p_star_RS_full (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j) const
 
DEAL_II_HOST_DEVICE Number p_star_SS_full (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j) const
 
DEAL_II_HOST_DEVICE Number p_star_failsafe (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j) const
 
DEAL_II_HOST_DEVICE Number p_star_two_rarefaction (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j) const
 
Quadratic Newton iteration
DEAL_II_HOST_DEVICE void newton_step (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j, Number &p_1, Number &p_2) const
 
DEAL_II_HOST_DEVICE std::array< Number, 2 > compute_gap (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j, const Number p_1, const Number p_2) const
 
DEAL_II_HOST_DEVICE Number compute_lambda_max (const primitive_type &riemann_data_i, const primitive_type &riemann_data_j, const Number p_star) const
 

Typedefs and constexpr constants

using ScalarNumber = typename get_value_type< Number >::type
 
using Parameters = typename NASGRiemannSolver< ScalarNumber, options >::Parameters
 
using primitive_type = std::array< Number, riemann_data_size >
 
static constexpr unsigned int riemann_data_size = 5
 

Internal data

template<typename , NASGRiemannSolverOptions >
class NASGRiemannSolver
 

Gamma dependent constants

DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto gamma_of (const primitive_type &riemann_data) const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto lambda_factor (const primitive_type &riemann_data) const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto rarefaction_exponent (const primitive_type &riemann_data) const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto rarefaction_exponent_inverse (const primitive_type &riemann_data) const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto half_gamma_minus_one (const primitive_type &riemann_data) const
 
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto c_of_gamma (const primitive_type &riemann_data) const
 
DEAL_II_HOST_DEVICE Number alpha (const Number &rho, const Number &gamma, const Number &a) const
 
template<typename T >
static DEAL_II_HOST_DEVICE_ALWAYS_INLINE T c (const T &gamma_Z)
 

Detailed Description

template<typename Number, NASGRiemannSolverOptions options, typename MemorySpace>
class ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >

A view of the NASGRiemannSolver that makes the interface available for a given choice of number type Number (which can be a scalar float, or double, as well as a VectorizedArray holding packed scalars).

The class operates directly on Riemann data \([\rho, u, p, \gamma, a]\).

Definition at line 228 of file nasg_riemann_solver.h.

Member Typedef Documentation

◆ ScalarNumber

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
using ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::ScalarNumber = typename get_value_type<Number>::type

Definition at line 241 of file nasg_riemann_solver.h.

◆ Parameters

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
using ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::Parameters = typename NASGRiemannSolver<ScalarNumber, options>::Parameters

Definition at line 243 of file nasg_riemann_solver.h.

◆ primitive_type

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
using ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::primitive_type = std::array<Number, riemann_data_size>

The array type to store the expanded primitive state for the Riemann solver \([\rho, v, p, gamma, a]\)

Definition at line 256 of file nasg_riemann_solver.h.

Constructor & Destructor Documentation

◆ NASGRiemannSolverView()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::NASGRiemannSolverView ( const NASGRiemannSolver< ScalarNumber, options > &  riemann_solver)
inline

Constructor taking a NASGRiemannSolver object as argument.

Definition at line 296 of file nasg_riemann_solver.h.

Member Function Documentation

◆ newton_tolerance()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::newton_tolerance ( ) const
inline

Return the tolerance for the quadratic Newton stopping criterion.

Definition at line 305 of file nasg_riemann_solver.h.

◆ newton_max_iterations()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE unsigned int ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::newton_max_iterations ( ) const
inline

Return the maximal number of quadratic Newton iterations.

Definition at line 314 of file nasg_riemann_solver.h.

◆ covolume_b()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::covolume_b ( ) const
inline

Return the interpolatory covolume b.

Definition at line 322 of file nasg_riemann_solver.h.

Referenced by ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::one_minus_b_rho().

◆ pinf()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE ScalarNumber ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::pinf ( ) const
inline

◆ compute_expensive_bounds()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE bool ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::compute_expensive_bounds ( ) const
inline

Return whether to compute expensive bounds.

Definition at line 338 of file nasg_riemann_solver.h.

◆ compute()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::compute ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j 
) const

For two given 1D primitive states riemann_data_i and riemann_data_j, compute an upper bound of the maximum wavespeed lambda.

Definition at line 878 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask().

◆ riemann_solution()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE auto ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::riemann_solution ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j,
const Number  p_star 
) const

For two given 1D primitive states riemann_data_i and riemann_data_j, and a given star pressure p_star, compute the resulting wave structure: the star velocity, the star densities left and right of the contact, and all wave speeds.

The star pressure can be exact (see solve()), or an approximation, for example the upper bound p_star_upper_bound(). In the latter case lambda1_minus and lambda3_plus are guaranteed bounds on the extreme wave speeds and u_star is the mean of the velocities obtained from the left and right wave curves.

See [16], §4.2 - §4.4, generalized to the Noble-Abel stiffened gas equation of state.

Cost: 4x pow, 22x division, 6x sqrt (inclusive)

Definition at line 1029 of file nasg_riemann_solver.h.

References ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::RiemannSolution::riemann_data_left.

◆ solve()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE auto ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::solve ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j,
const unsigned int  max_iterations = 100 
) const

For two given 1D primitive states riemann_data_i and riemann_data_j, compute the exact star pressure (up to machine precision, or until max_iterations quadratic Newton steps have been performed) and return the resulting wave structure.

Definition at line 1092 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask().

◆ sample()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE auto ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::sample ( const RiemannSolution &  solution,
const Number &  xi,
const unsigned int  max_iterations = 100 
) const

For a given Riemann solution (see solve() and riemann_solution()) return the self-similar solution \([\rho, u, p, \gamma, a]\) at \(\xi = x / t\).

Inside a rarefaction fan the pressure is computed with (up to max_iterations) Newton steps, see rarefaction_fan_pressure().

Definition at line 1180 of file nasg_riemann_solver.h.

◆ rarefaction_fan_pressure()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::rarefaction_fan_pressure ( const primitive_type &  riemann_data,
const Number &  xi,
const ScalarNumber  sign,
const unsigned int  max_iterations 
) const

Return the pressure inside the rarefaction fan emanating from the given state at \(\xi = x / t\). Here, sign is -1 for the 1-wave and +1 for the 3-wave.

See [16], (4.56) and (4.63), generalized to the Noble-Abel stiffened gas equation of state.

Definition at line 1276 of file nasg_riemann_solver.h.

References ryujin::pow(), and ryujin::safe_division().

◆ one_minus_b_rho()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::one_minus_b_rho ( const Number &  rho) const
inline

Return the covolume \(1 - b rho\)

Definition at line 434 of file nasg_riemann_solver.h.

References ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::covolume_b().

◆ shift()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::shift ( const Number &  p) const
inline

Return the shifted pressure \(p + pinf\)

Definition at line 445 of file nasg_riemann_solver.h.

References ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::pinf().

◆ unshift()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::unshift ( const Number &  p) const
inline

Return the "unshifted" pressure \(p - pinf\)

Definition at line 456 of file nasg_riemann_solver.h.

References ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::pinf().

◆ safe_division()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::safe_division ( const Number &  numerator,
const Number &  denominator 
) const
inline

If options.safe_division is enabled, return a safe division of numerator / denominator.

Definition at line 469 of file nasg_riemann_solver.h.

References ryujin::safe_division().

◆ speed_of_sound()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::speed_of_sound ( const Number &  rho,
const Number &  p,
const Number &  gamma 
) const

The speed of sound \(a = \sqrt{\gamma (p + p_\infty) / (\rho (1 - b \rho))}\) of the Noble-Abel stiffened gas equation of state. Returns zero for vacuum.

Cost: 0x pow, 1x division, 1x sqrt

Definition at line 1350 of file nasg_riemann_solver.h.

References ryujin::safe_division().

◆ rho_star()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::rho_star ( const primitive_type &  riemann_data,
const Number &  p_star 
) const

Return the density of the star state adjacent to the given state for a given star pressure p_star, see [16], (4.50) and (4.53), generalized to the Noble-Abel stiffened gas equation of state.

Cost: 1x pow, 4x division, 0x sqrt

Definition at line 1362 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask(), ryujin::pow(), and ryujin::safe_division().

◆ c()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
template<typename T >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE T ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::c ( const T &  gamma_Z)
static

The function c(gamma) as defined in (A.3) of [2], with a simplified cut-off for gamma > 3.

Cost: 0x pow, 1x division, 1x sqrt

Definition at line 1426 of file nasg_riemann_solver.h.

Referenced by ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::c_of_gamma().

◆ gamma_of()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::gamma_of ( const primitive_type &  riemann_data) const
inline

Return gamma for the given state.

Note
If options.variable_gamma is set to false, then this function return the single (scalar) gamma set via set_gamma().

Definition at line 523 of file nasg_riemann_solver.h.

◆ lambda_factor()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::lambda_factor ( const primitive_type &  riemann_data) const
inline

Return (gamma + 1) / (2 gamma) for the given state.

Definition at line 535 of file nasg_riemann_solver.h.

◆ rarefaction_exponent()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::rarefaction_exponent ( const primitive_type &  riemann_data) const
inline

Return (gamma - 1) / (2 gamma) for the given state.

Definition at line 548 of file nasg_riemann_solver.h.

◆ rarefaction_exponent_inverse()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::rarefaction_exponent_inverse ( const primitive_type &  riemann_data) const
inline

Return 2 gamma / (gamma - 1) for the given state.

Definition at line 561 of file nasg_riemann_solver.h.

◆ half_gamma_minus_one()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::half_gamma_minus_one ( const primitive_type &  riemann_data) const
inline

Return (gamma - 1) / 2 for the given state.

Definition at line 574 of file nasg_riemann_solver.h.

◆ c_of_gamma()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE auto ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::c_of_gamma ( const primitive_type &  riemann_data) const
inline

Return c(gamma) for the given state.

Definition at line 587 of file nasg_riemann_solver.h.

References ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::c().

◆ alpha()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::alpha ( const Number &  rho,
const Number &  gamma,
const Number &  a 
) const

The factor alpha = 2 a (1 - b rho) / (gamma - 1) used in the two-rarefaction and shock-shock bounds of [2].

Cost: 0x pow, 1x division, 0x sqrt

Definition at line 1461 of file nasg_riemann_solver.h.

References ryujin::safe_division().

◆ f()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::f ( const primitive_type &  riemann_data,
const Number  p_star 
) const

See [5], page 912, (3.4), generalized to the Noble-Abel stiffened gas equation of state, see [2].

Cost: 1x pow, 6x division, 1x sqrt

Definition at line 1476 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask(), ryujin::min, ryujin::pow(), and ryujin::safe_division().

◆ df()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::df ( const primitive_type &  riemann_data,
const Number &  p_star 
) const

The derivative of f() with respect to p_star.

See [5], page 912, (3.4), generalized to the Noble-Abel stiffened gas equation of state, see [2].

Cost: 1x pow, 6x division, 1x sqrt

Definition at line 1516 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask(), ryujin::pow(), and ryujin::safe_division().

◆ phi()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::phi ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j,
const Number  p_in 
) const

See [5], page 912, (3.3), generalized to the Noble-Abel stiffened gas equation of state, see [2].

Cost: 2x pow, 12x division, 2x sqrt

Definition at line 1560 of file nasg_riemann_solver.h.

◆ dphi()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::dphi ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j,
const Number &  p 
) const

The derivative of phi() with respect to p.

See [5], page 912, (3.3), generalized to the Noble-Abel stiffened gas equation of state, see [2].

Cost: 2x pow, 12x division, 2x sqrt

Definition at line 1576 of file nasg_riemann_solver.h.

◆ phi_of_p_max()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::phi_of_p_max ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j 
) const

A specialized variant of phi() that computes phi(p_max), see [2]

Cost: 0x pow, 4x division, 2x sqrt

Definition at line 1589 of file nasg_riemann_solver.h.

References ryujin::safe_division().

◆ lambda1_minus()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::lambda1_minus ( const primitive_type &  riemann_data,
const Number  p_star 
) const

See [5], page 912, (3.7)

Cost: 0x pow, 2x division, 1x sqrt

Definition at line 1634 of file nasg_riemann_solver.h.

References ryujin::positive_part(), and ryujin::safe_division().

◆ lambda3_plus()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::lambda3_plus ( const primitive_type &  riemann_data,
const Number  p_star 
) const

See [5], page 912, (3.8)

Cost: 0x pow, 2x division, 1x sqrt

Definition at line 1652 of file nasg_riemann_solver.h.

References ryujin::positive_part(), and ryujin::safe_division().

◆ p_star_upper_bound()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_upper_bound ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j,
const Number &  phi_p_max 
) const

Compute an upper bound on p_star. (In case of two expansion waves the bound is only guaranteed to be less than or equal to p_min.)

Definition at line 1670 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask().

◆ p_star_single_gamma()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_single_gamma ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j,
const Number &  phi_p_max 
) const

Compute an upper bound on p_star for the case of a single gamma (gamma_i == gamma_j) that combines the expansion-shock bound (5.7)/(5.8) and the shock-shock bound (5.10) of [2].

Cost: 2x pow, 2x division, 0x sqrt

Definition at line 1749 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask(), ryujin::positive_part(), ryujin::pow(), and ryujin::safe_division().

◆ p_star_interpolated()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_interpolated ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j 
) const

Compute a simultaneous upper bound on (5.7) second formula for \tilde p_2^\ast (5.8) first formula for \tilde p_1^\ast (5.11) formula for \tilde p_2^\ast in [2]

Cost: 3x pow, 9x division, 2x sqrt

Todo:
improve documentation

Definition at line 1828 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask(), ryujin::positive_part(), ryujin::pow(), and ryujin::safe_division().

◆ p_star_RS_full()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_RS_full ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j 
) const

Compute the best available, but expensive, upper bound on the expansion-shock case as described in §5.4, Eqn. (5.7) and (5.8) in [2]

Cost: 5x pow, 11x division, 1x sqrt

Definition at line 1915 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask(), ryujin::positive_part(), ryujin::pow(), and ryujin::safe_division().

◆ p_star_SS_full()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_SS_full ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j 
) const

Compute the best available, but expensive, upper bound on the shock-shock case as described in §5.5, Eqn. (5.10) and (5.12) in [2]

Cost: 2x pow, 11x division, 5x sqrt (inclusive)

Definition at line 2025 of file nasg_riemann_solver.h.

References ryujin::positive_part(), ryujin::pow(), and ryujin::safe_division().

◆ p_star_failsafe()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_failsafe ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j 
) const

Compute only the failsafe bound for \(\tilde p_2^\ast\) (5.11) in [2]

Cost: 0x pow, 3x division, 3x sqrt

Definition at line 2078 of file nasg_riemann_solver.h.

References ryujin::positive_part(), and ryujin::safe_division().

◆ p_star_two_rarefaction()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_two_rarefaction ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j 
) const

Compute a lower bound on p_star for the case of two rarefaction waves (phi(p_min) > 0). The bound is exact for a single gamma, see [16], (4.46), and it is strictly larger than -pinf unless a vacuum is formed.

Cost: 2x pow, 4x division, 0x sqrt

Definition at line 2134 of file nasg_riemann_solver.h.

References ryujin::compare_and_apply_mask(), ryujin::positive_part(), ryujin::pow(), and ryujin::safe_division().

◆ newton_step()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE void ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::newton_step ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j,
Number &  p_1,
Number &  p_2 
) const

Perform one quadratic Newton step on the bracket p_1 <= p_star <= p_2 of the root of phi, see [5], p. 915f (4.8) and (4.9).

Cost: 8x pow, 51x division, 10x sqrt (inclusive)

Definition at line 2201 of file nasg_riemann_solver.h.

References ryujin::quadratic_newton_step().

◆ compute_gap()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE std::array< Number, 2 > ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::compute_gap ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j,
const Number  p_1,
const Number  p_2 
) const

For two given primitive states riemann_data_i and riemann_data_j, and two guesses p_1 <= p* <= p_2, compute the gap in lambda between both guesses.

See [5], page 914, (4.4a), (4.4b), (4.5), and (4.6)

Cost: 0x pow, 8x division, 4x sqrt

Definition at line 2229 of file nasg_riemann_solver.h.

References ryujin::negative_part(), and ryujin::positive_part().

◆ compute_lambda_max()

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::compute_lambda_max ( const primitive_type &  riemann_data_i,
const primitive_type &  riemann_data_j,
const Number  p_star 
) const

See [5], page 912, (3.9)

For two given primitive states riemann_data_i and riemann_data_j, and a guess p_2, compute an upper bound for lambda.

Cost: 0x pow, 4x division, 2x sqrt (inclusive)

Definition at line 2255 of file nasg_riemann_solver.h.

References ryujin::negative_part(), and ryujin::positive_part().

Friends And Related Symbol Documentation

◆ NASGRiemannSolver

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
template<typename , NASGRiemannSolverOptions >
friend class NASGRiemannSolver
friend

Definition at line 830 of file nasg_riemann_solver.h.

Member Data Documentation

◆ riemann_data_size

template<typename Number , NASGRiemannSolverOptions options, typename MemorySpace >
constexpr unsigned int ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::riemann_data_size = 5
staticconstexpr

Number of components in a primitive state, we store \([\rho, v, p, gamma, a]\).

Definition at line 250 of file nasg_riemann_solver.h.


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