目录
--------------------------------------------------------------------------博主 :mx
基础概念:
SPH(Smoothed Particle Hydrodynamics)算法是一种流体模拟算法。SPH算法的基本设想,就是将连续的流体想象成一个个相互作用的微粒,这些例子相互影响,共同形成了复杂的流体运动,对于每个单独的流体微粒,依旧遵循最基本的牛顿第二定律。但是在SPH算法里,流体的质量是由流体单元的密度决定的,所以一般用密度代替质量。

作用在一个微粒上的作用力由三部分组成

光滑核函数:
和其他流体力学中的数学方法类似,SPH算法同样涉及到“光滑核”的概念,可以这样理解这个概念,粒子的属性都会“扩散”到周围,并且随着距离的增加影响逐渐变小,这种随着距离而衰减的函数被称为“光滑核”函数,最大影响半径为“光滑核半径”。

我们在求解需要的数值的时候不需要求解整个空间的粒子,只需要求解光滑核函数内的值就可以了,可以将光滑核函数理解为一个球或者一个圆,求解时就在这个范围内

其中Aj是要累加的某种属性,mj和pj是周围粒子的质量和密度,r 是该粒子的位置,rj是周围粒子的位置,h是光滑核半径,函数W就是光滑核函数。
对于SPH算法来说,基本流程就是这样,根据光滑核函数逐个推出流体中某点的密度,压力,速度相关的累加函数,进而推导出此处的加速度,从而模拟流体的运动趋势
密度:
我们需要先知道计算密度的光滑核函数称为Poly6函数,具体形式为:

其中Kpoly6是一个固定系数,根据光滑核的规整属性,通过积分计算出这个系数的具体值,在2D情况下,在极坐标中计算积分:

在3D情况下在球坐标中计算积分:

最终ri处密度计算公式为: