SPH代码中质量的理解

代码中,有一个计算质量的地方,如下所示:

这里的公式: m_V = 0.8 * self.particle_diameter ** self.dim ,没看明白这是在计算什么。是计算质量么?如果是质量的话,应该是np.pi*(self.particle_radius**2)*1000才对把?

这里是计算粒子的体积,近似的把每个粒子当一个cube,0.8这里可以认为是一个经验值,让粒子的排布不要过于紧密。

SPH的使用公式应该是: f(p_i) = \sum_j V_j \cdot f(p_j) \cdot W(p_i-p_j, h)

如果我现在想要计算密度,那么公式是: f(p_i) = \sum_j V_j \cdot density_{pj} \cdot W(p_i-p_j, h)

这里的 V_jj 粒子的体积, density_{pj}j 粒子的密度。

但是,代码中的公式是:

self.ps.m_V * self.cubic_kernel((x_i - x_j).norm())中,self.ps.m_V是体积,self.cubic_kernel是权重。但是,这里没有乘以 density_{pj} ?感觉跟SPH的公式没对上呀?

23行没有乘以密度,是放到24行最后一起乘了

1 Like