本文介绍与动量方程和连续性方程的离散以及利用压力基求解器进行求解相关的常用做法。
注:本文译自Fluent Theory Guide 24.4
”
主要内容包括:
考虑积分形式的稳态连续方程和动量方程,可以容易地描述这些特殊做法:
式中,为单位矩阵;为应力张量;为力向量。
标量输运方程的离散方法也可用于动量方程的离散。例如动量方程可以通过设置来得到:
如果压力场和网格面质量通量已知,则可以通过离散方程直接得到速度场。然而,压力场和面质量通量通常不是先验已知的,其为求解结果的一部分。关于压力值的存储和压力梯度项的离散,有一些重要的问题需要讨论。
Fluent使用同位网格方案,即压力和速度都存储在网格中心。然而上式需要网格和之间面上的压力值,因此需要一种插值方案来根据网格中心的值来计算网格面上的压力值。
Fluent提供了以下选项来对界面上的压力进行插值。一般情况下使用Second Order格式,但在Mixture或VOF多相流模拟的情况下默认使用PRESTO格式。
Linear
格式:将面压力计算为相邻网格中的压力值的平均值。Standard
格式:使用动量方程系数对网格面上的压力值进行内插只要网格中心之间的压力变化是平滑的,这个过程就能很好地工作。当控制体之间的动量源项存在阶跃或大梯度时,压力分布在网格面处具有较高的梯度,此时不能使用该格式进行插值。如果使用这种格式,这种差异表现为网格速度的过冲/欠冲。
Standard压力插值格式难以处理包含有大体积力的流动问题,例如强旋流、高瑞利数自然对流等。在这类问题中,有必要在高梯度区域加密计算网格,以充分求解压力的变化。
另一个完成来源是Fluent假设壁面处的法向压力梯度为零。这对边界层来讲是有效的,但在存在体积力或曲率流动时是无效的。同样,无法正确解释壁面压力梯度表现为指向壁面内外的速度矢量。
Second Order
格式。使用中心差分格式重构网格面压力。各网格面上的压力值由下式给出:与Standard格式和Linear格式相比,此格式可以提高计算精度。
Second Order格式不适用于使用欧拉多相流模型模拟的流动,因为流动特性可能会在网格面上发生较大变化。然而,通过将压力梯度对网格面压力的影响纳入上式,并将其与Standard格式相结合,可获得欧拉多相流的二阶格式,如下所示:
对于网格正交性较差的网格使用欧拉多相流时,此格式要比PRESTO!格式更健壮。
Body Force Weighted
格式。此格式通过假设压力和体积力之差值的法向梯度为常数来计算面压力。如果在动量方程(例如,浮力和轴对称旋转计算)中体积力已知时,则该方法能够获得非常好的效果。对于体积力占优的Eulerian Multi-Fluid VOF问题以及网格正交性较差的网格问题,Body Force Weighted格式比PRESTO!更稳健当问题中包含有多孔介质时,body-force-weighted格式仅对非多孔面有效,其中,该格式考虑了显式体积力的不连续性(如重力、离心力、科里奥利力等)和密度快速变化的流动(如自然对流、VOF等)的压力梯度的不连续性。所有内部和外部多孔面都采用特殊格式处理,即使阻力不连续,该格式仍能保持网格面法向速度的连续性。
Modified Body Force Weighted
格式。此格式是Body Force Weighted格式的扩展变体,它克服了Body Force Weighted格式对高粘性和旋转流的缺点,总体上提供了更好的求解稳定性和鲁棒性。该格式仅适用于VOF和Mixture多相流模型。PRESTO!
格式。PRESTO!(PREssure STaggering Option)格式使用网格面周围的“交错”控制体的离散连续性平衡来计算“交错”面压力。这个过程在本质上类似于结构网格使用的交错网格方法[1]。注意,对于三角形、四面体、混合网格以及多面体网格,使用类似的算法可以获得类似的精度。PRESTO!格式可用于所有类型的网格。方程(1)在控制体上积分,可以得到下面的离散方程:
式中,为通过网格面的质量通量,。
为了进一步处理,有必要将网格面上的速度值与相邻两个网格中心的速度联系起来。网格中心的速度到网格面的线性插值可能导致非物理棋盘压力。Fluent中使用高阶插值格式来计算网格面通量,并按照Rhie和Chow[2]方法对压力梯度进行校正,以防产生棋盘压力。Fluent中有两种插值方法可用于计算网格面上的速度值:基于距离的线性插值(distance-based linear interpolation)和基于动量平均(momentum-based averaging)的插值方法。
通过插值计算,面通量可写为:
其中,
式中,取决于所使用的方法:
式中项是的函数,为面两侧网格的动量方程系数的平均值。、、和分别是网格面两侧网格内的压力和速度。是基于单元中心和面中心之间的距离对非均匀和/或非正交网格的高阶校正。类似地,为基于与面相邻的网格的动量系数对非均匀和/或非正交网格的高阶修正。
在不可压缩的流动中,Fluent对密度使用算术平均。对于可压缩流动计算(即介质密度使用ideal gas的计算),Fluent在网格面上对密度采用迎风插值。有几种插值格式可用于网格面上的密度迎风:一阶迎风、二阶迎风(默认)、QUICK、MUSCL,中心差分和有界中心差分。
一阶迎风格式(first-order upwind)将网格面上的密度值设置为上游网格中心的密度值。该格式为压力修正方程的离散提供了稳定性,并对大多数类型的流动能够给出良好的结果。虽然这种格式为可压缩流动计算提供了最好的稳定性,但对于激波模拟有比较大的数值扩散。
二阶迎风格式(second-order upwind)比一阶迎风格式在超声速流动方面具有更好的稳定性,能够更好地捕捉激波。密度的QUICK格式与其他变量的QUICK格式类似。
重要提示:在多相流的问题中,选定的密度格式应用于可压缩相,不可压缩相使用算术平均。如果可压缩流动求解不稳定,建议先使用一阶格式获得解,然后切换到更高阶格式继续计算。
压力基求解器允许以分离或耦合的方式求解流动问题。Fluent提供了五种压力-速度耦合算法:SIMPLE、SIMPLEC、PISO、Coupled以及Fractional Step(对于使用非迭代时间推进方案(NITA)的瞬态计算问题)。除Coupled算法外,其他所有算法均基于预测-校正方法。
注意,SIMPLE、SIMPLEC、PISO和Fractional Step使用压力基分离算法,而Coupled使用压力基耦合算法求解。当使用欧拉多相模型时,适用的压力-速度耦合算法包括Phase Coupled SIMPLE、Multiphase Coupled及Full Multiphase Coupled。
SIMPLE算法使用速度和压力修正之间的关系来强制质量守恒并获得压力场。
如果使用猜测的压力场来求解动量方程,则根据方程(8)可得到面通量:
不满足连续方程,因此,在面通量的基础上增加一个修正值,修正后的面通量:
满足连续方程。
SIMPLE算法假定可写为:
式中,为压力修正。
SIMPLE算法将通量校正方程代入离散的连续性方程(方程7),得到网格中压力校正的离散方程:
式中,为进入网格内的净流量。
压力校正方程可以使用代数多网格(AMG)方法进行求解。得到求解后,可以使用下面的方法校正网格压力与面通量:
式中,为压力亚松弛因子;在每次迭代中,校正后的面通量完全满足离散连续性方程。
文献中提供了许多SIMPLE算法的变种。除了SIMPLE算法外,Fluent还提供了SIMPLEC算法[3]。虽然SIMPLE算法是默认选项,但在很多的计算过程中使用SIMPLEC会有更好的效果。
SIMPLEC算法与SIMPLE算法类似,位移的区别在于面通量修正。在SIMPLE算法中,修正方程可表示为:
在SIMPLEC算法中,被重定义为的函数。在压力-速度耦合是求解的主要障碍的问题中,使用此修正方程可以加速收敛。
对于具有一定偏斜度的网格,网格面上的质量通量修正与相邻单元上的压力修正的差值之间的近似关系非常粗略。由于沿网格面的压力校正梯度的分量事先是未知的,因此需要类似于下面描述的PISO近邻校正的迭代过程。在初解压力修正方程后,重新计算压力修正梯度,并用于更新质量通量修正。这一过程被称为偏斜度校正,其大大降低了与高度扭曲的网格相关的收敛困难。SIMPLEC偏斜度校正使Fluent能够在高度歪斜的网格上获得求解,其迭代次数与正交性更好的网格所需的迭代次数大致相同。
压力-隐式分裂算子(Pressure-Implicit with Splitting of Operators)压力-速度耦合算法是SIMPLE算法家族的一部分,其基于压力和速度修正之间较高的近似关系。SIMPLE和SIMPLEC算法的局限性之一是在求解压力修正方程后,新的速度和相应的通量不满足动量平衡。因此必须重复计算,直到达到平衡为止。为了提高计算效率,PISO算法执行两个额外的校正:邻域校正和歪斜校正。
1、邻域校正(Neighbor Correction)
PISO算法的主要思想是将SIMPLE和SIMPLEC所需的重复计算转移到压力修正方程的求解阶段[4]。在一个或多个附加PISO循环之后,校正后的速度更接近于满足连续和动量方程。这个迭代过程被称为动量修正或“邻域修正”。PISO算法在每次解算器迭代中需要更多的CPU时间,但它可以显著减少收敛所需的迭代次数,尤其是对于瞬态问题。
2、歪斜校正(Skewness Correction)
对于具有一定歪斜度的网格,网格面上的质量通量修正与相邻网格上的压力修正的差值之间的近似关系非常粗略。由于沿网格面上的压力校正梯度的分量事先是未知的,因此需要类似于上述PISO邻域校正的迭代过程。在初解压力修正方程后,重新计算压力修正梯度,并用于更新质量通量修正。这一过程被称为歪斜校正,其大大降低了与高度扭曲的网格相关的收敛困难。PISO歪斜校正使Fluent能够在高度倾斜的网格上获得解,迭代次数与正交性更好的网格所需的迭代次数大致相当。
3、歪斜-邻域耦合(Skewness-Neighbor Coupling)
对于具有高度偏斜度的网格,如果在同一压力修正方程源处同时耦合邻域修正和歪斜校正,则可能导致发散或缺乏稳健性。用于处理PISO算法内的邻域和歪斜校正的另一种尽管更昂贵的方法是对近邻校正的每个单独迭代应用歪斜校正的一个或多个迭代。对于经典PISO算法的每一次迭代,该技术允许根据法向压力校正梯度更精确地调整网格面质量流量校正。
在FSM中,动量方程通过一种称为算子分裂或近似因式分解的数学方法从连续性方程中解耦出来。得到的解算法类似于前面描述的分离解算法。在近似因式分解中使用的形式允许控制分裂误差的阶次。因此,在非迭代时间推进(NITA)算法中, Fluent采用FSM作为速度耦合算法。
如前所述,压力基求解器允许以分离或耦合的方式求解流动问题。与非耦合或分离方法相比,使用耦合(Coupled)方法具有一些优势。与分离求解算法相比,耦合算法获得了稳态流动的鲁棒高效单相实现,具有优越的性能。这种压力基耦合算法提供了一种替代密度基和压力基分离算法的SIMPLE型压力-速度耦合。对于瞬态流动,当网格质量较差或使用的时间步长较大时,有必要使用耦合算法。
压力基分离算法分别求解动量方程与压力修正方程,这种半隐式算法收敛速度慢。
Coupled算法同时求解基于动量和压力的连续性方程。全隐式耦合是通过对动量方程中的压力梯度项进行隐式离散,以及对面质量通量(包括Rhie-Chow压力耗散项)进行隐式离散来实现的。
在动量方程(方程3)中,压力梯度的分量具有下面的形式:
式中,为由高斯散度定理导出的系数及压力插值格式的系数。最后,对于任何第个网格,动量方程分离的离散形式定义为:
在连续方程中,使用方程式(8)中的通量表达式替换通量平衡,从而得到离散形式:
因此,将整个方程组转换为-形式后,如下所示:
其中网格对网格的影响具有如下形式:
未知向量和残差向量具有如下形式:
式(21)采用耦合AMG进行求解。
注意压力基耦合算法不能用于非迭代时间推进(NITA)求解器中。
参考文献
S. V. Patankar. Numerical Heat Transfer and Fluid Flow. Hemisphere, Washington, DC. 1980.
[2]C. M. Rhie and W. L. Chow.Numerical Study of the Turbulent Flow Past an Airfoil with Trailing Edge Separation. AIAA Journal. 21(11). 1525–1532. November 1983.
[3]J. P. Vandoormaal and G. D. Raithby. Enhancements of the SIMPLE Method for Predicting Incompressible Fluid Flows. Numer.Heat Transfer. 7. 147–163. 1984.
[4]R. I. Issa. Solution of Implicitly Discretized Fluid Flow Equations by Operator Splitting. Journal of Computational Physics. 62. 40–65. 1986.
(未完)
联系客服