29 inline constexpr typename FSpec::Tcons
hll_flux(
31 const typename FSpec::Tprim &prim_l,
32 const typename FSpec::Tprim &prim_r,
33 const typename FSpec::Tvec &n) {
34 const auto cs_l = fspec.sound_speed(prim_l);
35 const auto cs_r = fspec.sound_speed(prim_r);
37 const auto vn_l = fspec.vn(prim_l, n);
38 const auto vn_r = fspec.vn(prim_r, n);
47 const auto S_l = sham::min(vn_l - cs_l, vn_r - cs_r);
48 const auto S_r = sham::max(vn_l + cs_l, vn_r + cs_r);
52 const auto flux_l = fspec.flux(prim_l, n, vn_l);
53 const auto flux_r = fspec.flux(prim_r, n, vn_r);
70 const auto cons_l = fspec.prim_to_cons(prim_l);
71 const auto cons_r = fspec.prim_to_cons(prim_r);
73 const auto S_norm = 1.0 / (S_r - S_l);
74 return (flux_l * S_r - flux_r * S_l + (cons_r - cons_l) * S_r * S_l) * S_norm;
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.