02 关于SIMPLE算法的说明
# 关于simple算法的说明
simple算法是计算流体力学中一种被广泛使用的求解流场的数值方法,于1972年由苏哈斯·帕坦卡与布莱恩·斯波尔丁提出 。simple算法的全称是压力耦合方程组的半隐式方法(Semi-Implicit Method for Pressure Linked Equations),其核心思想是从动量方程和连续性方程中导出压力泊松方程,并通过速度修正方程使速度场满足连续性方程。本文将介绍simple算法的原理、流程和应用范围。
## simple算法的原理
为了简化问题,我们只考虑不可压缩、恒定密度、稳态流动的情况,即控制方程中不包含时间项和密度项。这样,我们需要求解四个未知量:三个速度分量Ux、Uy、Uz和压力p。对应的控制方程有四个:三个动量方程和一个连续性方程。
动量方程可以写成如下矩阵形式:
$$
\mathcal{M}U=-\nabla p \tag{1}
$$
其中$\mathcal{M}$是系数矩阵,由有限体积法或有限元法从动量方程的微分项分解得到,这些系数是已知的。$U$是速度向量,$\nabla p$是压力梯度向量。
连续性方程可以写成如下形式:
$$
\nabla \cdot U=0 \tag{2}
$$
其中$\nabla \cdot U$表示速度散度。
由于没有单独求解压力p的方程,而且连续性方程实际上是对动量方程的约束条件,因此直接求解上述四个控制方程非常困难。simple算法就是为了克服这些困难而设计的一种迭代方法。
simple算法主要包括以下几个步骤:
### 1. 系数矩阵分解
首先将系数矩阵$\mathcal{M}$分解为对角线部分$\mathcal{A}$和非对角线部分$\mathcal{H}$:
$$
\mathcal{A}U-\mathcal{H}=-\nabla p \tag{3}
$$
这样做的目的是为了便于后面求逆和修正速度。对角线部分$\mathcal{A}$可以表示为:
$$
\mathcal{A}=\begin{bmatrix}
a_{11} & 0 & \cdots & 0 \\
0 & a_{22} & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & a_{nn}
\end{bmatrix} \tag{4}
$$
非对角线部分$\mathcal{H}$可以通过下式求得:
$$
\mathcal{H}=\mathcal{A}U-\mathcal{M}U \tag{5}
$$
### 2. 求解预测速度场
然后将公式(3)两边同时乘以$\mathcal {A}^{-1}$得到:
$$
U=\mathcal {A}^{-1}\mathcal {H}-\mathcal {A}^{-1}\nabla p \tag {