投影法也称为时间分裂法,分步法,按照思路分为两类:

  • 第一类基于 N-S 方程组的半离散格式,基于 Helmholtz 分解定理;
  • 第二类基于 N-S 方程组的全离散格式,采用近似算子分裂/近似矩阵分裂。

下文只包括第一类投影法。

Helmholtz 分解定理

对于任意光滑的向量场\(V\)可以唯一分解为一个无源场\(V^d\)和一个无旋场\(\nabla \phi\) 之和。

\[ V = V^d + \nabla \phi \]

满足\(\nabla \cdot V^d = 0\), 和\(\nabla \times \nabla \phi=0\)

(这一说法是不严谨的,因为唯一性需要向量场满足一定的边界条件,暂时略过边界的考虑)

投影法简介

考虑无量纲化的二维不可压缩方程组

\[ \begin{aligned} \frac{\partial \mathbf{u}}{\partial t} + (\mathbf{u}\cdot \nabla) \mathbf{u} &= -\nabla p + \frac{1}{Re} \nabla^2 \mathbf{u}\\ \nabla \cdot \mathbf{u} &= 0\\ \end{aligned} \]

1.无压力增量投影法

我们介绍最早由 Chorin 和 Temam 提出的投影法,利用显式欧拉离散得到:

\[ \begin{aligned} \frac{\mathbf{u}^{n+1}-\mathbf{u}^n}{\Delta t}+ \left[(\mathbf{u}^n\cdot \nabla) \mathbf{u}^n - \frac{1}{Re} \nabla^2 \mathbf{u}^n \right] &= -\nabla p^{n+1} \\ \nabla \cdot \mathbf{u}^{n+1} &= 0\\ \end{aligned} \]

在其中引入预测速度\(\mathbf{u}^*\),把动量方程拆成两个部分:

\[ \begin{aligned} \frac{\mathbf{u}^{*}-\mathbf{u}^n}{\Delta t}+ \left[(\mathbf{u}^n\cdot \nabla) \mathbf{u}^n - \frac{1}{Re} \nabla^2 \mathbf{u}^n \right] = 0 \\ \frac{\mathbf{u}^{n+1}-\mathbf{u}^*}{\Delta t} = -\nabla p^{n+1} \end{aligned} \]

对第二个式子取散度,得到

\[ \nabla^2 p^{n+1} = \frac{1}{\Delta t} \nabla \cdot \mathbf{u}^* \]

因此,得到计算流程如下:

  • \(t^n\)时刻的第 n 步 \(\mathbf{u}^n\) 出发,
  • 基于\(\mathbf{u}^n\),计算预测速度\(\mathbf{u}^*\)满足 \[ \begin{aligned} \frac{\mathbf{u}^{*}-\mathbf{u}^n}{\Delta t}+ \left[(\mathbf{u}^n\cdot \nabla) \mathbf{u}^n - \frac{1}{Re} \nabla^2 \mathbf{u}^n \right] = 0 \end{aligned} \]
  • 基于\(\mathbf{u}^*\),计算压强\(p^{n+1}\)满足 \[ \nabla^2 p^{n+1} = \frac{1}{\Delta t} \nabla \cdot \mathbf{u}^* \]
  • 得到第 n+1 步的速度\(\mathbf{u}^{n+1}\) \[ \mathbf{u}^{n+1} = \mathbf{u}^* - \Delta t \nabla p^{n+1} \]

最后一步体现了Helmholtz 分解定理投影

\[ \mathbf{u}^{*} = \mathbf{u}^{n+1} + \Delta t \nabla p^{n+1} \]

  • 在利用 \(\mathbf{u}^n\) 计算预测速度 \(\mathbf{u}^*\) 时,直接忽视了压强场的约束作用;
  • 预测速度\(\mathbf{u}^*\)根据 Helmholtz 分解定理被分解成无源场 \(\mathbf{u}^{n+1}\) 和无旋场 \(\Delta t \nabla p^{n+1}\)
  • 通过预测速度 \(\mathbf{u}^*\) 和压强 \(p^{n+1}\) 计算 \(\mathbf{u}^{n+1}\) 就是通过压强的约束作用,把速度重新投影到散度为零的子空间内:\(\mathbf{u}^{n+1}=P(\mathbf{u}^*)\),最终的速度严格满足\(\nabla \cdot \mathbf{u}^{n+1}=0\)

这种最早的投影法通常称作无压力增量投影法:因为计算中间层的预测速度\(\mathbf{u}^*\)时,没有考虑压强梯度的影响。可以改成隐式的时间离散格式,可以在计算预测速度时考虑压强的影响,因此精度有限。有一系列衍生的投影法。

