INSE学习笔记——3. 人工压缩性方法(ACM)
人工压缩性方法(ACM),主要用于求解不可压缩定常流问题。
人工压缩性方程
考虑无量纲化的二维不可压缩方程组
\[ \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} \]
由于缺少\(\frac{\partial p}{\partial t}\),难以计算压强,因此引入人工压缩性因子\(\beta >0\),使得连续性方程替换为人工压缩性方程:
\[ \frac{\partial p}{\partial t} + \beta \nabla \cdot \mathbf{u} = 0 \]
这里的人工压缩性因子\(\beta\) 相当于声速的平方\(c^2\),也可以从物理的角度进行理解,在\(\beta >0\)时:
- 当流动在一点处压缩时,\(\nabla \cdot \mathbf{u} < 0\),该点的压力会升高,\(\frac{\partial p}{\partial t} >0\);
- 当流动在一点处膨胀时,\(\nabla \cdot \mathbf{u} > 0\),该点的压力会降低,\(\frac{\partial p}{\partial t} < 0\)。
从而得到方程组
\[ \begin{aligned} \frac{\partial \mathbf{u}}{\partial t} + (\mathbf{u}\cdot \nabla) \mathbf{u} &= -\nabla p + \frac{1}{Re} \nabla^2 \mathbf{u}\\ \frac{\partial p}{\partial t} + \beta \nabla \cdot \mathbf{u} &= 0 \end{aligned} \]
这个方程组只有在达到定常态的时候,才满足\(\nabla \cdot \mathbf{u}=0\),因此适合求解定常流问题。增大\(\beta\)可以使得压力的收敛更快,但是会增加方程的刚性,降低时间步长。
计算流程
定常问题
对于定常问题,我们不关心中间过程的计算精度,只需要迭代(时间推进)到满足收敛的判断条件,例如取定足够小的 \(\epsilon >0\),要求
\[ \max(\Vert \mathbf{u}^{n+1}-\mathbf{u}^n \Vert,\Vert p^{n+1}-p^n\Vert) \le \epsilon \]
最终达到稳态,同时满足了不可压缩条件 \(\nabla \cdot \mathbf{u}=0\)。
非定常问题
对于非定常问题,在时间推进之间,需要加入内迭代,计算效率较低,通常不建议使用 ACM 计算非定常问题。
例如对方程组使用如下显式格式进行离散:
\[ \begin{aligned} \frac{\mathbf{u}^{n+1}-\mathbf{u}^n}{\Delta t} + (\mathbf{u}^n\cdot \nabla) \mathbf{u}^n &= -\nabla p ^n+ \frac{1}{Re} \nabla^2 \mathbf{u}^n\\ \frac{p^{n+1}-p^n}{\Delta t} + \beta \nabla \cdot \mathbf{u}^n &= 0 \end{aligned} \]
则完整的求解需要使用如下步骤:
- 从\(t^n\)时刻的第 n 步\(\mathbf{u}^n\)出发,
- 进入内迭代:
- 记\(\mathbf{u}^{n+1,0}=\mathbf{u}^n\),记\(p^{n+1,0}=p^n\),(或者压强以一个猜测值开始迭代,应该也可以)
- 计算\(\mathbf{u}^{n+1,k},\cdots\),以及\(p^{n+1,k},\cdots\)满足下式 \[ \begin{aligned} \frac{\mathbf{u}^{n+1,k+1}-\mathbf{u}^{n+1,k}}{\Delta t} + (\mathbf{u}^n\cdot \nabla) \mathbf{u}^n &= -\nabla p^{n+1,k}+ \frac{1}{Re} \nabla^2 \mathbf{u}^n\\ \frac{p^{n+1,k+1}-p^{n+1,k}}{\Delta t} + \beta \nabla \cdot \mathbf{u}^{n+1,k} &= 0 \end{aligned} \]
- 不断迭代,直到满足类似定常流的收敛判断条件,记作\(\mathbf{u}^{n+1,k_n},p^{n+1,k_n}\) 。
- 将内收敛得到的速度和压强作为\(t^{n+1}\)时刻的速度和压强,\(\mathbf{u}^{n+1}=\mathbf{u}^{n+1,k_n}\) ,\(p^{n+1}=p^{n+1,k_n}\) 。
注:以上内迭代的公式来自李新亮的计算流体力学 PPT,但是似乎应该像下面这样更合理?
\[ \begin{aligned} \frac{\mathbf{u}^{n+1,k+1}-\mathbf{u}^{n}}{\Delta t} + (\mathbf{u}^n\cdot \nabla) \mathbf{u}^n &= -\nabla p^{n+1,k}+ \frac{1}{Re} \nabla^2 \mathbf{u}^n\\ \frac{p^{n+1,k+1}-p^{n+1,k}}{\Delta t} + \beta \nabla \cdot \mathbf{u}^{n+1,k} &= 0 \end{aligned} \]