基于https://matthias-research.github.io/pages/publications/hfFluid.pdf这篇论文
采用Gird2D网格去模拟.
$\frac{D h}{D t} = -,h,\nabla\cdot\mathbf{v}$ (质量守恒) $ \frac{D\mathbf{v}}{D t} = -,g,\nabla \eta ;+; \mathbf{a}_{\mathrm{ext}}$ (动量守恒)
第一条是质量守恒:柱状水体高度随水平散度改变;第二条是动量守恒:自由面坡度产生水平方向压强梯度(即 −g∇η)。D/Dt 表示随流(拉格朗日)导数:沿流线观测到的时变率,等于 ∂/∂t+v⋅∇.
因为: D/Dt=∂t+v⋅∇ (∂/∂t = 固定位置看时间变化;D/Dt = 跟着流体看总变化)
$\frac{D h}{D t} = -,h,\nabla\cdot\mathbf{v}$ ——> $ \frac{\partial h}{\partial t} + \nabla\cdot!\big(h,\mathbf{v}\big) = 0$ (质量守恒)
$ \frac{D\mathbf{v}}{D t} = -,g,\nabla \eta ;+; \mathbf{a}_{\mathrm{ext}}$ ——> $\quad \frac{\partial \mathbf{v}}{\partial t}+(\mathbf{v}\cdot\nabla)\mathbf{v}=-,g\nabla\eta+\mathbf{a}^{\text{ext}}$ (动量守恒)
- 网格与量纲:二维高度场位于 x–z 平面;重力沿 y。使用交错网格(staggered grid):高度 $h_{i,j}$、地形 $H_{i,j} $存在格心;速度 $u_{i+\frac12,j}$、$w_{i,j+\frac12}$ 在格面。网格间距 $\Delta x$、时间步 $\Delta t$。
- 几何量:水面高 $\eta = H + h$。水平速度$\mathbf{v} = (u,w)$。重力 g。外加加速度 $\mathbf{a}_{\text{ext}}$。
高度积分(离散化推导)
-
把质量守恒写成保体积形式:∂h/∂t=−∇⋅(hv)(式(3));对 x 与 z 用一阶迎风通量近似,得到(式(4)):
$\frac{\partial h_{i,j}}{\partial t}\approx
-\frac{\big(,\tilde h,u,\big){i+\frac12,j}-\big(,\tilde h,u,\big){i-\frac12,j}}{\Delta x};
-\frac{\big(,\tilde h,w,\big){i,j+\frac12}-\big(,\tilde h,w,\big){i,j-\frac12}}{\Delta x},$ -
其中 $\tilde h$ 在通量处按迎风方向选取(式(5)(6)):
$\tilde h_{i+\frac12,j}= \begin{cases} h_{i+1,j}, & u_{i+\frac12,j}\le0\ h_{i,j},& u_{i+\frac12,j}>0\end{cases}$
$\tilde h_{i,j+\frac12}= \begin{cases} h_{i,j+1}, & w_{i,j+\frac12}\le0\ h_{i,j},& w_{i,j+\frac12}>0\end{cases}$
-
显式时间推进:$h_{i,j}^{,n+1}= h_{i,j}^{,n} + \left(\partial h_{i,j}/\partial t\right)\Delta t$。作者强调此处的迎风$ \tilde h$ 选取比一些教材里的简单平均更稳。
