P???uL?
下图所示为不同Pelect数下f(x)在x=0和x=L之间的变化关系。该图表明对于较大的Pe,f在x=L/2处的值近似等于迎风值。这就意味着当流动由对流项主导时,只需要让变量表面处的值等于迎风或者上游值就可以完成插值。这是FLUENT的标准一阶格式。
Figure 1: 变量f在x=0和x=L之间的变化(方程1)
如果选择幂率格式,FLUENT用方程3等价的幂率格式[118]作为插值格式。
如一阶迎风格式所述,上图表明,对于较大的Pe,f在x=L/2处的值近似等于迎风值。当Pe=0(无流动或者纯扩散)图1表明f可以用x=0到x=1之间简单的线性平均来实现插值。当Peclet数的值适中时,f在x=L/2处的插值必须使用方程3等价的幂率插值格式来得到。
二阶迎风格式
当需要二阶精度时,使用多维线性重建方法[5]来计算单元表面处的值。在这种方法中,通过单元中心解在单元中心处的泰勒展开来实现单元表面的二阶精度值。因此,当使用二阶迎风格式时,用下面的方程来计算表面值f_f:
?f???????S
其中f和?f分别是单元中心值和迎风单元的梯度值,Ds是从迎风单元中心到表面中心的位移矢量。在这种情况下需要确定每个单元内的梯度?f。我们使用散度定理来计算这个梯度,其离散格式如下:
1???VNfacesf??fA
在这里,表面处的值f _f由邻近表面的两个单元的f的平均值来计算。最后,限制梯度?f以保证不会引进新的最大值和最小值。
QUICK格式
对于四边形和六面体网格,我们可以确定它们唯一的上游和下游表面以及单元。
FLUENT还提供了计算对流变量?在表面处高阶值的QUICK格式。QUICK类型的格式[95]是通过变量的二阶迎风与中心插值加上适当的权因子得到的,具体可以写成:
ddcc?e????P??E???1????u?P??W?
Sc?Sd?Su?Sc?Sc?Sd?Su?Sc??SS??2S?SS?
Figure 1: 一维控制体
?q=0就是二阶迎风值。在上式中?q=1就是中心二阶插值,传统的QUICK格式对应的?q=
1/8。FLUENT中使用一个变量,解相关的q值,以避免引进新的解的极值。
当结构网格和流动方向一致时,QUICK格式明显具有较高精度。需要注意的是FLUENT也允许对非结构网格或者混合网格使用QUICK格式,在这种情况下,常用的二阶迎风离散格式将被用于非六面体单元表面或者非四边形单元表面。当使用并行求解器时,二阶迎风格式还被用于划分的边界处。
离散方程的线化形式
离散标量输运方程(离散一节中的方程3)包括了单元中心的标量f的未知值,还包括周围相邻单元出的未知值。一般说来这些方程关于这些变量是非线性的。离散一节中方程3的线化形式为:
aP???anb?nb?b
nb其中下标nb是指相邻单元,a_p和a_nb分别是f和f_nb.的线化系数。
每一个单元的邻近单元的数量取决于网格的拓扑结构,但是一般说来都等于围成该单元的表面的数量(边界单元除外)。
在网格中每一个单元都可以写出相似的方程。这样就产生了具有稀疏系数矩阵的代数方程。对于标量方程,FLUENT是用点隐式(Gauss-Seidel)线化方程求解器与代数多重网格方法(AMG)连接起来从而解出这个线性系统。
亚松驰
由于FLUENT所解方程组的非线性,我们有必要控制?的变化。一般用亚松驰方法来实现控制,该方法在每一部迭代中减少了f的变化量。亚松驰最简单的形式为:单元内变量f等于原来的值f_old加上亚松驰因子a与f变化的积:
???old????
分离求解器
在本节中,我们主要介绍了几个练习,这几个练习和动量方程和连续性方程的离散以及通过分离求解器计算出相应的解有关。通过考虑定常状态的连续性和动量方程一般形式可以和容易介绍这几个练习:
??v?dA?0
??vv?dA??pI?dA????dA??FdV
V其中I是单位矩阵,t是应力张量,F是力矢。
动量方程的离散
标量输运方程的离散中所讨论的离散格式也用于离散动量方程。例如,设定f=u可以很容易得到x向动量方程:
aPu??anbunb??pf???A?S
nb如果已知压力场和表面质量通量,我们就可以用离散一节所介绍的方法来解方程1并获取一个速度场。但是,压力场和表面质量流率预先是未知的,因此必须作为解的一部分。关于压力的存储和压力梯度项的离散有重要的问题需要讨论,下一步我们就会讨论这些问题。
FLUENT使用共同定位格式,在这种情况下,压力和速度共同存储在单元中心。然而,如离散一节的图1所示,方程1需要单元c0和c1之间的表面处的压力值。因此,我们需要使用插值格式来从单元处压力值计算表面压力值。
压力插值格式
在默认的情况下,FLUENT使用动量方程系数[132]来处理表面处的压力插值。只要单元中心的压力变化比较光滑,这个程序都可以算得很好。当控制体之间的动量源项有跳跃或者较大的梯度时,在单元表面处的压力轮廓会有较大的梯度,此时不可以用这种格式来插值。如果还是用这种格式,就会出现单元速度过大和过小的矛盾。
标准压力插值格式有问题的流动包括:具有大体积力的流动,如强烈的漩流、高Rayleigh数自然对流等。在这种情况下,有必要在大梯度区域处理网格从而能够较好的分辨压力的变化。
FLUENT的另一个误差源就是假定壁面法向压力梯度为零。这种假定对于边界层是有
效的,但是对于出现体积力或者曲率的情况就不合适了。此外,压力梯度计算最明显的错误就是速度矢量指向或者指出壁面。
当标准压力插值格式不可用时,FLUENT提供了几种可选的方法: ? 线性格式用相邻单元压力的平均值来计算表面压力。
? 二阶格式用二阶精度对流项(见二阶迎风格式一节)中使用的方法来重建表面压力。这
一格式可能会比标准和线性格式有所改善,但是如果将其用于初始计算和/或较差网格计算就可能会出现一些麻烦。
? 体积力加权格式假定压力和体积力之间差值梯度为常数来计算表面压力。如果动量方程
中的体积力预先知道(如:浮力和轴对称涡流的计算),那么这一格式会处理得很好。 ? PRESTO! (PREssure STaggering Option)格式使用离散连续性平衡来计算交错压力的表
面处的交错体积。这一程序和非结构网格中[118]使用的交错网格格式的思想相似。 注意:PRESTO!格式只用于四边形或者六面体网格。
当使用这些可选格式时,推荐大家参阅一下选择压力插值格式一节。
连续性方程的离散
分离求解器中的方程1可以在离散一节中的图1所示的控制体上积分,从而得到如下离散方程:
Nfacesf?Jf?0
其中J_f是通过表面f, r v_n A_f的质量流速。因此:
Nfacesf??vnAf?0
如数值格式概述一节所述,动量方程和连续性方程式按顺序解出的。在这个顺序格式中,连续性方程是作为压力的方程使用的。但是对于不可压流动,压力并没有明确出现在方程3中,这是因为密度并不是直接和压力相关。SIMPLE (Semi-Implicit Method for Pressure-Linked Equations)的一组算法[118]将压力引进连续性方程。具体可以参阅SIMPLE一节。
为了将来能够继续下去,有必要将速度的表面值v_n和速度在单元的中心的存储值关联起来。单元中心速度到表面的线性插值会导致压力的非物理校验板(checker-boarding)。FLUENT用Rhie和Chow[132]概述的相似程序来避免校验板。速度v_n的表面值不是线性平均而是动量权重平均,这个权重因子是基于动量方程离散一节中的方程1的a_P系数的。采用这种程序,表面流动速度J_f可以写成:
??d?p?p? Jf?Jffc0c1其中,p_c0和p_c1是表面两边单元的压力,J(hat)_f包含了这些单元中速度的影响(见离散一节中的图1)。d_f向可以写成:
df??A2faP
a(bar)_P项是表面两边单元中动量方程a_P系数的平均。
压力-速度耦合
使用连续性方程的离散一节中的方程5来实现压力速度耦合,从而从离散连续性方程(连续性方程离散一节中的方程3)推导出一个压力方程。FLUENT提供了三种可选的压力速度耦合算法:SIMPLE,SIMPLEC和PISO。关于这些算法的选择请参阅选择压力速度耦合方法一节。
SIMPLE
SIMPLE算法使用压力和速度之间的相互校正关系来强制质量守恒并获取压力场。
如果用猜测压力场p^*来解动量方程,从连续性方程离散一节中的方程5所得到的表面流量J^*_f为:
**?*J*f?Jf?dfpc0?pc1
??它并不满足连续性方程。因此将校正项J^'_f加入到表面流速J^*_f中来校正质量流速J_f:
?Jf?J*f?Jf
此时满足了连续性方程。SIMPLE假定J^'_f写成如下形式:
?0?pc?1? J?f?df?pc其中p^'是单元压力校正。
SIMPLE算法将流量校正方程(方程3和5)代入到离散连续性方程(连续性方程的离散一节中的方程3)从而得到单元内压力校正p^'的离散方程。
??b aPp???anbpnbnb其中,源项b是流入单元的净流速。
Nfacesb??Jf*f
压力校正方程(方程7)可以用代数多重网格一节中所介绍的代数多重网格方法来解。一旦得到解,使用下面的方程校正单元压力和表面流动速度:
p?p*??pp?
??Jf?J*f?df?pc0?pc1?
在这里,a_p是压力亚松驰因子(请参阅亚松驰方面的介绍)。校正后的表面流速J_f在每一
部迭代中同一地满足离散连续性方程。
SIMPLEC
基本SIMPLE算法的很多变量都可以在相关文献资料中查到。除了SIMPLE算法之外,FLUENT还提供了SIMPLEC (SIMPLE-Consistent)算法[164]。SIMPLE算法是默认的,但是对于很多问题如果使用SIMPLEC可能会更好一些,具体可以参阅SIMPLE与SIMPLEC的比较一节。