25 inline static constexpr Tscal v_alfven(Tvec B, Tscal rho, Tscal mu_0) {
26 return sycl::sqrt(sycl::dot(B, B) / (mu_0 * rho));
29 inline static constexpr Tscal v_shock(Tscal cs, Tvec B, Tscal rho, Tscal mu_0) {
30 return sycl::sqrt(cs * cs + v_alfven(B, rho, mu_0) * v_alfven(B, rho, mu_0));
33 inline static constexpr Tscal vsigB(Tvec v_ab, Tvec r_ab_unit) {
34 Tvec v_cross_r = sycl::cross(v_ab, r_ab_unit);
35 Tscal vsig_B_a = sycl::sqrt(
36 v_cross_r[0] * v_cross_r[0] + v_cross_r[1] * v_cross_r[1]
37 + v_cross_r[2] * v_cross_r[2]);
41 inline static constexpr Tscal vsig_MHD(
50 Tscal v_ab_r_ab = sycl::dot(v_ab, r_ab_unit);
51 Tscal abs_v_ab_r_ab = sycl::fabs(v_ab_r_ab);
52 Tscal v_a = v_shock(cs_a, B_a, rho_a, mu_0);
53 Tscal vsig = alpha_av * v_a + beta_av * abs_v_ab_r_ab;