当半径为0时,我们使用什么排斥方向进行平滑粒子流体动力学?

时间:2013-04-23 18:19:34

标签: simulation physics game-physics fluid fluid-dynamics

当进行SPH时,Kelagar的论文建议使用特定的内核来处理颗粒之间的压力感应力。当半径在内核半径范围内时,它推荐的内核如下:

(15/(pi*h^9)) * (h - r)^3

其中h是内核半径,r是我们有兴趣计算函数值的半径。

然后论文指出这个函数的梯度是

(-45/(pi*h^9))*((r_vec)/r)*(h-r)^2

其中r_vec现在是从内核中心到我们感兴趣的点的向量。当r_vec的长度从正方向变为0时,论文表明该梯度接近:

(-45/(pi*h^6))

但这是一个标量,而不是矢量。为了在我们感兴趣的两点之间产生排斥,需要有一个排斥的方向。

当两个粒子彼此相邻时,我们应该使用哪个方向?

1 个答案:

答案 0 :(得分:0)

我认为第一个表达意味着潜力。然后,负梯度(相对于r的导数)就是力。此渐变是一个向量,始终指向或远离中心。对于第二个表达式,这似乎是正确的

根据你的说法,r_vec是一个指向远离原点的矢量到距离r一点的点。 (r_vec / r)则是指定方向的单位矢量。这适用于除原点本身之外的每个点,它可以声明为未定义,或声明为零。零是所有“附近”点上(r_vec / r)的平均值。这意味着零力。

通常在具有成对力的粒子模拟中,我们忽略粒子对自身的力,以及两个粒子在相同精确位置的力。两个粒子非常接近,你有一个像1 / r,1 /(r ^ 2)或类似的力法则?没人想要零故障。通常存在一个小的半径,低于该半径,电势恒定,与该半径边界处的给定电位公式相匹配。太靠近的粒子没有力,只是模拟不会崩溃。当力量在它外面猛烈地强大时,它突然停在那个边界内似乎是非物质的。但我们努力避免这种情况。保持这种发生率的计数,如果有太多,模拟就变坏了。也许需要更小的时间步骤。

幸运的是,你没有1 / r类型的力量,但你仍然有那个讨厌的r_vec / r,其方向可以疯狂地摆动。将力零置于某个微小半径以下的相同技术将有所帮助。

但第三个表达困扰我。如果它在r = 0处有力,那么从第二个表达式中的力法开始,我不确定第三个表达式是如何产生的。它看起来像标量的问题,如果它应该是力,期望向量可以通过理解它意味着力矢量的径向分量来解决。只需将表达式乘以(r_vec / r),即熟悉的单位幅度向量。 OTOH,它没有明确的方向,所以这是无稽之谈。

更好的整体解决方案:从一个新的潜在函数开始,一个平滑平稳,在r = 0时平坦,如exp(-r ^ 2)或1 /(1 + r ^ 2)。给定的潜在峰值急剧上升。你想要更像的东西而不是在一个小区域内声明力零,在r = 0时力就自然为零。找到一个原点平坦的势,它在一个小半径范围内近似于给定的一个井。