一、SWE 的基本条件
SWE(Shallow Water Equations, 浅水方程)是一组用"水深"和"水平流动"来描述水体运动的方程。
它把水体划分成许多竖直的水柱,每根水柱记录自己的深度、流动方向、水柱之间的水交换和动量。在每一时间步的模拟下,水面便会自然产生起、波传播、反射以及绕流。它将三维水体沿竖直方向进行平均,因此只需要在二维平面上求解,就能得到随时间变化的水面。
SWE中最重要的几个量:
| 符号 | 含义 | 单位 |
|---|---|---|
| b(x, z) | 底床高度,即水底地形的世界高度 | m |
| η(x, z, t) | 水面高度,即水面的世界高度 | m |
| h(x, z, t) | 水深,从底床到水面的竖直距离 | m |
| u(x, z, t) | 沿 x 方向的深度平均流速 | m/s |
| v(x, z, t) | 沿 y 方向的深度平均流速 | m/s |
| g | 重力加速度 | m/s² |
三种高度之间满足:
η=b+h η = b + h η=b+h
也就是
h=η−b h = η - b h=η−b
这里需要明白:水深 h 和水面高度 η 是两个不同的量。底床越低,即使水面保持水平,水深也会越大。
"浅水"描述的是水深相对于水平运动尺度很小。 ,即
设典型水深为H,水平运动尺度为 L,浅水近似要求:
HL<<1 \frac{H}{L} << 1 LH<<1
对波浪而言,L 可以取与波长有关的尺度。更严格地说,长波条件可写成:
kH<<1,k=2πλ kH << 1, k = \frac{2\pi}{\lambda} kH<<1,k=λ2π
其中 λ 是波长。
因此,判断能否使用 SWE,需要同时看水深和你希望模拟的波长。例如,同样是 1 米深的水,几十到上百米尺度的长波,比几厘米尺度的细碎波纹更符合浅水近似。
这里比较的水平尺度也不是数值网格间距 Δx。 把网格划得更细,只能改善求解精度,不能改变物理模型的适用范围。浅水近似的核心是竖直尺度远小于水平尺度。
它主要做了以下简化:
- 水近似不可压缩、密度近似不变。
- 竖直方向近似满足静水压力分布。
- 用深度平均速度代表整根水柱的水平运动。
- 基础模型暂时忽略黏性、底部摩擦、风力等作用,需要时再加入。
其中,"忽略竖直加速度的主要影响"并不意味着水完全没有上下运动。水面仍然能够升降,只是基础 SWE 不独立求解完整的三维竖直运动。
另外,非线性 SWE 本身并不要求波幅一定很小。小振幅条件是在进一步推导线性浅水波模型时才使用的。