22namespace shamrock::sph {
25 inline static constexpr Tscal vsig_hydro(
26 const Tscal &abs_v_ab_r_ab,
28 const Tscal &alpha_av,
29 const Tscal &beta_av) {
30 return alpha_av * cs_a + beta_av * abs_v_ab_r_ab;
35 inline static constexpr Tscal vsig_u(
36 const Tscal &P_a,
const Tscal &P_b,
const Tscal &rho_a,
const Tscal &rho_b) {
37 Tscal rho_avg = (rho_a + rho_b) * 0.5;
38 Tscal abs_dp = sham::abs(P_a - P_b);
39 return sycl::sqrt(abs_dp / rho_avg);
59 template<
class Tvec,
class Tscal>
62 const Tscal &rho_a_sq,
63 const Tscal &rho_b_sq,
68 const Tvec &nabla_Wab_ha,
69 const Tvec &nabla_Wab_hb) {
71 Tscal sub_fact_a = rho_a_sq * omega_a;
72 Tscal sub_fact_b = rho_b_sq * omega_b;
78 return -m_b * (acc_a + acc_b);
99 template<
class Tvec,
class Tscal>
102 const Tscal &rho_a_sq,
103 const Tscal &rho_b_sq,
106 const Tscal &omega_a,
107 const Tscal &omega_b,
110 const Tvec &nabla_Wab_ha,
111 const Tvec &nabla_Wab_hb) {
137 template<
class Tvec,
class Tscal>
141 const Tscal &inv_omega_a_2_rho_a,
143 const Tvec &grad_W_ab) {
144 return P_a * inv_omega_a_2_rho_a * pmass * sycl::dot(v_ab, grad_W_ab);
160 template<
class Tscal>
163 const Tscal &alpha_u,
166 const Tscal &Fab_inv_omega_a_rho_a,
167 const Tscal &Fab_inv_omega_b_rho_b) {
168 return pmass * alpha_u * vsig_u * u_ab * Tscal(0.5)
169 * (Fab_inv_omega_a_rho_a + Fab_inv_omega_b_rho_b);
172 template<
class Tvec,
class Tscal>
173 inline void add_to_derivs_sph_artif_visco_cond(
175 const Tscal &rho_a_sq,
176 const Tscal &omega_a_rho_a_inv,
177 const Tscal &rho_a_inv,
179 const Tscal &omega_a,
180 const Tscal &omega_b,
187 const Tscal &alpha_u,
190 const Tvec &r_ab_unit,
199 Tscal AV_P_a = P_a + qa_ab;
200 Tscal AV_P_b = P_b + qb_ab;
202 dv_dt += sph_pressure_symetric(
216 du_dt += duint_dt_pressure(
217 pmass, AV_P_a, omega_a_rho_a_inv * rho_a_inv, v_ab, r_ab_unit * Fab_a);
219 du_dt += lambda_shock_conductivity(
224 Fab_a * omega_a_rho_a_inv,
225 Fab_b / (rho_b * omega_b));
T inv_sat_zero(T v, T satval=T{0.}) noexcept
inverse saturated (zero version)
Tvec sph_pressure_symetric(const Tscal &m_b, const Tscal &rho_a_sq, const Tscal &rho_b_sq, const Tscal &P_a, const Tscal &P_b, const Tscal &omega_a, const Tscal &omega_b, const Tvec &nabla_Wab_ha, const Tvec &nabla_Wab_hb)
eq.34, with
Tvec sph_pressure_symetric_av(const Tscal &m_b, const Tscal &rho_a_sq, const Tscal &rho_b_sq, const Tscal &P_a, const Tscal &P_b, const Tscal &omega_a, const Tscal &omega_b, const Tscal &qa_ab, const Tscal &qb_ab, const Tvec &nabla_Wab_ha, const Tvec &nabla_Wab_hb)
eq.34
Tscal duint_dt_pressure(const Tscal &pmass, const Tscal &P_a, const Tscal &inv_omega_a_2_rho_a, const Tvec &v_ab, const Tvec &grad_W_ab)
eq.35
Tscal lambda_shock_conductivity(const Tscal &pmass, const Tscal &alpha_u, const Tscal &vsig_u, const Tscal &u_ab, const Tscal &Fab_inv_omega_a_rho_a, const Tscal &Fab_inv_omega_b_rho_b)
eq.42