27 using RiemannSolverMode = shammodels::basegodunov::RiemannSolverMode;
29 using Direction = shammodels::basegodunov::modules::Direction;
34 template<
class Tvec, Direction dir>
36 if constexpr (dir == Direction::xp) {
38 }
else if constexpr (dir == Direction::xm) {
39 return Tvec{-1, 0, 0};
40 }
else if constexpr (dir == Direction::yp) {
42 }
else if constexpr (dir == Direction::ym) {
43 return Tvec{0, -1, 0};
44 }
else if constexpr (dir == Direction::zp) {
46 }
else if constexpr (dir == Direction::zm) {
47 return Tvec{0, 0, -1};
59 template<shammath::Flu
idStateAdiabaticSpec FSpec, RiemannSolverMode mode, Direction dir>
62 const typename FSpec::Tprim &prim_l,
63 const typename FSpec::Tprim &prim_r) {
66 if constexpr (mode == RiemannSolverMode::Rusanov) {
69 if constexpr (mode == RiemannSolverMode::HLL) {
72 if constexpr (mode == RiemannSolverMode::HLLC) {
82 template<shammath::DustFlu
idStateSpec FSpec, DustRiemannSolverMode mode, Direction dir>
85 const typename FSpec::Tprim &prim_l,
86 const typename FSpec::Tprim &prim_r) {
constexpr bool always_false_v
Helper variable template that is always false. Especially useful to perform static asserts based on t...
constexpr FSpec::Tcons huang_bai_flux(const FSpec &fspec, const typename FSpec::Tprim &prim_l, const typename FSpec::Tprim &prim_r, const typename FSpec::Tvec &n)
Huang & Bai dust flux across a face with unit normal n.
constexpr FSpec::Tcons rusanov_flux(const FSpec &fspec, const typename FSpec::Tprim &prim_l, const typename FSpec::Tprim &prim_r, const typename FSpec::Tvec &n)
Rusanov flux across a face with unit normal n.
constexpr FSpec::Tcons hll_flux(const FSpec &fspec, const typename FSpec::Tprim &prim_l, const typename FSpec::Tprim &prim_r, const typename FSpec::Tvec &n)
HLL flux across a face with unit normal n.
constexpr FSpec::Tcons hllc_adiab_toro_flux(const FSpec &fspec, const typename FSpec::Tprim &prim_l, const typename FSpec::Tprim &prim_r, const typename FSpec::Tvec &n)
HLLC solver based on section 10.4 from Toro 3rd Edition , Springer 2009. The wave speeds estimates ar...
constexpr FSpec::Tcons d_hll_flux(const FSpec &fspec, const typename FSpec::Tprim &prim_l, const typename FSpec::Tprim &prim_r, const typename FSpec::Tvec &n)
Dust HLL flux across a face with unit normal n.
namespace for the basegodunov model modules
constexpr FSpec::Tcons riemann_dust_flux(const FSpec &fspec, const typename FSpec::Tprim &prim_l, const typename FSpec::Tprim &prim_r)
Dispatch to the dust Riemann solver selected by mode, for a face with unit normal along dir....
constexpr FSpec::Tcons riemann_flux(const FSpec &fspec, const typename FSpec::Tprim &prim_l, const typename FSpec::Tprim &prim_r)
Dispatch to the gas Riemann solver selected by mode, for a face with unit normal along dir....
constexpr Tvec dir_normal()
Unit normal vector of a face pointing in the given direction.
DustRiemannSolverMode
Dust Riemann solver mode enum.
@ HB
Huang and Bai. Pressureless Riemann solver by Huang and Bai (2022) in Athena++.
@ DHLL
Dust HLL. This is merely the HLL solver for dust. It's then a Rusanov like.
Umbrella header pulling in the gas states and all gas Riemann solvers (Rusanov, HLL,...
Umbrella header pulling in the dust states and all dust Riemann solvers (HLL, Huang & Bai).