37namespace shammodels::gsph {
69 template<
class Tvec,
class Tscal>
84 Tvec v_star_vec = v_star * r_ab_unit;
88 Tscal sub_fact_a = rho_a_sq * omega_a;
89 Tscal sub_fact_b = rho_b_sq * omega_b;
95 return -sycl::dot(f, v_star_vec - v_a);
120 template<
class Tvec,
class Tscal>
136 const Tscal rho_a_sq = rho_a * rho_a;
137 const Tscal rho_b_sq = rho_b * rho_b;
140 Tvec nabla_W_a = Fab_a * r_ab_unit;
141 Tvec nabla_W_b = Fab_b * r_ab_unit;
146 m_b, rho_a_sq, rho_b_sq, p_star, p_star, omega_a, omega_b, nabla_W_a, nabla_W_b);
186 template<
class Tvec,
class Tscal>
198 dv_dt -= m_b * p_star * V2_ij * grad_W_ij;
200 Tvec v_star_vec = v_star * r_ab_unit;
201 du_dt -= m_b * p_star * V2_ij * sycl::dot(grad_W_ij, v_star_vec - v_a);
231 template<
class Kernel,
class Tvec,
class Tscal>
233 bool use_inutsuka_v2,
250 if (use_inutsuka_v2) {
253 const Tscal vol_a = Tscal{1} / rho_a;
254 const Tscal vol_b = Tscal{1} / rho_b;
259 constexpr Tscal sqrt2 = shambase::constants::sqrt_2<Tscal>;
260 const Tscal Fab2_a = Kernel::dW_3d(rab, sqrt2 * h_a);
261 const Tscal Fab2_b = Kernel::dW_3d(rab, sqrt2 * h_b);
262 const Tvec grad_W_ij = (Fab2_a + Fab2_b) * r_ab_unit;
265 pmass, p_star, v_star, face.V2, grad_W_ij, r_ab_unit, vxyz_a, sum_axyz, sum_du_a);
267 const Tscal Fab_a = Kernel::dW_3d(rab, h_a);
268 const Tscal Fab_b = Kernel::dW_3d(rab, h_b);
Class holding the value of numerous constants generated from the following source.
void accumulate_gsph_pair_force(bool use_inutsuka_v2, Tscal pmass, Tscal p_star, Tscal v_star, Tscal rho_a, Tscal rho_b, Tscal omega_a, Tscal omega_b, Tscal rab, Tscal rab_inv, Tscal h_a, Tscal h_b, Tvec r_ab_unit, Tvec vxyz_a, Tvec &sum_axyz, Tscal &sum_du_a)
Dispatch a single neighbor pair's force contribution to ChaWhitworth or InutsukaV2,...
void add_gsph_force_contribution_inutsuka(Tscal m_b, Tscal p_star, Tscal v_star, Tscal V2_ij, Tvec grad_W_ij, Tvec r_ab_unit, Tvec v_a, Tvec &dv_dt, Tscal &du_dt)
Add Inutsuka (2002) GSPH force contribution from a single neighbor pair.
void add_gsph_force_contribution(Tscal m_b, Tscal p_star, Tscal v_star, Tscal rho_a, Tscal rho_b, Tscal omega_a, Tscal omega_b, Tscal Fab_a, Tscal Fab_b, Tvec r_ab_unit, Tvec v_a, Tvec &dv_dt, Tscal &du_dt)
Add GSPH force contribution from a single neighbor pair.
Tscal gsph_energy_rate(Tscal m_b, Tscal p_star, Tscal v_star, Tscal rho_a_sq, Tscal rho_b_sq, Tscal omega_a, Tscal omega_b, Tvec v_a, Tvec r_ab_unit, Tvec nabla_W_a, Tvec nabla_W_b)
Compute GSPH energy equation contribution.
Iterative Riemann solver for GSPH (van Leer 1997).
T inv_sat_zero(T v, T satval=T{0.}) noexcept
inverse saturated (zero version)
Effective face (volume element) interpolation for the Inutsuka (2002) GSPH formulation.
EffectiveFace< Tscal > lin_v2_sast_ij(Tscal vol_a, Tscal vol_b, Tscal h_a, Tscal h_b, Tscal rab_inv)
Linear (1st order) interpolation of the effective face between a pair.
file containing formulas for sph forces
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)
phantom_2018 eq.34, with