37 const typename FSpec::Tprim &prim_l,
38 const typename FSpec::Tprim &prim_r,
39 const typename FSpec::Tvec &n) {
40 using Tscal =
typename FSpec::Tscal;
41 using Tcons =
typename FSpec::Tcons;
43 const Tscal vn_l = fspec.vn(prim_l, n);
44 const Tscal vn_r = fspec.vn(prim_r, n);
47 const Tscal S = sham::max(sham::abs(vn_l), sham::abs(vn_r));
50 const Tcons f_l = fspec.flux(prim_l, n, vn_l);
51 const Tcons f_r = fspec.flux(prim_r, n, vn_r);
53 const Tcons c_l = fspec.prim_to_cons(prim_l);
54 const Tcons c_r = fspec.prim_to_cons(prim_r);
56 return 0.5 * ((f_l + f_r) - S * (c_r - c_l));
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.