---
title: "只靠邻居怎样重建一池会飞溅的水互动实验｜Sandbox Physics"
description: "只看附近邻居的粒子，怎样算出飞溅水体的密度和压强？每个粒子用一个平滑的权重函数把附近邻居加起来，得到当地的密度；再由状态方程把密度换成压强。"
canonical_url: "https://sandboxphysics.com/zh/labs/sph-free-surface-splash/"
language: "zh-CN"
page_type: "lab"
alternate_languages:
  en: "https://sandboxphysics.com/labs/sph-free-surface-splash/"
last_modified: "2026-10-27"
---

流体力学 · 用粒子模拟水花

# SPH Free-Surface Splash

**只看附近邻居的粒子，怎样算出飞溅水体的密度和压强？** 每个粒子用一个平滑的权重函数把附近邻居加起来，得到当地的密度；再由状态方程把密度换成压强。这里把水当成略微可压缩的流体：人为设定的声速越高，密度越接近不变，可时间步也得越小。

这是一个二维弱可压缩 SPH 模拟，用移动的粒子重建自由表面。六个场景里，粒子场、紧支撑核、压强随水深的分布，以及能量和密度误差的历史曲线，都在同一张画布上同步更新。

> 交互仿真：在浏览器中打开本页，即可调整参数并运行模型。

这是二维弱可压缩 SPH 教学模型。密度由 $\rho_i=\sum_j m_j W_{ij}$ 重建，压强由 Tait 形式 $p_i=B\left[\left(\rho_i/\rho_0\right)^7-1\right]$ 给出。人工黏性、简化的壁面和数值凝聚力都是模型里明确保留的简化；水花形状不能当作高保真的工程预测。

物理教程

## SPH 自由表面：怎样从邻居重建一池水

**背景** 光滑粒子流体动力学（SPH）把连续的流体拆成许多会移动的粒子，每颗粒子带着质量、位置和速度。粒子只看一定半径内的邻居，用加权求和估出密度，再在压强梯度、黏性和重力作用下运动。粒子分布的边缘，自然就成了自由表面。

**为什么值得理解** 溃坝、晃荡和液滴撞击里，界面都在剧烈运动。固定网格要另想办法追踪界面；拉格朗日粒子本身就跟着流体走。代价是密度有噪声、边界有误差，显式推进的时间步也受到严格限制。

先抓重点

- **核心问题**: 每颗粒子只知道身边有哪些邻居。合在一起，它们怎样得出压强，让水近似不可压缩，还能表现出自由表面的运动？
- **一句话直觉**: 核函数只在有限范围内不为零，它把身边一圈离散的邻居变成一个连续的估计。数值声速 $c_0$ 越高，密度变化越小，稳定的时间步也越短。在弱可压缩 SPH（WCSPH）里，水越接近不可压缩，算得就越慢。

### 核心数学模型

#### SPH 密度求和

$$
\rho_i=\sum_j m_j W\!\left(\lVert\boldsymbol r_i-\boldsymbol r_j\rVert,h\right)
$$

三次样条核只在有限的支撑半径内不为零。水体内部的粒子四周几乎都有邻居；自由表面上的粒子在空气一侧没有邻居，邻域被截掉了一块。

#### 对称压强力与黏性

$$
\frac{\mathrm d\boldsymbol v_i}{\mathrm dt}=-\sum_j m_j\left(\frac{p_i}{\rho_i^2}+\frac{p_j}{\rho_j^2}\right)\nabla_i W_{ij}+\nu\nabla^2\boldsymbol v_i+\boldsymbol g
$$

压强项对每一对粒子都是对称的，所以力总是成对出现。这里的黏性拉普拉斯项、壁面反弹和凝聚项，都是低阶的教学近似。

#### Tait 状态方程与声学 CFL

$$
p_i=\frac{\rho_0c_0^2}{\gamma}\left[\left(\frac{\rho_i}{\rho_0}\right)^\gamma-1\right],\qquad \Delta t\leq C\frac{h}{c_0+\max_i\lVert\boldsymbol v_i\rVert},\qquad \gamma=7
$$

状态方程让水可以有限度地压缩，换来显式推进。提高数值声速能压低密度误差，允许的时间步也随之变小。

### 常见难点

#### 粒子不是水分子

**容易误解** 画面里的一颗蓝点就是一颗真实水分子。

**正确理解** 每个 SPH 粒子代表一小块有限体积的流体，带着平滑后的质量、速度和热力学状态。它不是分子尺度的个体。

#### 漂亮水花不等于收敛

**容易误解** 皇冠形的水花看起来像回事，求解器就算验证过了。

**正确理解** 先检查总质量、内部密度误差、静水关系 $p=\rho g d$、自由落体时质心的运动，以及改变粒子间距后结果是否稳定。看起来像，只能算最后一层证据。

### 动手实验

1. 01

   #### 看核邻域怎样估出密度

   暂停溃坝场景，先点一颗内部粒子，再点一颗自由表面上的粒子，比较 A 面板的支撑圆和 B 面板的邻居数。

   **你会看到：** 内部粒子四周的邻居更齐全，各个方向几乎一样多；表面粒子缺了空气一侧的邻居，密度求和在边界处就偏小。

2. 02

   #### 检验静水压强

   选择“静水检验”，降低黏性后逐步推进，比较 C 面板的粒子压强点与静水直线。

   **你会看到：** 越深压强总体越高，但粒子噪声、壁面处理和自由表面处偏小的密度，都会让散点偏离解析直线。

3. 03

   #### 比较声速和时间步

   在相同场景分别选择较低和较高数值声速，重置后比较体相密度 RMS 与声学时间步读数。

   **你会看到：** 声速越高，密度波动通常越小，时间步却要更短。弱可压缩 SPH 的计算代价就在这里。

4. 04

   #### 做分辨率检查

   依次改变粒子间距并重置溃坝，在相近模拟时刻比较前沿位置、密度误差与历史曲线。

   **你会看到：** 粒子数、邻域采样和允许的时间步会一起变。如果结论随分辨率大幅变化，单次飞溅就不能当作可靠的预测。

物理结论

SPH 的灵活来自局部的核求和，以及跟着流体走的粒子。要相信它的结果，就得把状态方程、时间步、边界和分辨率带来的误差都摆出来看。

概念灵感：[FluidMotion](http://www.bugman123.com/FluidMotion/index.html)。模拟和图形都是原创，模型的适用范围见上文。

场、流体与物质 · 入门路径

## 从电场到电子显微镜

先看懂电场、学会操控带电粒子，再算出电子的波长，用电子束观察晶体和表面。

[从这里开始 → **看见电场** 在偶极子周围移动探针，看电场是不是总指向电势地形的下坡方向。 观察 · 8 分钟](https://sandboxphysics.com/zh/labs/electric-field/)

1. [1 看见电场](https://sandboxphysics.com/zh/labs/electric-field/)
2. [2 电荷在场中转弯](https://sandboxphysics.com/zh/labs/charged-particle/)
3. [3 电子波长与加速电压](https://sandboxphysics.com/zh/labs/electron-wavelength/)
4. [4 电子衍射与倒空间](https://sandboxphysics.com/zh/labs/electron-diffraction/)
5. [5 TEM 明场、暗场与选区衍射](https://sandboxphysics.com/zh/labs/tem-mode-selector/)
6. [6 SEM 二次电子表面形貌](https://sandboxphysics.com/zh/labs/sem-topography/)

[查看完整路径 →](https://sandboxphysics.com/zh/topics/fields-and-matter/#starter-path)
