目录
--------------------------------------------------------------------------博主 :mx
基础概念:
SPH(Smoothed Particle Hydrodynamics)算法是一种流体模拟算法。SPH算法的基本设想,就是将连续的流体想象成一个个相互作用的微粒,这些例子相互影响,共同形成了复杂的流体运动,对于每个单独的流体微粒,依旧遵循最基本的牛顿第二定律。但是在SPH算法里,流体的质量是由流体单元的密度决定的,所以一般用密度代替质量。
![91d3b6d1993891a2eca22e73ba788d4a.png](https://img-blog.csdnimg.cn/img_convert/91d3b6d1993891a2eca22e73ba788d4a.png)
作用在一个微粒上的作用力由三部分组成
![f60a5b2b051392c2b12392582d593555.png](https://img-blog.csdnimg.cn/img_convert/f60a5b2b051392c2b12392582d593555.png)
光滑核函数:
和其他流体力学中的数学方法类似,SPH算法同样涉及到“光滑核”的概念,可以这样理解这个概念,粒子的属性都会“扩散”到周围,并且随着距离的增加影响逐渐变小,这种随着距离而衰减的函数被称为“光滑核”函数,最大影响半径为“光滑核半径”。
![23325e79f03ff3f270f06890f42265cd.png](https://img-blog.csdnimg.cn/img_convert/23325e79f03ff3f270f06890f42265cd.png)
我们在求解需要的数值的时候不需要求解整个空间的粒子,只需要求解光滑核函数内的值就可以了,可以将光滑核函数理解为一个球或者一个圆,求解时就在这个范围内
![2a72d628461d3f4a4fab3c1b3cd498a6.png](https://img-blog.csdnimg.cn/img_convert/2a72d628461d3f4a4fab3c1b3cd498a6.png)
其中Aj是要累加的某种属性,mj和pj是周围粒子的质量和密度,r 是该粒子的位置,rj是周围粒子的位置,h是光滑核半径,函数W就是光滑核函数。
对于SPH算法来说,基本流程就是这样,根据光滑核函数逐个推出流体中某点的密度,压力,速度相关的累加函数,进而推导出此处的加速度,从而模拟流体的运动趋势
密度:
我们需要先知道计算密度的光滑核函数称为Poly6函数,具体形式为:
![e65fc755b37bd1eda6e111d2aaaffcc1.png](https://img-blog.csdnimg.cn/img_convert/e65fc755b37bd1eda6e111d2aaaffcc1.png)
其中Kpoly6是一个固定系数,根据光滑核的规整属性,通过积分计算出这个系数的具体值,在2D情况下,在极坐标中计算积分: