在代码中,有一个计算质量的地方,如下所示:
这里的公式: m_V = 0.8 * self.particle_diameter ** self.dim
,没看明白这是在计算什么。是计算质量么?如果是质量的话,应该是np.pi*(self.particle_radius**2)*1000
才对把?
mzhang
#2
这里是计算粒子的体积,近似的把每个粒子当一个cube,0.8这里可以认为是一个经验值,让粒子的排布不要过于紧密。
1 个赞
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_j 是j
粒子的体积, 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
的公式没对上呀?