前几天有读者留言说让我介绍一下求解器算法,由于该部分通常是在仿真计算求解前才进行选择,因此我将其放在了整个系列的最后几节进行介绍,今天我们就先讲一下压力基求解器(主要是基于Fluent展开),与湍流时的讲解一样,理论部分大家可以快速过一遍。(如有错误,请各位指正) 讲完这一节,关于CFD的基础知识部分基本就算是结束了(后面可能会在缝缝补补几篇不重要的内容),但总感觉自己写的不伦不类,有一些内容感觉不是特别符合基础知识这个系列,有很多都是理论和操作结合的,还有很多时候想讲一些小技巧,小操作也不知道该放到哪里,例如有人问我求解器的时候又提到了回流,这个确实没有办法能融合到一起,最近也是看了许多其他大佬们的公众 号进行了学习,后面准备基于Fluent User's Guide对这个系列进行重制,将所有的操作和知识放到一个系列,当然大家如果有好的建议也可以留言。 |
Fluent提供了五种压力-速度耦合算法:SIMPLE、SIMPLEC、PISO、Coupled以及Fractional Step(对于使用非迭代时间推进方案(NITA)的瞬态计算问题)。
注意,SIMPLE、SIMPLEC、PISO和Fractional Step使用压力基分离算法,而Coupled使用压力基耦合算法求解。
1.1 分离算法
1.1.1 SIMPLE与 SIMPLEC
SIMPLE算法利用速度和压力修正之间的关系来保证质量守恒并获取压力场。用猜测的压力场
求解动量方程时,计算得到的面通量
不满足连续性方程。因此,在面通量
上添加了一个修正量
,使得修正后的面通量
满足连续性方程。SIMPLE算法假定
可以写成

其中,
是单元格压力修正值。
SIMPLE算法将通量校正方程代入离散连续性方程,得到单元格内压力校正
的离散方程:

其中,源项b是进入单元格的净流量,
压力修正方程可采用代数多重网格(AMG)中所述的代数多重网格(AMG)方法求解。获得解后,使用
、
对单元格压力和面部通量进行修正。这里,
是压力的欠松弛因子(有关欠松弛的信息,请参见变量的欠松弛)。校正后的面通量
在每次迭代过程中都完全满足离散连续性方程。
1.1.2 PISO
算子分裂隐式压力(PISO)压力-速度耦合格式属于SIMPLE算法家族,其基础是压力修正与速度修正之间更高程度的近似关系。
SIMPLE和SIMPLEC算法的局限性之一是,在求解压力修正方程后,新的速度及相应的通量并不满足动量平衡。因此,必须重复计算直至满足平衡。
为提高计算效率,PISO算法 会进行两项额外修正:邻域修正和偏斜修正。
邻域修正
PISO算法的核心思想是将SIMPLE和SIMPLEC算法所需的重复计算移至压力校正方程的求解阶段。经过一次或多次额外的PISO循环后,校正后的速度能更贴合连续性方程和动量方程。这一迭代过程被称为动量校正或“邻域校正”。PISO算法在每个求解器迭代中会多占用一些CPU时间,但能显著减少收敛所需的迭代次数,尤其对于瞬态问题而言。
偏斜修正
对于具有一定程度扭曲的网格,单元格面处质量通量的修正与相邻单元格处压力修正的差值之间的近似关系非常粗略。由于沿单元格面的压力修正梯度分量无法预先得知,因此采用类似于上述PISO邻域修正的迭代过程是较为理想的。在得到压力修正方程的初始解后,会重新计算压力修正梯度,并用于更新质量通量修正。这一过程被称为“偏斜度校正”显著减少了与高度扭曲网格相关的收敛困难。
1.1.3 FSM
在有限元分步方法(FSM)中,动量方程与连续性方程通过一种称为算子分裂或近似因式分解的数学技术解耦。由此产生的求解算法与前面描述的分离式求解算法类似。近似因式分解中使用的形式体系使您能够控制分裂误差的阶数。正因为如此,FSM在Ansys Fluent中被用作非迭代时间推进(NITA)算法(非迭代时间推进格式)中的速度耦合方案。
1.2 耦合算法
1.2.1 COUPLED
如前所述,基于压力的求解器允许您以分离或耦合的方式解决流动问题。与非耦合或分离方法相比,使用耦合方法具有一些优势。耦合格式为稳态流动提供了稳健且高效的单相实现,与分离求解格式相比性能更优。这种基于压力的耦合算法为基于密度的算法和带有SIMPLE型压力-速度耦合的基于压力的分离算法提供了一种替代方案。对于瞬态流动,当网格质量较差或使用较大时间步长时,必须使用耦合算法。
基于压力的分离算法分别求解动量方程和压力修正方程。这种半隐式求解方法 会导致收敛速度较慢。耦合算法同时求解动量方程和基于压力的连续性方程。通过对动量方程中压力梯度项进行隐式离散,以及对面质量通量(包括Rhie-Chow压力耗散项)进行隐式离散,实现了完全隐式耦合。
在动量方程中,组分k的压力梯度形式为

