SHP(光滑粒子流体动力学)流体模拟实现二:SPH算法(2)-粒子受力分析

流体模拟(二)

SPH算法的粒子受力分析:

SPH算法的基本设想,就是将连续的流体想象成一个个相互作用的微粒,这些粒子相互影响,共同形成了复杂的流体运动。其实现的原理则是我们在初始空间里创建多个粒子,每个粒子拥有自己的特定属性。如位置,半径,所受重力黏力等等。因此在下一帧运动的时候,每个粒子检索周围一定范围内的粒子,根据它们的位置(即计算出周围的粒子和当前粒子的间隔)重新计算黏力和压力,以及每个粒子都受重力影响,根据力计算新的加速度和速度,然后每一帧重复上述计算。因此我们便可以给所有粒子赋值初始位置,粒子就能自动的开始动画直到最后平稳下来。

对于每个单独的流体微粒,依旧遵循最基本的牛顿第二定律:

                                                                                                m\vec{a} =\vec{F}                                                                                      (2.1)

这是我们分析的基础,在SPH算法里,流体的质量是由流体单元的密度决定的,所以一般用密度代替质量:

                                                                                                \rho \vec{a} =\vec{F}                                                                                       (2.2)

这里的的作用力F的量纲发生变化,正常情况下,“力”的量纲dimF=MT^{-2}L,而在这里dimF=MT^{-2}L^{-2},后面的分析都是用这个量纲的“作用力”,这一点一定要注意。作用在一个微粒上的作用力由三部分组成:

                                                                          \vec{F} =\vec{F}^{external}+\vec{F}^{pressure}+\vec{F}^{viscosity}                                                               (2.3)

其中\vec{F}^{external}称为外部力,一般就是重力:

                                                                                          \vec{F}^{external}=\rho \vec{g}                                                                                   (2.4)

扫描二维码关注公众号,回复: 9127441 查看本文章

\vec{F}^{pressure}是由流体内部的压力差产生的作用力,试想一下在水管中流动的液体,进水口区域的压力一定会比出水口区域大,所以液体才会源源不断的流动,数值上,它等于压力场的梯度,方向由压力高的区域指向压力低的区域:

                                                                                        \vec{F}^{pressure}=−\bigtriangledown p                                                                                 (2.5)

\vec{F}^{viscosity}是由粒子之间的速度差引起的,设想在流动的液体内部,快速流动的部分会施加类似于剪切力的作用力到速度慢的部分,这个力的大小跟流体的粘度系数μ以及速度差有关:

                                                                                       \vec{F}^{viscosity}=\rho \bigtriangledown ^{2}\vec{u}                                                                                (2.6)

带入公式ρ\vec{a} =\vec{F},可以得到:

                                                                                    \rho \vec{a}=\rho \vec{g}-\bigtriangledown p+\mu \bigtriangledown ^{2}\vec{u}                                                                       (2.7)

加速度则为:

                                                                                  \vec{a}= \vec{g}-\frac{\bigtriangledown p}{\rho }+ \frac{\mu \bigtriangledown ^{2}\vec{u}}{\rho }                                                                            (2.8)

上述就是粒子的运动学计算方法了。

发布了22 篇原创文章 · 获赞 22 · 访问量 2592

猜你喜欢

转载自blog.csdn.net/qq_39300235/article/details/102496047
今日推荐