> For the complete documentation index, see [llms.txt](https://blog.tsingjyujing.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.tsingjyujing.com/game201/sph.md).

# 光滑粒子法

## 简介

![](https://3247607006-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6TU8XK0hd3CZdz_gQ_%2Fuploads%2Fgit-blob-b8b17344739d2bbc6d9931633b86620bae3bb9cd%2F2020-07-23-13-12-12.png?alt=media)

* 不需要Mesh，适合描述自由表面流体（水，烟不是自由表面流体）

## WCSPH

![](https://3247607006-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6TU8XK0hd3CZdz_gQ_%2Fuploads%2Fgit-blob-bc3081ebaebb6bb924808d17b56b20f92ae52e50%2F2020-07-23-13-15-02.png?alt=media)

用于描述不可压缩的流体。

这里有个神奇的公式：

![](https://3247607006-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6TU8XK0hd3CZdz_gQ_%2Fuploads%2Fgit-blob-50584c16b0224035c25823bfd78dd638383a8f9e%2F2020-07-23-13-22-59.png?alt=media)

严格来说这个公式是不对的，但是这个公式能保证动量守恒，否则有各种奇怪问题。

![](https://3247607006-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6TU8XK0hd3CZdz_gQ_%2Fuploads%2Fgit-blob-532b1d56c2bf8ffa6450dbcf585370f26f68e2df%2F2020-07-23-13-24-08.png?alt=media)

所以SPH的写法就是：

第一个公式（左）是欧拉方程，或者说是无粘流体的纳维-斯托克斯方程。右边是压强的计算公式。

1. 计算每个粒子的密度，主要取决于周边粒子的数量
2. 用那个恶心的一批的公式计算压强的梯度
3. 和弹簧质点模型一样，计算新的v和位置

## 一些变种

![](https://3247607006-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6TU8XK0hd3CZdz_gQ_%2Fuploads%2Fgit-blob-f16b3ab22199d7a9886221c99b0476e3b2b7dddb%2F2020-07-23-13-29-40.png?alt=media)

第一个PCI-SPH，类似隐式时间积分，能得到更好的速度场（接近无散场），也就是更加的“不可压缩”。