其中
是由高斯散度定理和压力插值格式的系数。最后,对于任意第i个单元,
分量的动量方程的离散形式定义为
。
在连续性方程中,通量平衡通过中的通量表达式来替换,从而得到离散形式

因此,方程组的整体系统在转换为δ形式后,表示为

其中,单元i对单元j的影响具有以下形式

未知向量和残差向量具有以下形式


请注意,式是使用耦合代数多重网格法(coupled AMG)求解的。基于压力的耦合算法与非迭代时间推进求解器(NITA)不兼容。
2.1 SIMPLE与SIMPLEC算法
标准SIMPLE算法和SIMPLEC(SIMPLE-一致)算法均为FLUENT中常用的压力基分离算法,二者核心差异在于收敛效率和稳定性,具体细节及应用要求如下:
适用场景:SIMPLE是瞬态模拟的默认算法,适用于各类常规稳态、弱瞬态流动问题;SIMPLEC在许多场景下更具优势,尤其适用于收敛性受压力-速度耦合限制的问题,对于无附加模型启用的层流流动,使用SIMPLEC通常能更快获得收敛解。
模型匹配:二者均可匹配层流、常规湍流模型(如k-ε、k-ω SST等)、简单传热模型,适用于常规单相流动;对于涉及湍流和/或附加物理模型的复杂流动,仅当收敛性受压力-速度耦合限制时,SIMPLEC才能改善收敛性,若限制收敛的是附加建模参数,则二者收敛速度相近。
操作设置要点:SIMPLEC的核心优势的是可采用更大的欠松弛因子,其中压力修正欠松弛因子通常设为1.0,以此加快收敛速度;但在网格扭曲度较高的问题中,将压力修正欠松弛因子提高到1.0可能会导致计算不稳定性,此时需采取三种解决方案之一:使用一种或多种扭曲度修正方案、采用稍保守的欠松弛值(最高0.7)、切换为SIMPLE算法。
慎用场景:SIMPLEC不适用于高扭曲网格(易不稳定)、复杂多物理场耦合问题;SIMPLE在简单层流问题中收敛效率低于SIMPLEC,在压力-速度耦合受限的场景下表现一般。
通过以上分析,SIMPLE和SIMPLEC算法,优先选择SIMPLEC算法。
2.2 PISO算法
PISO算法(带有相邻校正)是FLUENT中针对瞬态流动的推荐算法,其核心优势在于大时间步长下的稳定性:
1适用场景:官方推荐将其用于所有瞬态流动计算,尤其适合希望使用较大时间步长的瞬态模拟;对于高度扭曲的网格,无论是稳态计算还是瞬态计算,均建议使用带偏斜校正的PISO算法;需注意,对于使用大涡模拟(LES)湍流模型的问题,由于LES通常需要较小的时间步长,使用PISO可能会增加计算成本,此时应考虑使用SIMPLE或SIMPLEC算法。
模型匹配:最适配瞬态流动、动网格、6DOF(六自由度)、VOF(自由界面)模型、强瞬态传热等场景,可匹配常规湍流模型,能很好地应对瞬态下的复杂流动耦合问题。
操作设置要点:PISO算法能够在较大的时间步长,以及动量和压力的欠松弛因子均为1.0的情况下保持计算的稳定性;使用PISO邻域修正时,建议所有方程的欠松弛因子设为1.0或接近1.0;若仅对高度扭曲的网格使用PISO偏斜修正(不使用邻域修正),则需设置动量和压力的欠松弛因子,使其总和为1(例如,压力设为0.3,动量设为0.7);若同时使用邻域修正和偏斜修正,需遵循邻域修正的欠松弛建议。
注意事项:对于稳态问题,带有相邻校正的PISO算法相较于采用优化欠松弛因子的SIMPLE或SIMPLEC算法,并没有表现出任何明显的优势;对于大多数问题,无需禁用相邻修正与偏斜修正之间的默认耦合,但对于高度扭曲的网格,建议禁用二者的默认耦合。
2.3 分数步进法(FSM)
分数步进法(FSM)仅在选择NITA格式(即“求解方法”任务页面中的“非迭代时间推进”选项)时可用,其核心特点是计算成本较低:
1适用场景:专门适配NITA非迭代时间推进模式,对于使用NITA格式的模拟,FSM的计算成本略低于PISO算法;具体选择FSM还是PISO算法取决于具体应用场景,需结合模拟类型判断。
模型匹配:适配NITA非迭代时间推进、部分简单瞬态流动,可用于简单的VOF模拟,但需注意其稳定性限制。
操作设置要点:对于大多数问题,求解方法的默认值足以确保因网格扭曲而进行的内部压力修正子迭代实现稳健收敛;仅非常复杂的问题(例如,移动变形网格、滑动界面、VOF模型)可能需要将压力松弛系数降低到0.7或0.8,以保证计算稳定性。
慎用场景:对于某些问题(例如使用VOF的模拟),FSM的稳定性可能不如PISO算法;不适用于复杂的移动变形网格、滑动界面及高难度VOF模拟场景。
2.4 COUPLED
耦合算法属于压力基求解器的重要分支,与基于压力的分离算法相比具有独特优势,具体说明如下:
适用场景:基于压力的耦合算法为稳态流动提供了更稳健、更高效的单相实现,适用于稳态单相复杂流动、强压力-速度耦合的稳态场景,特别是网格质量差与时间步长大的情况;需注意,该算法在选择非迭代时间推进选项(NITA)时不可用。
模型匹配:适配稳态单相流动、复杂单相流动、强耦合稳态流动,可匹配常规湍流、传热模型,基本适合所有的仿真,但不适用于多相流及NITA相关模拟。
注意事项:在某些使用多孔跳跃边界条件的情况下,耦合算法可能会遇到收敛问题,且这些问题不会因耦合求解器设置的更改而得到解决,具体是否出现该问题取决于具体的流动配置和多孔跳跃边界条件值;若在使用多孔跳跃边界条件和耦合算法时观察到收敛不稳定性,建议将压力-速度耦合方式改为分离式算法(SIMPLE、SIMPLEC、PISO等)之一。
同样,为了帮助


PS
上述所有算法均属于压力基求解器范畴,核心适配低速、不可压、低马赫数( Ma < 0.3 ) 流动场景,可根据流动类型(稳态/瞬态)、网格质量、模型复杂度及收敛需求,选择对应的算法及设置参数;若为高速、强可压缩、含激波的流动(Ma>1),需切换至密度基求解器,与上述压力基算法无直接适配关系。