![]() |
ryujin 2.1.1 revision 8e904ddb3fa1d9e336dac21cf982add6a65e5467
|
#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) |
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.
| using ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::ScalarNumber = typename get_value_type<Number>::type |
Definition at line 241 of file nasg_riemann_solver.h.
| using ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::Parameters = typename NASGRiemannSolver<ScalarNumber, options>::Parameters |
Definition at line 243 of file nasg_riemann_solver.h.
| 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.
|
inline |
Constructor taking a NASGRiemannSolver object as argument.
Definition at line 296 of file nasg_riemann_solver.h.
|
inline |
Return the tolerance for the quadratic Newton stopping criterion.
Definition at line 305 of file nasg_riemann_solver.h.
|
inline |
Return the maximal number of quadratic Newton iterations.
Definition at line 314 of file nasg_riemann_solver.h.
|
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().
|
inline |
Return the interpolatory reference pressure pinf.
Definition at line 330 of file nasg_riemann_solver.h.
Referenced by ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::shift(), and ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::unshift().
|
inline |
Return whether to compute expensive bounds.
Definition at line 338 of file nasg_riemann_solver.h.
| 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().
| 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.
| 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().
| 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.
| 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().
|
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().
|
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().
|
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().
|
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().
| 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().
| 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().
|
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().
|
inline |
Return gamma for the given state.
Definition at line 523 of file nasg_riemann_solver.h.
|
inline |
Return (gamma + 1) / (2 gamma) for the given state.
Definition at line 535 of file nasg_riemann_solver.h.
|
inline |
Return (gamma - 1) / (2 gamma) for the given state.
Definition at line 548 of file nasg_riemann_solver.h.
|
inline |
Return 2 gamma / (gamma - 1) for the given state.
Definition at line 561 of file nasg_riemann_solver.h.
|
inline |
Return (gamma - 1) / 2 for the given state.
Definition at line 574 of file nasg_riemann_solver.h.
|
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().
| 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().
| 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().
| 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().
| 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.
| 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.
| 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().
| 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().
| 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().
| 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().
| 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().
| 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
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().
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
|
friend |
Definition at line 830 of file nasg_riemann_solver.h.
|
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.