SPH(光滑粒子流体动力学)流体模拟实现二: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)

\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)

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

 

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
光滑颗粒流体动力学SPH)是一种计算流体力学方法,用于模拟粒子流体中的运动。 SPH源程序是指实现SPH算法的计算机代码。 SPH源程序通常由一系列子程序组成,包括初始化粒子的位置和速度,计算粒子之间的相互作用力和压力,更新粒子的位置和速度等。 在SPH源程序中,粒子被假设为具有质量和体积的不可压缩流体颗粒。每个粒子的状态由其位置、速度和其他物理属性(如密度和压力)来描述。通过在流体中采样一系列离散的粒子,并将它们的运动和相互作用计算在内,SPH源程序能够模拟流体的行为。 SPH源程序使用核函数来近似描述粒子之间的相互作用力。核函数决定了粒子之间相互作用的强度和范围。这种相互作用通过计算每对粒子之间的力来实现。该力可以通过使用基本的物理定律,如牛顿运动定律和连续介质力学,来确定。 SPH源程序中还包含了一些数值计算方法和技巧,以提高模拟的准确性和效率。其中一种常见的技术是使用粒子的密度和压力来计算粒子之间的相互作用力,并使用计算流体力学中的迭代方法来更新粒子的位置和速度。 总而言之,光滑颗粒流体动力学SPH)源程序是一种计算流体力学方法的实现,用于模拟粒子流体中运动的行为。通过近似描述粒子之间的相互作用力,使用核函数和基本的物理定律,SPH源程序能够模拟真实流体动力学行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值