pub fn artificial_viscosity_force(
positions: &[[f64; 3]],
velocities: &[[f64; 3]],
densities: &[f64],
masses: &[f64],
h: f64,
c_s: f64,
alpha: f64,
beta: f64,
) -> Vec<[f64; 3]>Expand description
Artificial viscosity for SPH (Monaghan 1992 formulation).
Adds dissipation to prevent particle interpenetration.
F_i^visc = -sum_j m_j PI_ij nabla W(r_ij, h)
where PI_ij = (-alpha * mu_ij * c_s + beta * mu_ij^2) / rho_ij
and mu_ij = h * v_ij . r_ij / (|r_ij|^2 + 0.01 h^2).