注意,实践中可能不是直接离散\(\nabla^2 p^{n+1} = \frac{1}{\Delta t} \nabla \cdot \mathbf{u}^*\),而是离散下面两个式子,把离散后的结果进行合并:

\[ \begin{aligned} \frac{\mathbf{u}^{n+1}-\mathbf{u}^*}{\Delta t} = -\nabla p^{n+1}\\ \nabla \cdot \mathbf{u}^{n+1} =0 \end{aligned} \]

这样可以保证离散的 \(\nabla \cdot \mathbf{u}^{n+1} =0\) 严格成立。

2.压力增量投影法

首先,时间上不使用显式 Euler,而改用二阶向后差分格式

\[ \frac{\partial \mathbf{u}^{n+1}}{\partial t} \approx \frac{3\mathbf{u}^{n+1}-4\mathbf{u}^n + \mathbf{u}^{n-1}}{2\Delta t} \]

动量方程离散为

\[ \begin{align} \frac{3\mathbf{u}^{n+1}-4\mathbf{u}^n + \mathbf{u}^{n-1}}{2\Delta t} + (\mathbf{u}^{n+1}\cdot \nabla) \mathbf{u}^{n+1} &= -\nabla p^{n+1} + \frac{1}{Re} \nabla^2 \mathbf{u}^{n+1}\\ \end{align} \]

(不等价地)拆为下面两个式子

\[ \begin{align} \frac{3\mathbf{u}^{*}-4\mathbf{u}^n + \mathbf{u}^{n-1}}{2\Delta t} + (\mathbf{u}^{*}\cdot \nabla) \mathbf{u}^{*} &= -\nabla p^{n} + \frac{1}{Re} \nabla^2 \mathbf{u}^{*}\\ \frac{3(\mathbf{u}^{n+1}-\mathbf{u}^*)}{2\Delta t} &= -\nabla (p^{n+1}-p^n) \end{align} \]

第一步,预测步计算中间速度\(\mathbf{u}^*\),考虑压强梯度的影响(需要隐式求解\(\mathbf{u}^*\))

\[ \begin{align} \frac{3\mathbf{u}^{*}-4\mathbf{u}^n + \mathbf{u}^{n-1}}{2\Delta t} + (\mathbf{u}^*\cdot \nabla) \mathbf{u}^* &= -\nabla p^{n} + \frac{1}{Re} \nabla^2 \mathbf{u}^* \end{align} \]

第二步,求解压强增量\(q = p^{n+1}-p^n\),对第二个式子求散度得

\[ \begin{align} \nabla^2 q &=\frac{3}{2\Delta t} \nabla \cdot \mathbf{u}^* \end{align} \]

第三步,更新\(\mathbf{u}^{n+1}\), \(p^{n+1}\)

\[ \begin{align} \mathbf{u}^{n+1} &= \mathbf{u}^* - \frac{2\Delta t}{3} \nabla q\\ p^{n+1} &= p^n + q \end{align} \]

3.旋度型压力增量投影法

第一步,预测步, 计算中间速度\(\mathbf{u}^*\),考虑压强梯度的影响(需要隐式求解\(\mathbf{u}^*\))

\[ \begin{align} \frac{3\mathbf{u}^{*}-4\mathbf{u}^n + \mathbf{u}^{n-1}}{2\Delta t} + (\mathbf{u}^*\cdot \nabla) \mathbf{u}^* &= -\nabla p^{n} + \frac{1}{Re} \nabla^2 \mathbf{u}^*\\ \end{align} \]

第二步,从求解压强增量\(q=p^{n+1}-p^n\) 变成求解新的变量\(\phi\)

\[ \phi = p^{n+1}-p^n + \frac{1}{Re} \nabla \cdot \mathbf{u}^* \]

满足如下方程组

\[ \begin{align} \nabla^2 \phi &=\frac{3}{2\Delta t} \nabla \cdot \mathbf{u}^* \end{align} \]

第三步,更新\(\mathbf{u}^{n+1}\), \(p^{n+1}\)

\[ \begin{align} \mathbf{u}^{n+1} &= \mathbf{u}^* - \frac{2\Delta t}{3} \nabla \phi\\ p^{n+1} &= p^n + \phi - \frac{1}{Re} \nabla \cdot \mathbf{u}^* \end{align} \]

这一种和压力增量型投影法相比,略有不同,可以视作对压力增量型投影方法的改进,因为如果不可压方程组对速度有第一类边界条件时,对\(\phi\)的求解比对\(q\)的求解可以给出更合理的边界条件,略。