光滑粒子流体动力学 - 粒子密度估计问题

时间:2017-06-30 13:53:24

标签: physics game-physics

我目前正在https://github.com/Mathiasb17/sph_opengl上使用CUDA编写SPH解算器。

我有很好的成绩和表现,但在我看来,出于某种原因,它们看起来仍然很奇怪:

在某些实现中,我看到粒子对其自身的内力(由于公式而无论如何都是0)都没有贡献,但是确实有助于它自己的密度

我的模拟工作非常好" (我不喜欢"非常好",我希望它完美)并且在我的实现中,粒子贡献自己的密度。

此外,当我更改代码以使其确实有助于其自身的密度时,所得到的模拟变得太不稳定(粒子爆炸)。

我问了一个基于物理的动画讲师,他告诉我一个粒子不应该对它的密度做出贡献,但没有给我关于这个断言的具体细节。

知道应该怎么做?

1 个答案:

答案 0 :(得分:1)

只要您使用求和公式而不是连续性公式计算密度,是的,您需要自我贡献。

原因如下:

SPH是一种插值方案,允许您在粒子云上的空间中的任何位置插入特定值。任何位置都意味着您不限于在粒子上进行评估,而是在空间的任何位置进行评估。如果这样做,显然你需要考虑影响半径内的所有粒子。从这个角度来看,很容易看出在粒子位置插入数量不会影响其贡献。

对于其他数量,如力,某些数量的导数近似,您不需要应用自贡献(这将导致0/0的评估)。

发现不稳定的根源:

  • 检查内核是否正常化
  • 是液体的刚度和时间步长相容(对于弱压缩的情况)?