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

Smoothed Particle Hydrodynamics - Particle Density Estimation Issue

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

我取得了不错的成绩和表现,但出于某种原因在我看来它们仍然很奇怪:

在某些实现中,我发现粒子对其自身的内力没有贡献(根据公式,它无论如何都是 0),但它 对它的内力有贡献拥有密度.

我的模拟工作 "pretty fine"(我不喜欢 "pretty fine",我希望它完美)并且在我的实现中粒子 没有 有助于自己的密度。

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

我问过一位物理学动画的讲师,他告诉我粒子不应该影响它的密度,但没有给我关于这个断言的具体细节。

知道应该怎么做吗?

只要你用求和公式而不是连续性方程来计算密度,是的,你需要自己贡献。

原因如下:

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

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

发现不稳定的根源:

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