《Fluids》:Linear Solvers in OpenFOAM: A Technical Review and SIMPLE Convergence Study
编辑推荐:
本文回顾了OpenFOAM中可用的线性求解器,并评估了它们对SIMPLE算法收敛行为的影响。在计算流体力学(CFD)中,输运方程的离散化导致大型稀疏线性系统,线性求解器的选择强烈影响计算时间。尽管求解器不会改变最终的离散解,但不同求解器在速度和鲁棒性上的差异可
本文回顾了OpenFOAM中可用的线性求解器,并评估了它们对SIMPLE算法收敛行为的影响。在计算流体力学(CFD)中,输运方程的离散化导致大型稀疏线性系统,线性求解器的选择强烈影响计算时间。尽管求解器不会改变最终的离散解,但不同求解器在速度和鲁棒性上的差异可超过一个数量级。本文简要概述了OpenFOAM中速度和压力场的解耦方式,随后详细回顾了主要线性求解器族,包括直接法、基本迭代法、多重网格法和Krylov子空间法,并关注了它们的实际优缺点。最先进求解器的性能在一个包含230万个单元的工业规模非反应回转窑案例上进行了评估。压力校正方程被识别为SIMPLE算法的主要瓶颈。研究发现,共轭梯度(CG)求解器结合多重网格(MG)预条件子是最快且最稳定的方法,与较慢的先进方法相比,加速比可达7倍。使用MG作为预条件子也提高了双共轭梯度稳定法(Bi-CGStab)的鲁棒性。
本文首先介绍了计算流体力学(CFD)中速度和压力场的解耦方法。基于不可压缩稳态Navier-Stokes方程,半隐式压力连接方程算法(SIMPLE)通过分离动量方程和连续性方程来推导压力方程,从而迭代校正速度场和压力场。SIMPLE算法的具体步骤包括:动量预测步(求解基于前次压力梯度的速度方程)、压力校正步(通过将系数矩阵
[A]拆分为对角阵
[D]和残差向量
[H],推导出关于压力的泊松方程,即压力校正方程)、速度显式校正步,以及重复迭代直至收敛。该算法可扩展至可压缩流动。
在求解方法部分,本文详细讨论了线性方程组的求解技术。离散化后得到的线性系统可写为
[A][x] = [b],其中
[A]是系数矩阵,
[x]是未知向量,
[b]是源项。直接法(如LU分解和Cholesky分解)由于稀疏矩阵分解时的填充现象,对于大规模CFD问题计算成本过高,但可用作预条件子。基本迭代法(BIM)通过对矩阵
[A]进行
[A] = [M] - [N]分解,迭代公式为
[x](k+1) = [M]-1[N][x](k) + [M]-1[b]。OpenFOAM中的smoothSolver实现了Jacobi和Gauss-Seidel方法,但BIM作为独立求解器仅能有效消除高频误差分量,对低频分量收敛缓慢。
多重网格法(MG)通过先在细网格上进行预平滑(使用BIM),然后将残差限制到粗网格,在粗网格上求解误差方程,再将误差延拓回细网格并进行后平滑,从而加速BIM的收敛。该过程称为粗网格校正(CGC),递归进行则形成多重网格循环(如V-cycle、W-cycle)。OpenFOAM采用广义几何-代数多重网格法(GAMG),默认作为几何多重网格(GMG)求解器,通过配对共享最大面积的单元进行几何聚集。GAMG可设置平滑器(常用Gauss-Seidel)以及预/后平滑次数等参数。
Krylov子空间法基于Krylov子空间
[K]i([A], [r](0)) = span{[r](0), [A][r](0), ..., [A]i-1[r](0)}。共轭梯度法(CG)适用于对称正定(SPD)矩阵,通过
[A]-正交搜索方向实现最小化二次型,收敛速度取决于矩阵的条件数。预条件子用于加速收敛,通过变换系统为
[M]-1[A][x] = [M]-1[b],其中
[M]近似于
[A]且易于求逆。对于SPD矩阵,常用不完全Cholesky分解(如OpenFOAM中的DIC预条件子)。对于非对称矩阵,双共轭梯度法(BiCG)通过引入影子残差和搜索方向,但收敛不稳定。双共轭梯度稳定法(Bi-CGSTAB)通过修改递推关系避免转置乘法,并具有半最优性,是OpenFOAM中最先进的Krylov子空间方法,可采用不完全LU分解(DILU)作为预条件子。其他Krylov子空间方法包括广义最小残差法(GMRES)、广义共轭残差法(GCR)以及混合方法如GMRESR、GCRO和诱导降维法(IDR(s)),其中IDR(s)在s取合适值时接近全GMRES的收敛率,是未来OpenFOAM线性求解器的候选。
在SIMPLE算法收敛性影响部分,本文通过数值实验评估了OpenFOAM中先进线性求解器的性能。内循环中线性求解器需达到指定相对容差后进入下一个方程,外循环对应SIMPLE的迭代步。以二维稳态热传导问题为例,最有效的求解器可在单次外迭代内完成。对于流体问题,采用松散的相对容差(如
10-3代替
10-6)可加快收敛,但可能引起振荡。本文针对一个三维全尺寸非反应回转窑案例(230万单元,采用笛卡尔六面体主导网格)进行了测试,求解器为rhoSimpleFOAM(稳态可压缩湍流求解器)。结果显示,压力方程是主要瓶颈,通常需要比其它变量多一个数量级的内迭代。BIM求解器在压力方程上表现极差,无法在千次内迭代内收敛。使用DIC预条件子的CG法效率最低,GAMG法显著更好,而CG法结合GAMG预条件子最为高效,平均内迭代次数最少。在整体收敛时间上,MGCG-DILUBiCGSTAB组合(压力方程使用带MG预条件子的CG法,其它变量使用带DILU预条件子的Bi-CGSTAB法)达到5000次外迭代所需时间最短,且收敛所需外迭代次数也最少,与较慢的先进方法相比加速比可达7倍。当相对容差从
10-4放宽至
10-3时,MGCG-DILUBiCGSTAB保持稳定,进一步加速25%,而其它组合可能发散。此外,使用MG作为Bi-CGSTAB法的预条件子也增强了鲁棒性。最后,本文提到OpenFOAM的MG预条件子在大规模并行(>2000核)时扩展性较差,而PETSc库中的更先进求解器可解决此问题。结论部分重申了不同线性求解器在速度和鲁棒性上的巨大差异,压力方程是瓶颈,CG法结合GAMG预条件子是最有效方法,加速比可达7倍以上。但由于SIMPLE的迭代特性,更快求解器在本案例中显得冗余,且并行配置会影响相对性能。