2.2 SIMPLE系列算法
2.2.1标准SIMPLE算法
SIMPLE算法(Semi-Implicit Method for PressureLinked Equations)1最初被设计用来求解稳态问题,即控制方程中不包含瞬态项的计算。按照1.3.3节的约定,我们假设计算开始的时候有初始的压力和速度值 P o , U o ⃗ P^o,\vec{U^o} Po,Uo,待求的真值为 P n , U n ⃗ P^n,\vec{U^n} Pn,Un。实际上,速度的初始值可以完全随意给定,因为我们完全首先可以将初始压力带入式2.1解出一个速度:
a P U ⃗ p r + ∑ N a N U ⃗ N r = S ⃗ − ∇ P o (2.13) a_P\vec U_p^r+\sum_Na_N\vec U_N^r=\vec S-\nabla P^o \tag{2.13} aPUpr+N∑aNUNr=S−∇Po(2.13)
上述步骤称为动量预测,解得的速度 U r U^r Ur称为预测速度。
预测速度并不是待求的真实速度,根据式上一节的推导,待求速度和待求压力之间满足压力泊松方程:
∇ ⋅ ( 1 a P ∇ P n ) = ∇ ⋅ ( H b y A n ⃗ ) (2.6) \nabla\cdot\left(\frac{1}{a_P}\nabla P^n\right)=\nabla\cdot\left(\vec{HbyA^n}\right) \tag{2.6} ∇⋅(aP1∇Pn)=∇⋅(HbyAn)(2.6)
显然, H b y A n HbyA^n HbyAn是 U n ⃗ \vec{U^n} Un的函数,知道 U n ⃗ \vec{U^n} Un我们就能算出待求的压力 P n P^n Pn,但目前我们只有求解式(2.13)得到的 U ⃗ r \vec U^r Ur,SIMPLE算法在这里做了一个妥协与假设,其用 U ⃗ r \vec U^r Ur代替 U n ⃗ \vec{U^n} Un计算 P n P^n Pn,即:
∇ ⋅ ( 1 a P ∇ P n ) = ∇ ⋅ ( H b y A r ⃗ ) (2.14) \nabla\cdot\left(\frac{1}{a_P}\nabla P^n\right)=\nabla\cdot\left(\vec{HbyA^r}\right) \tag{2.14} ∇⋅(aP1∇Pn)=∇⋅(HbyAr)(2.14)
其本质上是将方程(2.4)转化为
U ⃗ p n = H b y A r ⃗ − 1 a P ∇ P n (2.15) \vec U_p^n=\vec{HbyA^r}-\frac{1}{a_P}\nabla P^n \tag{2.15} Upn=HbyAr−aP1∇Pn(2.15)
再带入连续性方程后进行离散得到的。式(2.15)当然是不精确的,在下一节中我们将分析式(2.15)中做出的简化的背后含义。同时,式(2.15)还可以用来根据式2.14解出的压力来更新速度以得到 U n U^n Un。这样,我们先通过求解式(2.13)得到预测速度 U ⃗ r \vec U^r Ur,再根据式2.13得到待求压力 P n P^n Pn,最后根据式2.15更新现有的速度得到 U ⃗ n \vec U^n Un。由于式(2.14)是不准确地,因此我们计算得到的 P n P^n Pn和 U ⃗ n \vec U^n Un也是不准确的,我们将 P n P^n Pn和 U ⃗ n