第22章 fluent解算器的使用

更新时间:2024-02-03 05:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

使用求解器

数值格式概况

FLUENT提供两种数值求解方法:分离解法(\和耦合解法(\。

Fluent的两种解法都可以解守恒型积分方程,其中包括动量、能量、质量以及其他标量如湍流和化学组分的守恒。在两种情况下都应用了控制体技术,它包括: 使用计算网格对流体区域进行划分

对控制方程在控制区域内进行积分以建立代数方程,这些代数方程中包括各种相关的离散变量如:速度、压力、温度以及其他的守恒标量

离散方程的线化以及获取线性方程结果以更新相关变量的值

两种数值方法采用相似的离散过程——有限体积,但线化的方法以及离散方程的解法是不同的。首先我们在离散解法与耦合解法中讨论一般的解法,然后讨论一下线性显式与隐式中的线化方法

分离解方法

分离求解器原来是FLUENT 4和FLUENT/UNS所用的算法。使用该方法,控制方程是分离解出的(即:一个一个的解)。因为控制方程是非线性的(还是耦合的),所以在得到收敛解之前,必须进行迭代。下面是对每步迭代的介绍:

1. 在当前解的基础上,更新流体属性(如果计算刚刚开始,流体的属性用初始解来更新) 2. 为了更新流场,u,v和w的动量方程用当前压力和表面质量流量按顺序解出。 3. 因为第一步得到的速度可能在局部不满足连续性方程,所以从连续性方程和线化动量方

程推导出压力校正的泊松方程。然后解出压力校正方程获取压力和速度场以及表面质量流量的必要校正从而满足连续性方程。

4. 在适当的地方,用前面更新的其它变量的数值解出湍流、能量、组分与及辐射等标量。5. 当包含相间耦合时,可以用离散相轨迹计算来更新连续相的源项。 6. 检查设定的方程的收敛性。

直到满足收敛判据才会结束上述步骤。

Figure 1: 分离求解器方法概述

耦合解方法

耦合求解器原来用于RAMPANT。该方法同时解连续性、动量、能量以及组分输运的控制方程(即:耦合在一起)。然后分离解方法中的分离求解器程序解附加的标量控制方程(即:和耦合方程是分离的)。因为控制方程式非线性的和耦合的,所以在获取收敛解之前需要进行适当的解循环的迭代。组成每一步迭代的步骤见上图,现概括如下:

1. 在当前解的基础上更新流体属性(如果刚刚开始计算则用初始解来更新)。 2. 同时解连续性、动量、能量和组分输运方程。

3. 在适当的地方,用前面更新的其它变量的数值解出如湍流和及辐射等标量。 4. 当包含相间耦合时,可以用离散相轨迹计算来更新连续相的源项。 5. 检查设定的方程的收敛性。

直到满足收敛判据才会结束上述步骤。

Figure 1: 耦合解方法概述

线化:隐式和显式的比较

在分离和耦合解方法中,离散,非线性控制方程被线化为每一个计算单元中相关变量的方程组。然后用线化方程组的解来更新流场。 控制方程的线化形式可能包括关于相关变量的隐式或显式形式。隐式和显式的意义如下:

? 隐式:对于给定变量,单元内的未知值用邻近单元的已知和未知值计算得出。因此,每

一个未知值会在不止一个方程中出现,这些方程必须同时解来给出未知量。

? 显示:对于给定变量,每一个单元内的未知量用只包含已知量的关系式计算得到。因此

未知量只在一个方程中出现,而且每一个单元内的未知量的方程只需解一次就可以给出未知量的值。 在分离求解器中,每一个离散控制方程都是该方程的相关变量的隐式线化。从而区域内每一个单元只有一个方程,这些方程组成一个方程组。因为每一个单元只有一个方程,所以常常会被称为标量系统方程。点隐式(高斯-塞德尔)线化方程求解器和代数多重网格方法 (AMG)一起被用于解单元内相关变量的标量系统方程。例如,x向动量方程被线化得到速度u未知的方程系统。方程系统的共时解(用标量AMG求解器)更新了u方向上的速度场。

总而言之,分离解方法同时考虑所有单元来解出单个变量的场(如:p)。然后再同时考虑所有单元来解出下一个变量的场,直至全部解出。分离求解器没有什么明确的选项。

在耦合解方法中你可以选择控制方程的隐式或者显式线化形式。这一选项只用于耦合控制方程组。与耦合方程组分开解的附加标量,如湍流、辐射等,的控制方程是采用和分离解方法中介绍的相同程序来线化和解出的。不管你选择的是显式还是隐式格式,解的过程都要遵循上图中的耦合解方法。

如果你选择耦合求解器的隐式选项,耦合控制方程组的每一个方程都是关于方程组中所有相关变量的隐式线化。这样我们便得到了区域内每一个单元的具有N个方程的线化方程系统,其中N是方程组中耦合方程的数量。因为每一个单元中有N个方程,所以这通常被称为方程的块系统。因为每个单元有N个方程,所以它通常被称为方程的块系统。点隐式(块结构高斯-塞德尔)线化方程求解器和代数多重网格方法 (AMG)一起被用于解单元内N个

相关变量的块系统方程。例如,连续性方程和x,y,z方向动量方程以及能量方程的耦合会产生一个方程系统,在这个方程系统中,p,u,v,w和T都是未知的。用块AMG求解器同时解这些方程就会马上更新压力、三个坐标轴方向上的速度以及温度场。

总而言之,耦合隐式求解器同时在所有单元内解出所有变量(p, u, v, w, T)。 如果你选择耦合求解器的显式选项,耦合的一组控制方程都用显式的方式线化。和隐式选项一样,通过这种方法也会得到区域内每一个单元的具有N个方程的方程系统。同样地,方程系统中的所有相关变量都同时更新。然而,方程系统中都是未知的因变量。例如,x向动量方程写成的形式是为了保证更新后的x速度为流场变量已知值的函数。正因为如此,我们不需要线化方程求解器。取而代之的是,解的更新是使用多步(Runge-Kutta)求解器来完成的。在这里你可以选择全近似存储(FAS)多重网格格式来加速多步求解器。FAS多重网格的耦合显示求解器原来是用于RAMPANT中的。

总而言之,耦合显式方法同时解一个单元内的所有变量(p,u,v,w,T)。

注意FAS多重网格是显式求解器方法的一个可选部分,而AMG方法是分离和耦合隐式方法需要的部分。

离散

FLUENT使用基于控制体的方法将控制方程转换为可以用数值方法解出的代数方程。该方法,在每一个控制体内积分控制方程,从而产生基于控制体的每一个变量都守恒的离散方程。

考虑标量?输运的定常状态守恒方程可以很容易的说明控制方程的离散。下面就是写成对于控制体积V的积分形式的方程:

???v?dA???????dA??S?dV

V其中 r = 密度

v = 速度矢量(= u ,i(hat) + v ,j(hat) in 2D) A = 曲面面积矢量 G_f = f的扩散系数

?f = f的梯度 (= (秄/?x) ,i(hat) + (秄/?y) ,j(hat) in 2D) S_f = 每一单位体积f的源项

上面的方程被应用于区域内每一个控制体积或者单元。下面图中的二维三角单元就是控制体积的一个例子。在给定单元内离散上面的方程有:

Nfacesf?v?fNfacesfAf????????fnAf?S?V

where N_faces f_f = v_f = A_f =

= 封闭单元的面的个数 通过表面f的对流量 通过表面的质量流量

表面?的面积,|A| (= | A_x i(hat) + A_y j(hat) | in 2D)

(?f)_n = magnitude of ?f normal to face f V = 单元体积

由FLUENT所解的方程和上面所给出的一般形式相同,而且很容易扩展到多维情况和友人以多边形、多面体组成的非结构网格。

Figure 1: 用于显示标量输运方程离散的控制体积

FLUENT在单元的中心(上图的c0和c1)存贮标量f的离散值。然而,方程3的对流项中需要表面值f_f,因此必须从单元中心插值。这个任务由迎风格式完成。

迎风的意思就是,表面值f_f是从单元上游或者说迎风处的量推导出来的,这个上游是指相对于方程3法向速度v_n的方向而言的,FLUENT允许你选择几种迎风格式:一阶迎风,二阶迎风,幂率和QUICK格式。这些格式在一阶迎风格式一节中介绍[95]。

方程3中的扩散项是中心差分而且一般具有二阶精度。

一阶迎风格式

当需要一阶精度时,我们假定描述单元内变量平均值的单元中心变量就是整个单元内各个变量的值,而且单元表面的量等于单元内的量。因此,当选择一阶迎风格式时,表面值f_f被设定等于迎风单元的单元中心值。

幂率格式

幂率离散格式使用一维对流扩散方程的精确解来插值变量f在表面处的值。

???u??????? ?x?x?x其中G和r u是通过间隔?x的常值。积分方程1可得如下f随x的变化关系:

x??expP????1??x???0L?? ??L??0exp?P???1其中:

f_0 = f|_x=0 f_L = f|_x=L Pe是Peclet数。

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的比较一节。

SIMPLEC程序和SIMPLE程序相似。两种算法所使用的表达式唯一的区别就是表面流动速度校正项。和SIMPLE中一样,校正方程可写为:

??Jf?J*f?df?pc0?pc1?

但是系数d_f重新定义为:

??df??A2ap?a??fnb?

nb??可以看出,在压力速度耦合是得到解的主要因素时,使用修改后的校正方程可以加速收

敛。

PISO

压力隐式分裂算子(PISO)的压力速度耦合格式是SIMPLE算法族的一部分,它是基于压力速度校正之间的高度近似关系的一种算法。SIMPLE和SIMPLEC算法的一个限制就是在压力校正方程解出之后新的速度值和相应的流量不满足动量平衡。因此必须重复计算直至平衡得到满足。为了提高该计算的效率,PISO算法执行了两个附加的校正:相邻校正和偏斜校正。

PISO算法的主要思想就是将压力校正方程[69]中解的阶段中的SIMPLE和SIMPLEC算法所需的重复计算移除。经过一个或更多的附加PISO循环,校正的速度会更接近满足连续性和动量方程。这一迭代过程被称为动量校正或者邻近校正。PISO算法在每个迭代中要花费稍多的CPU时间但是极大的减少了达到收敛所需要的迭代次数,尤其是对于过渡问题,这一优点更为明显。

对于具有一些倾斜度的网格,单元表面质量流量校正和邻近单元压力校正差值之间的关系是相当简略的。因为沿着单元表面的压力校正梯度的分量开始是未知的,所以需要进行一个和上面所述的PISO邻近校正中相似的迭代步骤[51]。初始化压力校正方程的解之后,重新计算压力校正梯度然后用重新计算出来的值更新质量流量校正。这个被称为偏斜矫正的过程极大的减少了计算高度扭曲网格所遇到的收敛性困难。PISO偏斜校正可以使我们在基本相同的迭代步中,从高度偏斜的网格上得到和更为正交的网格上不相上下的解。

多相流中强体积力的特定处理

当多项流中存在较大的体积力(如:重力或者表面张力),动量方程中的体积力项和压力梯度项几乎是平衡的,相比较来说,对流项和粘性项的贡献就较小了。除非考虑压力梯度和体积力的局部平衡,否则分离算法的收敛性会很差。FLUENT提供了一种可选的隐式体积力处理,这种处理考虑了上面所说的影响从而使得解更具有鲁棒性。

基本的程序是将包含体积力的校正项增加到表面流动校正方程中(SIMPLE中的方程13)。这样,SIMPLE中的方程9就多了一个额外的体积力校正项,从而使得流动在迭代过程中提早得到真实的压力场。

这一选项只在多项流计算中使用,但是在默认情况下是关闭的。设定多相流计算的说明中包括了打开隐式体积力处理的说明,具体可以在以下几节中找到相关说明:在VOF计算中包括体积力,在气穴计算中包括体积力,在代数滑移混合计算中包括体积力。

除此之外,通过使用体积力的亚松驰因子,FLUENT允许你控制体积力中的变化。

耦合求解器

FLUENT中的耦合求解器同时解连续性、动量、(合适的话)能量和组分输运,并将它们作为一组控制方程或者方程的矢量来处理。随后会按顺序解附加标量的控制方程(也就是说这些附加标量方程相互之间是分离的而且和耦合方程组之间是分离的)。

矢量形式的控制方程

将曲面面积微分dA作为控制体积,积分描述平均流动属性的单组分流体的控制方程系统,相应的笛卡尔坐标形式为:

?WdV???F?G??dA??HdV

V?t?V其中,矢量W,F和G分别定义为:

?0??????v??????u???vu?pi??xi????????????W???v?,F???vv?p?j?,G???yi?

???w???vw?pk????zi???????????E????vE?pv????ijvj?q??矢量H包含了诸如体积力、能量等源项。

在这里,r、v、E和p分别是流体的密度、速度、单位质量的总能量以及压力。T是粘性应力张量,q是热流量。

总能量E和总焓H的关系为:

E?H?p?

其中:

H?h?v22

在方程1中所表示的Navier-Stokes方程在低马赫数下会非常具有刚性,这主要是因为流体速度v和声速c相差太大。对于不可压流来说这种情况尤其真实,不管流动速度有多大,不可压流体中的声速都是无穷大。在这些情况下,方程的数值刚性会导致较差的收敛速度。在FLUENT中,我们采用耦合求解器中的一种被称为(时间导数)预处理[175]的方法克服了这种困难。

预处理

时间导数预处理方法,是用预处理矩阵先乘以矢量形式控制方程中方程1的时间导数项。这一步就重新标度了所解方程系统的声速(特征值),从而减轻了低马赫数和不可压流动中会遇到的数值刚性的影响。

推导预处理矩阵,首先是用微分学中的一个法则(具体看方程就知道了)将守恒量W在控制方程的方程1的因变量形式变形为原始变量Q的形式,结果如下:

?W?QdV???F?G??dA??HdV ?VV?Q?t其中,Q是矢量{p, u, v, w, T }^T,雅克比(Jacobian)矩阵?W/?Q为:

??p??up?W?????pv?Q??w?p???pH其中:

?T???00?Tu??0?0?Tv? 00??Tw???u?v?w?TH??Cp??000?p?????,?T?

?Tp?pT对于理想气体d = 1,对于不可压流体d = 0。

选择原始变量Q作为因变量有几个原因。首先,解不可压流动时它是自然的选择。其次,当我们使用二阶精度时,为了得到粘性流动中更高精度的速度和温度梯度以及无粘流动的压力梯度,我们需要重建Q而不是W。最后,选择压力作为因变量允许系统中的声波的传播被挑选出来[165]。

我们用预处理矩阵G来替换雅克比矩阵?W/?Q(方程3)来实现方程的预处理,这样,预处理系统的守恒形式为:

??QdV???F?G??dA??HdV ?VV?t其中:

0????u???????v0??w0????H?u参数?为: ?1?T???2??U?r?Cp?T??00?Tu???0?Tv? 0??Tw???v?w?TH??Cp??00?? ??方程9中的参考速度U_r在当地选取,从而保证系统的特征值关于对流和耗散时间尺度能够调节的很好[175]。

预处理之后的方程系统(方程5)的特征值为:

u,u,u,u??c?,u??c?

其中:

F?1??Q ?FR?FL??1?A22在这里,d Q是空间差分Q_R - Q_L。流量F_R = F(Q_R)和F_L = F(Q_L)是用表面“右边”

和“左边”的(重建解)矢量Q_R和Q_L计算出来的。矩阵|A(hat)|定义为:

??M?M?1 A其中L是特征值的对角阵,M是G^-1A对角化的模式矩阵,其中A是无粘流量Jacobian矩阵?F/?Q。

对于非预处理系统(和理想气体),方程13化简为在Roe平均用于估计G,|A(hat)|时的Roe流量差分分裂[133]。目前所使用的是Q_R和Q_L的平均。

在当前形式中,方程13可以看成二阶中心差分加上附加的矩阵耗散。附加的矩阵耗散项不仅对对流变量迎风的产生和超音速流动的压力和流量速度有作用,而且还提供了定常状态的压力速度耦合,并对低速和不可压流的稳定性和高效收敛有作用。

定常流的时间步进法

FLUENT中耦合控制方程组(预处理中的方程5)在时间上的离散既可以用于定常计算也可以用于非定常计算。在定常情况下,进行时间步进计算直至达到定常解。耦合方程可以用隐式也可以用显式时间步进来进行时间离散。这两种算法在下面的显式和隐式格式两节中介绍。

显式格式

在显式格式中,预处理的方程5是用多步,时间步进算法[73]来离散时间导数的。从第n步迭代到第n+1步迭代是用m步Runge-Kutta格式来提高解的,m步Runge-Kutta格式为:

R?iNfaces??F?Q??G?Q???A?VH

ii时间步D t是从CFL(Courant-Friedrichs-Lewy)条件计算得到的

?t?CFL?x?max

其中l_max是预处理一节中方程11定义的局部特征值的最大值。

使用全近似多重网格方法(FAS)可以加快显示格式的收敛速度,关于FAS请参阅后面将要介绍的内容。

通过与相邻残差的隐式平均增加格式的支持可以在后面的计算中增加最大时间步长。残差通过Laplacian 光滑算子进行过滤,其中Laplacian 光滑算子为:

Ri?Ri????Rj?Ri?

该方程可以用下面的Jacobi迭代解出:

Riim?Ri???Rjm?11???1(译者注:分母为什么这样写?)

对于e=0.5,两次Jacobi迭代就足可以允许时间步增加一倍。

隐式格式

在显式格式中,控制方程(预处理一节中的方程5)的时间Euler隐式离散和流量的牛顿类型线化界和得到下面delta形式的线化系统[174]:

Nfaces??n?1D?S??Rn ??j,k??Qj??中心D和对角线下面的系数矩阵S_j,k分别为:

VD????tNfacesj?Sj,i

??Fj?GjSj,k????Q??Qk?k??? ?残差矢量R^n和时间步D分别在显式格式中的方程1和方程3中定义。

方程1是用点Gauss-Seidel格式和适应耦合的一组方程的代数多重网格方法解出的。

非定常流的时间离散

对于时间精度计算,可以使用显式和隐式时间步进格式。(隐式方法也被称为双重时间步进法)

显式时间步进

在显式时间步进方法中,使用显式格式一节所介绍的方法,在区域的每一个单元内使用相同的时间步,取消预处理选项。

双重时间步进

为了得到预处理方程的高效的,时间精度解,我们采用双重时间步进法和多步格式。在这里我们在矢量形式的控制方程的方程1中引入伪时间导数:

??WdV???t?V???QdV???F?G??dA??HdV

VV其中t是物理时间,t是时间步进程序中的伪时间。注意:方程1左手边的第二项t??消失了,而重新获得了矢量形式控制方程中的方程1。

方程1中的时间相关项是用一阶或者二阶精度后向时间差分进行隐式离散的。写成半隐式形式如下:

A?e?b?0

其中f_e是精确解。在解收敛之前可能会有一个和近似解f有关的误差d:

A??b?d

我们寻找一个校正f的y,这样,精确解由下式给出:

?e????

将方程7代入到方程3中有:

A??????b?0 A???A??b??0

现在,使用方程5和方程9可以得到:

A??d?0

这是根据初始细化层面算子A和误差d的校正方程。假如局部(高频)误差在精细层面已经充分消除,就可以在下一个较粗糙的层面光滑校正y并更有效的解决问题。

限制和延拓

在粗化层面解校正方程需要将精细层面(限制)的误差转移过来,还需要计算校正方程,然后再将校正结果从粗化网格层面(延拓)传回来。粗化层面校正y^H可以写为:

AH?H?Rd?0

其中A^H是粗化层面算子,R是限制算字,负责将精细层面的误差传到粗化层面。根据更新之后的精细层面解可以给出方程1的解为:

?new???P?H

其中P是延拓算子,用于将粗化层面的校正传给细化层面。

非结构多重网格

在非结构网格中使用多重网格的主要困难在于粗化网格的创建和使用。在结构网格中,可以通过简单的从精细网格中移去每隔一个的网格线来得到粗化网格而且限制和延拓算子很容易用公式表示出来(如:注入和双线性插值)。

FLUENT中使用两种多重网格方法分开的方式克服了在非结构网格上应用多重网格的困难。迄今为止所讨论的基本原则和多重网格循环一节中讨论的循环策略是相同的,限制、延拓和粗化网格算子的建构技巧是不同的,具体在代数多重网格(AMG)和全近似存储(FAS)多重网格两节中分别讨论了AMG和FAS方法。

译者注:

多重网格法基本原理

微分方程的误差分量可以分为两大类,一类是频率变化较缓慢的低频分量;另一类是频率高,摆动快的高频分量。一般的迭代方法可以迅速地将摆动误差衰减,但对那些低频分量,迭代法的效果不是很显著。高频分量和低频分量是相对的,与网格尺度有关,在细网格上被视为低频的分量,在粗网格上可能为高频分量。

多重网格方法作为一种快速计算方法,迭代求解由偏微分方程组离散以后组成的代数方程组,其基本原理在于一定的网格最容易消除波长与网格步长相对应的误差分量。该方法采用不同尺度的网格,不同疏密的网格消除不同波长的误差分量,首先在细网格上采用迭代法,

当收敛速度变缓慢时暗示误差已经光滑,则转移到较粗的网格上消除与该层网格上相对应的较易消除的那些误差分量,这样逐层进行下去直到消除各种误差分量,再逐层返回到细网格上。

目前两层网格方法从理论上已证明是收敛的,并且其收敛速度与网格尺度无关[哈克布思,1988]。 多重网格法是迭代法与粗网格修正的组合,经过证明,迭代法可迅速地将那些高频分量去掉,粗网格修正则可以帮助消除那些光滑了的低频分量,而对那些高频分量基本不起作用。

在多重网格计算中,需要一些媒介把细网格上的信息传递到粗网格上去,同时还需要一

ih

些媒介把粗网格上的信息传递到细网格上去。限制算子I(i-1)h是把细网格i-1层上的残余限制到粗网格i层上的算子,最简单的算子是平凡单射,另外还有特殊加权限制;插值算子(i-1)hIih是把粗网格i层上的结果插值到细网格i-1层上的算子,一般采用线性插值或完全加权限制算子。

需要说明的是在多重网格迭代方法中,粗网格修正之前,细网格必须进行光滑迭代,以消除高频误差,使粗网格修正最有效地发挥其作用;在粗网格修正之后,不可避免的引入高频误差,所以也必须进行光滑迭代,不过高频误差能很快的通过光滑迭代消除。

Multigrid Cycles

多重网格循环可以定义为在每一个网格层面通过网格层次时在网格层面内应用的递归程序。FLUENT中有四种多重网格循环:V,W,F以及灵活(\循环。V和W循环可以用在AMG和FAS中,F和灵活循环只限用于AMG方法。(W和灵活AMG循环由于要花费大量的计算而不可用于解耦合方程组。)

The V and W Cycles

下面两个图分别是V和W多重网格循环(定义如下)。在每一个图中,多重网格循环被描述为正方形,然后被扩展来表示循环内执行的个别步骤。当你读下面的步骤时,你可能想要遵循图中所描述的步骤。

Figure 1: V循环多重网格

Figure 2: W循环多重网格

对于V和W循环,各个层面的转换由三个参数控制:b_1,b_2和b_3: 1. b_1“滤波”(有时称为预松弛扫描),在当前网格层面进行滤波减少误差(当地误差)的高频部分。

在图1和2中,这一步被描述为一个循环,并标记了多重网格循环的起点。误差的高频分量必须减小直至所剩下的误差在下一个较粗糙的网格中没有明显的混淆现象。

如果这是最粗糙的网格层面,在这个层面的多重网格循环就结束了(在图1和2中有3个粗糙网格层,所以描述层面3多重网格循环的四边形等价于每一个图中最后一个图表的循环)

注意:在AMG方法中b_1的默认值是0(即:没有预松弛)。

2. 接着就是用适当的限制算子将问题限制映射到下一个粗糙网格层面。

在图1和2中,从精细网格限制映射到较粗糙网格层面用向下的斜线来表示。

3. 通过执行b_2多重网格循环可以减少粗化网格的误差(在图1和2中用四边形表示)。通常说来,对于固定的多重网格策略,b_2是1或者2,分别对应V循环和W循环多重网格。

4. 然后,使用适当的延拓算子,在粗化网格上积累的校正用内插替换返回到精细网格并加到精细网格解中。

在图1和2中,延拓算子用斜向上的线来表示。 现在在精细网格层面上出现了高频误差,这个误差是由于延拓程序使用传递矫正而造成的。

5. 在最后一步,执行b_3光滑(后松弛)来去掉b_2网格循环在粗糙网格中引进的高频误差。

在图1和2中,松弛程序用一个三角形表示。

注意:在FAS方法中,在这一步中使用显式格式中的拉普拉斯光滑算子,校正又会被进行光滑处理,b_3的默认值是零(也就是说,不进行这种光滑处理);在最精细的网格层面的循环结束处从来不进行b_3光滑。

代数多重网格(AMG)

我们将会看到,这一算法之所以被称为代数多重网格格式,主要是因为粗糙层面方程的生成不需要在粗糙层使用任何几何图形或者重新离散;这一功能使得在使用非结构网格时AMG尤其有用。优点在于:不必创建或者存储粗糙网格,而且不需要在粗糙层面估计任何流量或者源项。这一方法和FAS (有时被称为几何学的)多重网格方法形成鲜明对比,在FAS方法中需要网格的层级,和每一个层面的离散方程。。从理论上说,FAS优于AMG方法的地方在于,对于非线性问题前者可以做得更好,这是因为系统的非线性可以通过重新离散传到粗糙层面;当使用AMG时,一旦系统被线化,直到细化层面算子被更新,求解器才会“感觉到”非线性。

AMG限制和延拓算子

这里所使用的限制和延拓算子是基于附加校正(AC)策略的,结构网格的附加校正是由Hutchinson和Raithby[68]描述的。层间的传递是用分段线性插值和延拓完成的。任何粗化层面单元的缺点由细化层面包含的缺点的总和给出的,通过注入粗化层面的值来获取细化层面的校正。在这种方式中,延拓算子由限制算子的转置给出。

P?RT

限制算子是用细化层面单元粗化或者分组到粗化层面单元来定义。在这个过程中,每一个细化层面的单元用一个或者更多的最强相邻网格来分组,对当前未分组的相邻网格优先选择。这个算法尝试将单元集中到成组的固定尺寸中,一般是二或者四组,但是可以指定任何数。在分组的前后关系中,最强是指当前单元i的相邻单元j的系数A_ij是最大的。对于成组的耦合方程,A_ij是一个块矩阵,它的大小的度量被简单的看成第一个单元的大小。除此之外,对于给定单元的一组耦合方程被一起处理,而且在不同的粗糙单元中不再划分。这样,就对系统中的每一个方程产生了相同的粗化。

AMG粗糙层面算子

使用Galerkin方法来建构粗化层面算子A^H。在这里,当转移到粗化层面时,与细化层面解有关的缺陷必须消除。因此我们可以写出:

Rdnew?0

在双重时间步中的方程5和限制和延拓中的方程3的基础上替换d^new 和f^new可以得到:

RA?new?b?0 RA??P?H?b?0

现在重新整理和使用双重时间步一节中的方程5有:

??????RAP?H?R?A??b??0 RAP?H?Rd?0

比较限制和延拓一节中的方程1和方程5可以得到下面的粗化层面算子的表达式:

AH?RAP

因此,粗化层面算子的建构减少到所有精细层面单元的对角线与组中的相应对角线下面的块之和来形成该组粗化单元的对角线块。

F循环

多重网格F循环本质上是V和W循环的结合。 多重网格循环是一个递归程序,该程序通过在当前层面完成单一网格循环来扩展到下一个粗糙网格层面。参阅V和W循环一节中的图1中的V和W循环以及图2中的V和W循环我们可以看出,F循环就是用0-1层循环(每一个图中的第二个图表)程序来替换当前层(描述单一循环)的方块。可以看出,V循环包括:

?1smooth?restrict?Vcycle?prolongate??3smooth

W循环包括:

?1smooth?restrict?Wcycle?Wcycle?prolongate??3smooth

F循环则是用W循环之后进行V循环来构成:

?1smooth?restrict?Wcycle?Vcycle?prolongate??3smooth

正如预料的那样,F循环比V循环需要更多的计算,但是比W循环花费要少一些。但是它的收敛性比V循环要好,大致和W循环的收敛性差不多。对于耦合求解器设置来说,F循环是默认的AMG循环类型。

灵活循环

对于灵活循环,使用粗化网格的计算由下图中所示的逻辑控制多重网格程序来实现。这一逻辑控制可以保证当前层面的网格的残差减小速度足够慢时就会调用较粗糙网格的计算。除此之外,当当前粗糙网格层上的校正迭代解充分收敛而且因此应该转到下一层精细网格时,多重网格控制会做出适当的处理。这两个判断由下图中所示的两个参数a和b来控制。详细请参阅下面内容。注意多重网格程序的逻辑是这样的:在某一方程上的单一全局迭代过程中,可能会重复处理网格层面。例如:对于4层多重网格,其中包括0,1,2,3四层,解给定输运方程的灵活多重网格程序可能会按这样的顺序处理网格层面:0-1-2-3-2-3-2-1-0-1-2-1-0:

Figure 1灵活多重网格的逻辑控制

灵活循环和V,W循环之间的主要区别是:灵活循环会通过残差减小的公差和终止判据的满足情况来确定什么时候,按什么样的频率来处理每一层网格,而V和W循环则明确定义了各个层面之间的转换模式。

当当前层面的误差减小速度不够快时,多重网格程序就会调用下一个网格层面的计算,具体判断公式如下:

Ri??Ri?1

其中,R_i是在当前层面经过第i步迭代之后从当前网格层面计算出的残差和的绝对值。上面的公式表明,如果经过i步迭代后迭代解的残差比某一分数b(在0和1之间)大,就需要处理下一个粗化网格层面了。因此b被称为残差减小公差,用于确定什么时候放弃当前

网格层面的迭代解,并转移到下一个更粗糙的网格上解校正方程。B的值控制了处理的粗化网格层面的频率。默认值是0.7。如果b的值较大,就会处理较小的频率,反之亦然。

假定残差减小速度足够块,校正方程会在当前网格层收敛,这样就可以转到下一个更精细的网格层面计算。 当校正解的误差减小到该网格层初始误差的某一分数a(在0和1之间)时,当前网格层上的校正方程就可以被认为是充分收敛了。

Ri??R0

其中,R_i是在当前层面经过第i步迭代之后从当前网格层面计算出的残差。R_0时在当前全局计算中该网格层面最初获得的残差。参数a被称为终止判据,默认值是0.1。注意,上面的方程也用于多重网格程序中最低(最精细)网格层面的终止计算。因此,继续在每一个网格层面(包括最精细的网格层面)进行松弛,直到满足该方程的判据(或者直到完成最大的迭代步,而所指定的判据还没有实现)。

全近似格式(FAS)多重网格

FLUENT中FAS形成多重网格层级的方法是将精细网格的成组单元结合起来形成粗化网格单元。如下图所示,粗化网格单元是用节点周围的单元聚束形成的。根据网格的拓扑结构的不同,这一方法可以形成不规则网格和不定的表面数。但是,网格层面的简单创建和植入也就对应了简单的延拓和松弛算子。

Figure 1: 节点聚束形成粗化网格单元

有趣的是,虽然粗化网格单元看起来很不规则,但是在单元表面上还是看不到锯齿状的结构。离散只使用单元表面的区域映射,因此将两个不规则外形单元分开的每组锯齿状单元表面,在二维问题中等价于连接锯齿单元终点的一条直线,在三维问题中等价于从不规则但连续的几何形状映射而来的区域。这种优化方法减少了所需的内存和计算时间。

FAS限制和延拓算子

FAS既需要精细网格解f的限制又需要其残差d(误差)的限制。这个用于将解传到下一个较粗糙的网格层面的算子是用全近似格式构成的[22]。也就是说,取精细网格单元上解的体积平均值来得到粗糙单元的解。粗糙网格上的残差等于植入的精细网格单元内的残差之和。

通过简单的设定精细网格校正为与其相关的粗糙网格的值,我们构建了用于将校正传到细化层面的延拓算子P。

粗糙网格校正y^H是从粗糙层面f^H计算得到的解和限制到粗糙层面Rf的初始解之间的差值计算得到的,它产生于粗糙层面并被应用于精细层面解。因此精细层面解的校正变成:

?new???P??H?R??

FAS粗化层面算子

FAS粗化网格算子是很简单的,它源于粗糙层面网格上控制方程的再离散。因为在离散一节中出现的离散方程和耦合求解器对组成单元的很多表面不加限制,所以在由不规则外形单元组成的粗糙网格上进行的再离散不存在问题。

当在不规则粗糙网格单元上使用有限体积格式时会丢失一些精度,但是因为多重网格解的精度主要有最精细的网格决定,所以解的精度不会受到粗糙网格离散的影响。

为了保持精细网格解的精度,我们修改了粗糙层面方程来包括源项[72],这就保证了如果精细网格d^h上的残差为零,那么在粗糙网格f^H上计算得到的校正也会是零。因此,粗糙网格方程用公式表示为:

AH?H?dH?dH?R???Rdh

其中,d^H是从当前粗糙网格解f^H中计算得到的粗糙网格残差,d^H(R f)是从限制的精细层面解R f计算得到的粗糙网格残差。起初,这两项是相同的(因为在初始时我们有f^H = R f),删除这两项化简上面的方程可得:

AH?H??Rdh

所以当细化网格残差d^h为零时就不会有粗化层面校正了。

求解器使用概述

当你确定了模型和求解器(参阅使用求解器形式一节),你就可以运行求解器了。下面是你可以参阅的一般步骤:

1. 选择离散格式,如果使用分离求解器,你还可以选择压力插值格式(见选择离散格式一

节)。

2. (只用于分离求解器)选择压力速度耦合方法(参阅选择压力速度耦和方法一节)。 3. 设定亚松驰因子(见设定亚松驰因子一节)。

4. (只用于耦合显式求解器)打开FAS多重网格(见打开FAS网格一节)。

5. 对求解器设定作任何附加的修改,具体的修改可以参阅介绍你所使用的模型的相关章

节。

6. 初始化解(参阅初始化解一节)

7. 激活适当的解监视器(参阅监视解的收敛一节)。 8. 开始计算(参阅执行计算一节)。

9. 如果出现收敛性问题,请尝试收敛性和稳定性一节中所讨论的方法。

前三项的默认设定可以满足大多数问题而不必修改。下面将要介绍这三个以及其它解参数可以做什么样的修改,以及什么时候你希望做出修改。上面所列出的步骤应用于所有定常状态的计算。具体可以参阅非定常解程序的时间相关模拟。

选择离散格式

FLUENT允许你选择每一个控制方程的对流项的离散格式(对于粘性项自动使用二阶精度)当使用分离求解器时,在默认的情况下,所有的方程都是使用一阶迎风离散来解对流问题。当使用耦合求解器时,在默认的情况下,流动方程是二阶格式解出的,其它方程是用

一阶格式解出的。关于FLUENT中离散格式的完全介绍请见离散一节。

除此之外,当你使用分离求解器时,你可以指定压力插值格式,有关压力插值格式的相关内容可以参阅前面的介绍。

一阶与二阶的比较

当流动和网格成一条线时(如:矩形网格或者六面体网格模拟矩形导管的层流流动),可以使用一阶迎风离散格式。但是,当流动和网格不在一条线上时(即:流动斜穿网格线)一阶对流离散增加了对流离散的误差(数值耗散)。。对于三角形和四面体网格,流动从来就不会和网格成一条线,此时一般要使用二阶离散来获取更高精度的结果。对于四边形或者六面体网格,如果使用二阶离散格式,尤其是对于复杂流动来说,你可以获取更好的结果。

总而言之,一阶离散一般会比二阶离散收敛得好,但是精度要差,尤其是对于三角形或者四面体网格精度更差。关于控制收敛性的信息请参阅收敛性和稳定性一节。

对于大多数情况,你可以在计算的开始使用二阶格式。对于有些情况,你应该以一阶离散开始计算,在进行了初步迭代之后再转到二阶格式。例如,如果你解高马赫数流动问题,初始解科所预期的解相差较大,你就应该先用一阶格式迭代几步然后打开二阶格式继续计算直至收敛。

对于与网格成一条线的简单流动(如:划分为矩形网格或者六面体网格的矩形导管的层流流动),数值耗散自然会很低,所以一般使用一阶格式替代二阶格式而不损失精度。

最后,如果你使用二阶格式遇到收敛性问题,你就应该尝试使用一阶格式。

幂率和QUICK格式

对于旋转和涡流来说,如果你使用四边形或者六面体网格,QUICK离散格式会比二阶格式产生更为精确的结果。但是,一般说来二阶格式已经足够了,QUICK格式也未必会提高多少精度。

我们还可以选择幂率格式,但是一般说来它不会比一阶格式精确多少。

选择压力插值格式

如压力插值格式所述,当使用分离求解器时我们可以采用很多压力插值格式。对于大多数情况,标准格式已经足够了,但是对于特定的某些模型使用其它格式可能会更好: ? 对于具有较大体积力的问题,推荐使用体积力加权格式。

? 对于具有高涡流数,高Rayleigh数自然对流,高速旋转流动,包含多孔介质的流动和

高度扭曲区域的流动,使用PRESTO!格式。

注意:PRESTO!只能用于四边形或者六面体网格。 ? 对于可压流动推荐使用二阶格式。

? 当其它格式不适用时,使用二阶格式来提高精度(如:对于流过具有非六面体或者非四

边形网格的曲面边界的流动)。

用户输入

你可以在解控制面板(如下图)中指定离散格式,如果是使用分离求解器还可以选择压力插

值格式。菜单:Solve/Controls/Solution...。

Figure 1: 分离求解器的解控制面板

在离散框下面列出的每一个标量方程(对于分离求解器,有动量、能量、湍流动能、能量等,对于耦合求解器,有湍流动能、湍流耗散速度)中,你可以在下拉列表中选择一阶迎风、二阶迎风、幂率或者QUICK格式。对于耦合求解器的流动方程(其中包括动量和能量),你既可以选择一阶迎风也可以选择二阶迎风格式。上面的面板是分离求解器对应的面板。

如果你使用分离求解器,在离散框中的压力后面的下拉列表中选择压力插值格式。你可以选择标准、线性、二阶、体积力权重或者(只用于四边形或六面体网格)PRESTO!。

如果你要改变离散的设定,但是你要回到FLUENT求解器默认的设定中修改,你可以点击默认按钮。此时所有的设定都改为默认设定,同时默认按钮就会变成重置按钮。要改回设定,你可以点击重置按钮。

选择压力速度耦合方法

在分离求解器中,FLUENT提供了压力速度耦和的三种方法:SIMPLE,SIMPLEC以及PISO。定常状态计算一般使用SIMPLE或者SIMPLEC方法,对于过渡计算推荐使用PISO方法。PISO方法还可以用于高度倾斜网格的定常状态计算和过渡计算。需要注意的是压力速度耦合只用于分离求解器,对于耦合求解器你不可以使用它。

SIMPLE与SIMPLEC比较

在FLUENT中,可以使用标准SIMPLE算法和SIMPLEC(SIMPLE-Consistent)算法,默认是SIMPLE算法,但是对于许多问题如果使用SIMPLEC可能会得到更好的结果,尤其是可以应用增加的亚松驰迭代时,具体介绍如下。

对于相对简单的问题(如:没有附加模型激活的层流流动),其收敛性已经被压力速度耦合所限制,你通常可以用SIMPLEC算法很快得到收敛解。在SIMPLEC中,压力校正亚松驰因子通常设为1.0,它有助于收敛。但是,在有些问题中,将压力校正松弛因子增加到1.0可能会导致不稳定。对于这种情况,你需要使用更为保守的亚松驰或者使用SIMPLE算法。对于包含湍流和/或附加物理模型的复杂流动,只要用压力速度耦合做限制,SIMPLEC会提高收敛性。它通常是一种限制收敛性的附加模拟参数,在这种情况下,SIMPLE和SIMPLEC会给出相似的收敛速度。

PISO

对于所有的过渡流动计算,强烈推荐使用PISO算法邻近校正。它允许你使用大的时间步,而且对于动量和压力都可以使用亚松驰因子1.0。对于定常状态问题,具有邻近校正的PISO并不会比具有较好的亚松驰因子的SIMPLE或SIMPLEC好。

对于具有较大扭曲网格上的定常状态和过渡计算推荐使用PISO倾斜校正。

当你使用PISO邻近校正时,对所有方程都推荐使用亚松驰因子为1.0或者接近1.0。如果你只对高度扭曲的网格使用PISO倾斜校正,请设定动量和压力的亚松驰因子之和为1.0(比如:压力亚松驰因子0.3,动量亚松驰因子0.7)。如果你同时使用PISO的两种校正方法,推荐参阅PISO邻近校正中所用的方法。

用户输入

你可以在解控制面板(如下图)中指定压力速度耦合方法。菜单:Solve/Controls/Solution...。

在离散框下面的压力速度耦合下拉菜单中选择SIMPLE,SIMPLEC或者PISO。

如果你选择PISO,面板就会扩展到PISO参数设定面板。在默认的情况下,倾斜校正和邻近校正都是打开的。如果你只想使用一种校正,你可以关闭适当的选项。默认的迭代数为1,你不必修改这个值。

用户输入

设定亚松驰因子

如亚松驰一节所述,分离求解器使用亚松驰来控制每一步迭代中的计算变量的更新。这就意味着,使用分离求解器解的方程,包括耦合求解器所解的非耦合方程(湍流和其他标量)都会有一个相关的亚松驰因子。

在FLUENT中,所有变量的默认亚松驰因子都是对大多数问题的最优值。这个值适合于很多问题,但是对于一些特殊的非线性问题(如:某些湍流或者高Rayleigh数自然对流问题),在计算开始时要慎重减小亚松驰因子。

使用默认的亚松驰因子开始计算是很好的习惯。如果经过4到5步的迭代残差仍然增长,你就需要减小亚松驰因子。

有时候,如果发现残差开始增加,你可以改变亚松驰因子重新计算。在亚松驰因子过大时通常会出现这种情况。最为安全的方法就是在对亚松驰因子做任何修改之前先保存数据文件,并对解的算法做几步迭代以调节到新的参数。最典型的情况是,亚松驰因子的增加会使残差有少量的增加,但是随着解的进行残差的增加又消失了。如果残差变化有几个量级你就

需要考虑停止计算并回到最后保存的较好的数据文件。

注意:粘性和密度的亚松驰是在每一次迭代之间的。而且,如果直接解焓方程而不是温度方程(即:对PDF计算),基于焓的温度的更新是要进行亚松驰的。要查看默认的亚松弛因子的值,你可以在解控制面板点击默认按钮。

对于大多数流动,不需要修改默认亚松弛因子。但是,如果出现不稳定或者发散你就需要减小默认的亚松弛因子了,其中压力、动量、k和e的亚松弛因子默认值分别为0.2,0.5, 0.5和0.5。对于SIMPLEC格式一般不需要减小压力的亚松弛因子。在密度和温度强烈耦合的问题中,如相当高的Rayleigh数的自然或混合对流流动,应该对温度和/或密度(所用的亚松弛因子小于1.0)进行亚松弛。相反,当温度和动量方程没有耦合或者耦合较弱时,流动密度是常数,温度的亚松弛因子可以设为1.0。

对于其它的标量方程,如漩涡,组分,PDF变量,对于某些问题默认的亚松弛可能过大,尤其是对于初始计算。你可以将松弛因子设为0.8以使得收敛更容易。

用户输入

你可以在解控制面板中修改亚松驰因子 (Figure 1).。菜单:Solve/Controls/Solution...。 你可以在亚松弛因子的每一个方程名字后面设定相关的亚松弛因子。

注意:如果你使用分离求解器,所有的方程都有相关的亚松弛因子。如果你使用某一耦合求解器,只有在后面解出的方程油压松弛因子。

如果你改变了亚松弛因子,但是你现在想要回到FLUENT的默认设定,你可以点击默认按钮。此时FLUENT会将亚松弛因子改回到默认值,相应的默认按钮变成了重置按钮。要将设定改回你就可以点击重置按钮。

改变Courant数

对于FLUENT的耦合求解器,对时间步进格式的主要控制是Courant数(CFL)。时间步和CFL是成比例的,如显示格式的方程3的定义。

线性稳定性理论确定了CFL的允许值的范围(即:给定数值格式保持稳定的范围)。当你指定了一个允许的CFL值,FLUENT会用显示格式一节中的方程3计算出适当的时间步。一般说来,时间步越大收敛越快,所以在允许的范围内将CFL设定越大越好。

耦合隐式和显式求解器的稳定性极限是相当不同的。显式求解器有更大的限制范围,需要比隐式求解器更小的CFL设置。关于这两种求解器CFL的选择会在下面两节中讨论。

耦合显式求解器的Courant数

线性稳定性分析表明,耦合显式求解器中使用的多步格式所允许的CFL依赖于步的数量以及粘性和耗散项的更新频率(参阅改变多步格式一节)。但是,一般说来,你可以假定多步格式对于Courant数达到2.5时是稳定的。由于控制方程的非线性,在实际中这个稳定性限制通常是较低的。

耦合显式求解器的默认CFL为1.0,但是对于一些二维问题你可以增加它。一般说来你不可以使用高于2.0的CFL数。

如果解是发散的,也就是说残差增加的很快,而且你的问题设定和初始化都没有错误,那么这个时候通常需要减小Courant数。根据启动条件的精确性不同,你可以将CFL减小到0.1至0.5来开始计算。一旦启动的瞬时现象减弱,你就可以再开始增加Courant数了。

耦合隐式求解器的Courant数

线性稳定性理论表面,耦合隐式求解器中使用的点Gauss-Seidel格式是无条件稳定的。但是,和显式求解器一样,控制方程的非线性常常限制了稳定性条件。

耦合隐式求解器默认的CFL为5.0。根据你的问题的复杂性不同,你通常可以将CFL增加到10,20,100甚至更高。你会发现,在问题解算开始启动时需要较小的CFL(在启动时,解的变化是高度非线性的),但是在后面的计算中就可以逐渐增加CFL了。

耦合AMG求解器可以在给定的迭代中检测多重网格循环的收敛性。如果出现问题,它会自动减小CFL并重新迭代,同时向屏幕输出一个消息。五次尝试来成功完成迭代。成功完成当前迭代之后,CFL返回到初始值,迭代程序继续进行所需的计算。

用户输入

Courant数在解控制面板中设置(如下图),菜单:Solve/Controls/Solution...。

Figure 1: 耦合显式求解器的解控制面板

在解参数框中输入Courant数的值。需要注意的是,上面的面板是耦合显式求解器对应的面板。对于耦合隐式求解器,解参数框中只有Courant数一项。

当你在求解器面板中选择耦合显式求解器,FLUENT会自动设置Courant数为1;当你选择耦合隐式求解器时,Courant数会自动变成5。

打开FAS多重网格

如双重时间步进一节中所讨论的,FAS多重网格选项是耦合显式求解器的可选组件(默认情况下,AMG多重网格总是打开的)。因为在几乎所有的耦合显式计算中,如果使用FAS多重网格收敛加速器都会很有用的,因此在开始计算之前通常你都应该设定粗化网格层面是一个非零值。对于大多数问题,你只需要设定FAS多重网格参数。如果遇到收敛性困难,你可以考虑应用一下设定FAS多重网格参数一节所讨论的方法。

注意:对于显式时间步进,你不能使用FAS多重网格,这是因为粗糙网格校正会破坏精细网格解的时间精度。

设定粗糙网格层

如全近似存储(FAS)多重网格一节所述,FAS多重网格在较粗糙的网格层面较好的解决问题,然后将校正解传回到原始的精细网格,因此增加了解的传播速度,并加速收敛。控制多重网格求解器最为基本的方法就是指定所使用的粗糙网格层数。

如全近似存储多重网格一节中所解释的那样,粗糙网格是通过将一组相邻的精细单元聚束成一个粗糙单元形成的。最优的网格层数是和问题相关的。对于大多数问题,你可以以4或5层开始计算。对于大的三维问题,因为粗糙网格层需要附加的内存,所以虽然内存限制可能不让你使用更多的层面,你可能还是要加上更多的层面。如果你确信多重网格会导致收敛性困难,你可以减少层数。

如果FLUENT在达到你所要求的网格层面之前已经到了只有一个单元的粗糙网格,它就会在这里结束。也就是说,如果你设定了5个网格层面,但是第四层就只有一个单元了,那么FLUENT就只创建4层,因为第4层和第5层一样。

要指定你所要的网格层数,在解控制面板(用户输入的图1)的解参数下设定多重网格层数。菜单:Solve/Controls/Solution...。

你可以在多重网格控制面板的FAS多重网格控制中设定最大粗化层。菜单:Solve/Controls/Multigrid...。

在某一个面板中改变粗糙网格层数会自动更新其它面板中网格层数的显示。 当你第一次开始迭代时,粗糙网格层就被创建了。如果你想要检查每一层内有多少个单元,请求一个迭代,然后使用菜单Grid/Info/Size(在网格尺寸一节介绍)列出每一个网格层面的尺寸。如果你觉得满意,可以继续计算,如果不满意你可以改变粗糙网格层面的数量然后再检查。

对于大多数问题,一旦你设定了适当的粗糙网格层数,你不需要修改任何附加的多重网格参数。你可以简单的继续你的计算直至收敛。

设定解的限制

为了控制极端条件下解的稳定性,FLUENT提供了保持解在某一个可接受范围内的限制。你可以用解限制面板(下图)来控制这些限制。菜单:Solve/Controls/Limits...。

Figure 1:解限制面板

FLUENT对压力、温度和湍流量应用了限制值。这些限制的目的就是为了保证在计算中,绝对压力或者温度不是零、负值或者过大,并保证湍流量不会过大。FLUENT还对温度的减小速度作了限制,以避免温度变为零或者负值。

注意:一般说来你不需要改变默认的解的限制。如果压力,温度或者湍流量被重复地重置到限制值,控制台窗口就会出现适当的警告消息,此时你需要检查尺寸,边界条件和属性以确保问题的设定正确,并找出问题中变量为零或如此之大的原因。你可以用标记功能(用于适应中标记单元)来辨别哪个单元的值等于所设定的限制。(用等值适应面板,具体参阅等值适应一节。)在很稀少的情况下,你可能需要改变解的限制,但是如果要这样做的话,你必须清楚求解器会有这种非常情况的原因。比方说,你可能知道流域内温度超过5000K。如果你要将温度的极限设置超过5000K,要确定任何温度相关属性对于这么高的温度都被适当的定义。

限制解变量的值

绝对压力的最小最大值限制在最小最大绝对压力框中显示。如果FLUENT所预测的一个压力值小于最小绝对压力或者大于最大绝对压力,求解器就会用相应的极限值取代预测值。对于能量计算中的温度也做相似处理。

最大的湍流粘性比和最小湍动能用于限制湍流计算。如果计算预测的k值小于最小湍动能,FLUENT就会用相应的极限值取代预测值。对于粘性比限制,FLUENT使用与层流粘性有关的流场的最大湍流粘性(C_m k^2 / e)来作限制。如果FLUENT计算出的比率超出限制值,就会通过将e限制到必要值来将比率设定为极限值。

限制温度减小的速度

在FLUENT耦合求解器中,温度的减小速度由正向速度极限来控制。例如,默认值为0.2就意味着两次迭代之间的温度不可以减少超过20%。如果温度的改变超过这个极限,求解器就会将时间步减小从而将变化改回原来的范围,同时会输出时间步减小的警告。(这个

分离求解器残差的定义

离散之后,一般变量f在单元P中的守恒方程可以写成:

aP?P??anb?nb?b

nb其中a_P是中心系数,a_nb是邻近单元的影响系数,b是源项S= S_c + S_P f的常数部分S_c和边界条件的贡献。在方程1中,

aP??anb?Sp

nb由FLUENT分离求解器计算的残差R^f是在所有计算单元P中方程1总和的不平衡。这是指非标度的残差。可以写成:

R????anb?nb?b?aP?P

cellsnb一般说来,很难从方程5定义的残差来判断收敛性,因为它是未标度的。尤其是在封闭的流动中,如空间内部的自然对流问题,在这个空间中没有f的入口流动速度来和残差比较。FLUENT使用代表f通过区域的流动速度作为标度因子来标度残差。标度的残差定义为:

?p?a??b?aP?P R???paP?Pnbnbcellsnbcells对于动量方程,分母项a_P f_P由a_p v_p替换,其中v_p是单元P上的速度大小。

如收敛性判断一节所述,标度的残差对于大多数问题来说就比较适合判断收敛性了。这个残差是FLUENT默认的显示。需要注意的是,这个残差定义对于结构网格求解器FLUENT 4也是适用的。

对于连续性方程,分离求解器未标度的残差定义为:

Rc??prateofcellsmasscreationincellP

分离求解器连续性方程的标度残差定义为:

cRiterationcRiterationN5

分母是前五步迭代中连续性残差的最大值。

上面所介绍的标度残差很适合用于判断收敛性。关于它们使用的原则可以参阅收敛性判断一节。在计算中确定残差减少多少来作为收敛性的附加度量常常是很有用的。为了实现这一目的,FLUENT允许你对残差实行标准化,标准化的方法就是将残差除以M步迭代之后残差的最大值,其中的M你可以在残差监视面板迭代框中的标准化框中设定。

R??cRiterationNRciterationM

这样的标准化保证了所有方程的初始残差都是1的小量O(1)因此在判断所有的收敛性时有

时是很有用的。

在默认的情况下,M = 5。你也可以在残差监视设定面板中手动设定标准化因子(方程13种的分母)。

耦合求解器残差的定义

耦合求解器的残差就是守恒变量(W)随时间的变化速度。RMS残差是区域内每一个单元残差平方的均方根:

??W?R?W?????

?t??方程1是为FLUENT耦合求解器计算的耦合方程报告的非标度残差的总和。

耦合求解器在耦合方程组解完之后解附加标量方程时,对应的残差的定义是和分离求解器残差的定义一样的。如果你不记得了耦合求解器是如何解附加标量的请参阅耦合解方法一节。

一般说来,很难从方程1定义的残差来判断收敛性,因为它是未标度的。尤其是在封闭的流动中,如空间内部的自然对流问题,在这个空间中没有f的入口流动速度来和残差比较。FLUENT使用代表f通过区域的流动速度作为标度因子来标度残差。标度的残差定义为:

分母是前五步迭代中残差绝对值的最大值。

上面所述的残差是判断解的收敛性的有用的指标。关于它们使用的原则可以参阅收敛性判断一节。在计算中确定残差减少多少来作为收敛性的附加度量常常是很有用的。为了实现这一目的,FLUENT允许你对残差(标度的或者未标度的)实行标准化,标准化的方法就是将残差除以M步迭代之后残差的最大值,其中的M你可以在残差监视面板迭代框中的标准化框中设定。

2R?W??R?W?iterationR?W?iterationNM

这样的标准化保证了所有方程的初始残差都是1的小量O(1)因此在判断所有的收敛性时有时是很有用的。

在默认的情况下,M = 5,使得标准化残差等于标度残差。你也可以在残差监视设定面板中手动设定标准化因子(方程5中的分母)。

使用残差监视器面板概述

控制残差监视的所有输入都是在残差监视面板中完成的(下图)。菜单:Solve/Monitors/Residual...或者菜单:Plot/Residuals...。

Figure 1: 残差监视面板

一般说来,你需要使用这个面板来激活残差绘制和修改收敛性判据。对于禁止某个特定残差的监视和修改标准化和绘图参数我们可以得到附加的控制。

打印和绘制残差图

在默认的情况下,所有相关变量的残差值都会在每次迭代之后被打印到文本(控制台)窗口。如果你想禁止这项打印输出,请在选项中关闭打印项。要激活每次迭代之后残差绘制功能,请在选项中打开绘图选项。此时残差会在计算时被绘制在图形窗口中(在窗口框中的窗口ID)。

如果你想要显示当前残差历史记录的绘图,只需要点击绘图按钮。

修改收敛判据

除了在计算过程中绘制和打印残差值之外,FLUENT还会检查收敛性。如果收敛性被监视了,当每个变量的指定收敛判据满足计算器就会自动停止计算。只有对于被监视残差的变量才可以被检查收敛性(也就是监视器的设定为yes的变量)。

你可以选择是否监视每一个变量的收敛性,具体操作方法就是在残差监视面板的检查收敛性列表中点击yes或者no来选择。当你点击yes之后,相应的按钮就会变成no,反之亦然。

要对某一个特定的变量修改收敛性判据,请在收敛性判据列表中点击当前的变量。此时会打开残差监视设定面板(下图),这样你就可以在收敛判据框中设定新的数值。点击OK之后就将相应的修改之后的数值发送到残差监视面板。一定要记住在残差监视面板中点击OK,否则不会保存相应的改变。

Figure 1: 残差监视设定面板

绘图参数

如果你选择绘制残差图(或者在街的进程中交互修改或者在计算之后使用绘图按钮),你可以修改几个显示选项。

在绘图的窗口框中,你可以指定需要绘图的窗口的ID。在FLUENT迭代过程中,激活的绘图窗口临时设定为这个窗口来更新残差的绘图,然后返回到先前的数值。因此残差绘图可以保存在独立的窗口中而不会干涉其它的后处理图形。

通过改变绘图中的迭代输入,你可以改变绘图中显示的残差历史点的数目。如果你指定n个点,FLUENT会显示最后n个历史点。因为y轴是用绘图中所有点的最大值和最小值标度的,你可以通过将迭代设定小于已经执行的迭代数来放大残差历史的端点,例如,如果你打开湍流计算,在计算中残差在前期跳跃,顶点就会放大所有的残差值的范围,这样就使得以后较小的波动几乎不能辨别了。通过设定迭代值来保证绘图不包括前期的跳跃,y轴的范围更适合于观察你所感兴趣的数值。

你可以修改绘图轴和残差曲线的属性。点击Axes...或者Curves...按钮可以打开修改坐标轴属性或者修改属性的相关选项。具体可以参阅修改坐标轴属性和修改曲线属性两节。

取消监视

如果你的问题需要解很多方程(比如说:湍流量和多组分),包含所有残差的绘图可能会很难读入。在这种情况下,你可以选择只监视残差的子集,可能是那些影响收敛的主要因素。你可以在残差监视面板中的监视器列表中点击yes或者no来确定是否监视每一个残差。当你点击yes之后,相应的按钮就会变成no,反之亦然。

控制标准化

在默认的情况下残差的标度(见前面的介绍)是激活的,而且能量和P-1方程的默认收敛判据是10^-6,其它方程的收敛判据是10^-3。残差标准化(参阅前面的介绍)也可以使用,但是在默认的情况下是关闭的。

标准化可以用于标度和未标度的残差。后者的结合(未标度但是进行了标准化)会回复到FLUENT/UNS 3.2和RAMPANT 4类型的残差报告。注意,如果标准化功能被激活的话,可能需要适当的调节收敛性判据。对于基于不同类型的残差报告的收敛性判断的信息可以参阅收敛性判断一节。(未经处理的残差和标度因子都被保存在数据文件中,这样你就可以在

标度和未标度残差之间进行转化了。要报告未标度残差,可以在标准化中关闭标度选项。

注意:如果你是用标准化残差并在标度和未标度残差之间进行转换(反之亦然),你必须点击Renorm按钮来重新计算标准化因子。

如果你需要对残差进行标准化,请在标准化下面打开标准化选项。此时标准化因子会被加到面板中。FLUENT会对每一个变量对应的标准化因子打印或者绘制该变量的残差。默认的标准化因子是前五步迭代之后的最大残差值。要使用不同的步数之后的残差的最大值,你可以在标准化中修改迭代的输入。

在某些情况下,最大的残差值可能出现在残差框中指定的迭代之后。如果可能出现这种情况,你可以点击Renorm按钮将所有变量的标准化因子设定为残差历史记录中的最大值。相应的绘图和打印报告也会使用新的标准化因子。

你也可以明确地指定标准化因子。要对某一特定变量修改标准化因子,请在标准化因子列表中点击当前的值。此时就会打开残差监视设定面板,你可以在标准化因子框中设定新的数值。点击OK将改变的数值发送到残差监视面板中。一定要记住在残差监视面板中点击OK,否则不会保存相应的改变。

如果你希望报告非标准化,非标度的残差,请在残差监视面板中标准化下面关闭标准化和标度选项。需要注意的是,不管所报告的残差是未标准化或者未标度的,非标准化和非标度残差都会保存在数据文件中。

存储残差历史记录点

每一个变量的残差历史记录自动保存在数据文件中,而不用管它们是否被监视。你可以改变存储下面的迭代输入来控制需要存储的历史点的个数,最多可以保存1000个点。如果执行的迭代步数超过1000,那么求解器就会每个一个点丢弃一个——这样就只存储了500个历史点——接着存储下面的500点。如果有达到了1000个点,求解器会继续上面的操作。如果你执行的迭代数目极大,你需要关闭和开始计算有关的残差历史记录信息。在这种情况下,你需要将迭代增加到适当的值。当然,这个数越大,你所需要内存就更多,绘图的时间就越长,同时也就需要更多的磁盘存储空间来保存数据文件。

监视统计

如果解完全发展的周期性流动,你可能想要监视压力梯度或者体积温度比,具体可以参阅周期性流动和热传导一节。

当你解非定常流动,尤其是使用显式时间步进选项,你可能需要监视在计算中已经过去的时间。当你初始化流动时流场开始的物理时间是零(关于非定常流模拟的详细内容,请参阅时间相关模拟一节)。

你可以使用静态监视面板(下图)在计算中来打印或者绘制这些量。菜单:Solve/Monitors/Statistic...。

Figure 1: 统计监视面板

关于这个监视器的设定的程序如下:

1. 标明你所想要的报告的类型,具体方法是:对于打印输出打开打印选项,对于绘图打开

绘图选项。你可以同时激活这些选项。 2. 在统计列表中选择适当的量。

3. 如果你要绘制这些量,你可以参阅绘图参数所介绍的方法来设定任何绘图选项。

绘图参数

如果你选择绘制统计,你可以修改几种显示参数。

在第一个窗口框中,你可以指定图形窗口的ID,求解器会在这个窗口中绘图(如果你绘制不止一个量,求解器就会这个窗口中绘制第一个图)。在迭代过程中,激活的图形窗口会临时设定为这个窗口来更新绘图,然后返回到先前的值。因此统计绘图可以保持在独立的窗口中而不会干涉其它的后处理图形绘制。注意,你在统计列表中选择的附加量会绘制在ID增量的窗口中。

你可以修改绘图轴和残差曲线的属性。点击Axes...或者Curves...按钮可以打开修改坐标轴属性或者修改属性的相关选项。具体可以参阅修改坐标轴属性和修改曲线属性两节。

监视力和力矩

在每一步迭代之后,求解器可以计算并保存升力,阻力和/或力矩系数来创建收敛的历史记录。你可以打印和绘制这个收敛数据,也可以将它们保存到外部文件。FLUENT XY图所写入的外部文件的格式在XY图文件格式一节介绍。例如:在计算外部空气动力学时或者对力尤其感兴趣时,监视力会很有用。有时候在残差降到三阶量级之前力就已经收敛了,所以比起只监视残差来说你可以提前停止计算来节省时间。(你还要确保检查质量流速和热传导速度来保证质量和能量的守恒,具体可以使用通过边界的流量一节介绍的流量报告面板来完成这个操作。)

注意:力和力矩系数是用参考值一节所介绍的参考值。具体就是:力系数使用参考面积、密度和速度,力矩系数是用参考面积、密度、速度和长度。

注意:只有处理过的力系数数据被保存起来。如果你决定改变任何控制力监视的参数,比如说参考值、力矢量、力矩轴或者壁面区域,你可能会在数据中看到不连续性:以前的数据没有被更新。通常说来如果你做出改变,你可能想要在继续迭代之前删除先前的力系数数据。

非定常流动计算中力的监视

如果你计算的是非定常流动,指定的力的报告是在每一个时间步之后更新而不是每一个迭代之后更新。所有力监视和相关设定的步骤的其它功能都不改变。

使用力监视面板概述

你可以是用力监视面板(下图)来打印、绘制和保存在指定壁面处升力、阻力和力矩系数的收敛性历史记录。菜单:Solve/Monitors/Force...。

Figure 1: 力监视面板

在这个面板中,你需要标明你所要的报告的类型(打印输出、绘图或者文件),并指定哪个系数和壁面是你所感兴趣的。对于每一个被监视的系数会输入附加的信息。你也可以修改绘图参数。注意:在对于每一个系数报告作出所需要的修改之后一定要点击应用按钮。

指定力系数的报告

对于每一个你选择监视的系数,你需要在理监视面板中设定所有适当的参数并点击应用按钮。在迭代中你可以监视一个、两个或所有的(三个)系数(阻力、升力和力矩矢量分量)。当你选择所需的系数时,求解器会显示该系数当前的或者默认的面板设定。点击应用按钮就会将当前面板对所选系数的设定保存起来。

指定力系数报告的程序如下:

1. 在系数下拉列表中选择感兴趣的阻力、升力或者动量系数。

2. 在壁面区域列表中,选择需要计算系数的壁面区域。如果你所监视的是不止一个系数,

每一个系数对应的所选择的壁面区域可能是相同的。然而,如果你需要,你可以在不同的区域中计算不同的系数。

3. 根据所选的系数不同,进行下面的步骤:

? 如果是监视阻力或者升力,在力矢量标题中输入力矢量X、Y和Z分量,沿着这些分

量就会计算出力。只有在系数下拉列表中选择了阻力或者升力,才会出现力矢量标题,

在默认的情况下,阻力是在x方向上计算的,升力是在y方向上计算的。 ? 如果你监视的是力矩系数,输入力矩中心的笛卡尔坐标,力矩就是参照这个中心计算出

来的。只有在系数下拉列表中选择了力矩才会出现力矩中心标题。默认的力矩中心是(0,0,0)。你还需要指定你需要监视的力矩矢量分量。目前你一次只能监视一个力矩矢量分量。在About下拉列表中选择X、Y或者Z轴。(只有在系数下拉列表中选择了力矩这一列表才会被激活)对于二维问题只有关于z轴的力矩矢量存在。 4. 标明你所要报告的类型(打印输出、绘图或者文件),具体可以参阅下一节:打印、绘

制和保存力系数的历史

5. 点击应用按钮,如果需要的话,对附加系数重复上述步骤。

打印、绘制和保存力系数的历史

有三种报告所选的力系数的方法。在力监视面板中的选项框中打开打印选项就可以在文本窗口(控制台)中打印系数值。要在绘图窗口中标明的图形窗口中绘制系数,打开绘图选项。要保存到文件,打开写入选项并指定文件名。你可以同时激活这三个选项中的任何几个选项的组合。

注意:如果你选择不讲力系数保存到文件,当你退出当前FLUENT进程时这些信息就会丢失。

如果你希望显示当前力系数历史的绘图,只需要点击绘图按钮。

如果你选择绘制力系数(或者在解过程中交互进行或者在计算完毕后使用绘图按钮),由几个显示参数是你可以修改的。

在绘图窗口框中,你可以指定图形窗口的ID,求解器会在这个窗口中绘制每一个力系数的图(如果你绘制不止一个量,求解器就会这个窗口中绘制第一个图)。在迭代过程中,激活的图形窗口会临时设定为这个窗口来更新绘图,然后返回到先前的值。因此力系数绘图可以保持在独立的窗口中而不会干涉其它的后处理图形绘制。

你可以修改绘图轴和曲线的属性。相同的属性应用到所有力监视图中。点击Axes...或者Curves...按钮可以打开修改坐标轴属性或者修改属性的相关选项。具体可以参阅修改坐标轴属性和修改曲线属性两节。

丢弃力监视数据

如果你确定由力监视器所收集的数据没用(比如说,你重新开始计算或者改变某一参考值),你可以点击清除按钮来丢弃积累的数据。清除按钮会清除系数下拉列表中所选的系数的所有监视数据,包括相关的历史文件(文件名框中的名字也会被清除)。当你使用清除按钮,你需要在问题对话框中确认数据清除。这个操作只移除力监视数据,对于解数据没有影响。

监视曲面积分

在每一个求解器迭代或者时间步之后,去面上流场变量或函数的平均、质量平均、积分或者流速可以被监视。你可以打印或者绘制这些收敛数据,也将它们保存为外部文件。外部文件的格式和XY绘图文件格式一节所介绍的FLUENT XY绘图文件格式一样。

监视曲面积分可用于检查迭代收敛性和网格独立性。例如,你可以监视某一变量在曲面上的平均值。当这些值不再改变时,你可以停止迭代。然后你可以进行适应网格重新计算收

敛阶。如果在两次适应之间曲面上的平均值不再变化,就可以认为这些解是与网格无关的。

定义曲面监视器概述

你可以使用曲面监视面板(定义曲面监视器中的图1)来创建曲面监视器并标明每一个历史是否即以什么时候被打印、绘制或者保存。定义曲面监视面板(定义曲面监视器中的图2)是从曲面监视器面板中打开的,它允许你定义每一个监视器跟踪什么内容(即流场变量在一个或多个曲面上的平均、积分、流速或者质量平均)。

定义曲面监视器

你需要在曲面监视面板中开始曲面监视的定义程序(图1)菜单:Solve/Monitors/Surface...。

Figure 1: 曲面监视器面板

程序如下:

1. 增加曲面监视器值到你希望的曲面监视数量。当这个值被增加时,面板中的附加监视器

输入就变成可编辑的了。对于每个监视器你需要执行下面的步骤。 2. 在名字标题中输入监视器的名字,并使用绘图、打印和写按钮来标明你所需要的报告(绘

图、打印或者文件),具体可以参阅答应、绘制和保存区面积分历史一节。

3. 在Every下面的下拉列表中选择每一个迭代或者每一个时间步来标明你要在每一次迭

代还是每一个时间步之后更新监视器。如果是非定常计算,时间步是唯一有效的选择。如果你指定为每一个迭代步,而且迭代面板中报告的间隔大于1,监视器就会在每一个报告间隔中更新而不是每一步迭代中更新(例如,报告间隔是2,监视器就会每隔一步迭代更新一次)。如果你指定每一个时间步,报告的间隔就不会有影响,监视器会在每一个时间步之后被更新。

4. 点击定义按钮打开定义曲面监视器面板(图2)。因为这是模式面板,所以只有你执行

了5-10步之后求解器才允许你进行操作。

5. 6. 7.

Figure 2: 定义曲面监视器面板

在定义曲面监视器面板中选择曲面监视器的积分方法,你可以在报告类型下拉菜单中选择积分、平均、流速或者质量平均来实现方法的选择。这些方法在曲面积分一节介绍。 在曲面列表中选择一个或多个你想要积分的曲面。

在Repor Of下拉列表中指定需要积分的变量或者函数。首先在上面的下拉列表中选择所需要的类别,然后你可以在下面的列表中选择某一相关量(对于列表中变量的说明请参阅流场函数定义一节)。

如果你对数据绘图或者将它们写入文件,请指定作为x轴或者数值使用的参数(y轴/值对应监视数据)。在X轴下拉列表中选择迭代、时间步或者流动时间作为x轴函数,监视数据会依照它来打印或者绘制。如果是计算非定常流动,时间步和流动时间是唯一有效的选择。如果你选择时间步,绘图的x轴对应的是时间步,如果你选择流动时间,x轴对应的是过去的时间。

如果你在绘制被监视的数据,你可以指定图形窗口的ID,求解器会在这个窗口中绘图。在迭代过程中,激活的图形窗口会临时设定为这个窗口来更新绘图,然后返回到先前的值。因此每一个曲面监视绘图都可以保持在独立的窗口中而不会干涉其它的后处理图形绘制。

如果你在将监视数据写入文件,指定文件名。

记住在曲面监视器面板中定义了所有曲面监视器之后点击OK按钮。

8.

9.

10. 11.

打印、绘制和保存曲面积分历史纪录

有三种报告曲面积分的方法。在曲面监视面板中的选项框中打开打印选项就可以在文本窗口(控制台)中打印曲面积分值。要在绘图窗口中标明的图形窗口中绘制积分值,打开绘图选项。要保存到文件,打开写入选项并指定文件名。你可以同时激活这三个选项中的任何几个选项的组合。

注意:如果你选择不将曲面积分保存到文件,当你退出当前FLUENT进程时这些信息就会丢失。

你可以为每一个曲面监视器绘图修改绘图轴和曲线的属性。对于适当的监视器,在定义曲面监视器面板中点击Axes...或者Curves...按钮可以打开曲面监视器的修改坐标轴属性或者修改属性的相关选项。具体可以参阅修改坐标轴属性和修改曲线属性两节。

22.17 解的动画显示

在计算过程中,你可以用FLUENT做等值线、矢量、XY图、监视图(残差、统计、力、曲面或者体积)或者网格(主要对于动网格模拟有用)的动画。在开始计算之前,你需要指定要做动画的显示变量和绘图类型,并指定绘图保存的频率。在指定的间隔中,FLUENT会显示被请求的绘图并存储每一个。完成计算之后,你可以回放动画序列,修改视角(对于网格、等值线和矢量的图),需要的话,可以可以将动画保存为一序列的硬拷贝文件或者MPEG文件。

下面几节将会介绍解动画序列的定义、回放和保存动画序列,读入先前保存的动画序列等内容。

22.17.1 定义动画序列

你可以使用解动画面板来创建动画序列并标明序列帧创建的频率。动画序列面板(下图)是从解动画面板打开的,它允许你定义每一个序列显示什么,在哪里显示以及每个帧如何存储。

你需要在解动画面板中开始动画序列的定义。菜单:Solve/Animate/Define...。

Figure 1解动画面板

程序如下:

1. 增加动画序列值为你希望指定的动画序列数目。当增加这个值时,面板中附加的动画序

列输入变成可编辑的。对于每一个序列,你需要执行下面的步骤。 2. 在名字标题中输入序列的名字。这个名字在回放面板中会作为辨别序列的依据。如果你

将序列帧保存到磁盘,这个名字也用作文件名的前缀。

3. 你可以在Every下面设定迭代并在When下面的下拉列表中选择迭代或者时间步来标明

在序列中所要创建新的帧的频率。其中时间步只是对非定常流才是有效的选择。例如,要创建每10个时间步的帧,你需要在Every下面输入10并在When下面选择时间步。 4. 点击Define...按钮打开动画序列面板(下图)

Figure1:动画序列面板

5. 在动画面板中定义序列参数

(a) 在存储类型下面选择内存或者磁盘来指定动画序列帧保存的类型。

!!注意:在动画序列中FLUENT的图元文件是为每一个帧创建的。这些文件包含了所有场景的信息而不只是在图形中显示的视角。因此这些文件会非常大。在默认的情况下,这些文件会保存在磁盘中。如果你不想占用磁盘空间来保存这些文件,你可以选择将它们保存在内存中。然而,将它们保存在内存中会减少求解器可以使用内存的数量。不过,将序列保存在内存中回放速度会比磁盘快

(b) 如果选择保存类型是磁盘,请在存储目录框中指定要保存的目录(这可以是相对路径也可以是绝对路径)。

(c) 在窗口框中指定你需要绘图的窗口的ID,然后点击设定按钮(指定的窗口如果没有打开的话,现在就会打开)。

在迭代中,活动的图形窗口被设定为这个窗口来更新绘图。如果你希望每一个动画序列在不同的窗口中,你可以指定不同的窗口ID。

6. 为序列定义显示属性。

(a) 在动画序列面板的显示类型下选择网格、等值线、矢量、XY图或者监视器来确定动画显示的类型。如果你选择的是监视器你可以在监视类型下拉列表:残差、力、统计、曲面或者体积中选择任何可用的监视类型。

当你第一次选择等值线、矢量或者XY图时,或者在第一次选择监视器时你选择了某一监视器类型,FLUENT会打开相应的面板(比如说:等值线面板或者矢量面板),这样你就可以修改设定并产生相应的显示。。要对任何显示类型的显示设定再做出修改,请点击属性按钮来打开选定的显示类型面板。

(b) 对于选定的显示类型(如:等值线或者解XY图)在面板中定义显示,然后点击显示或者绘图按钮。

注意:你必须点击显示或者绘图来初始化计算中被重复的场景。 关于网格、等值线和矢量的显示的定义,请参阅下面的指导原则。

7. 在你完成所有动画序列的定义之后别忘了在解动画面板中点击OK按钮。

注意,当你在动画序列面板中点击OK按钮确定某一序列时,该序列对应Active按钮会自动打开。你可以对当前不使用的序列关闭Active按钮,来选择使用所定义的动画序列的子集。

定义动画序列的方针

如果你定义的动画序列包含网格、等值线或者矢量显示,那么在定义显示时要注意下面几点:

? ? ?

如果要在动画帧中包含光照影响,请确保在开始计算之前定义光照。关于讲光照加

入到显示中请参阅25.2.6节。

如果你想要在等值线或者矢量显示中保持颜色的常数范围,你可以在等值线或者矢量面板中关闭自动范围选项来明确指定范围。具体请参阅25.1.2或者25.1.3。

在动画序列帧中不会包含场景操作,场景操作是在场景描述面板中指定的。诸如通过对称平面的景象等视角的修改会被包括进来。

22.17.2 播放一个动画序列

一旦你定义了一个动画序列并执行了计算,或者读入了先前的动画序列,你可以使用回放面板(下图)来回放动画。菜单:Solve/Animate/Playback... 。

Figure 22.17.3:回放面板

在回放面板的动画序列下面的序列列表中选择你想要播放的序列。要播放一次从开始到结束的动画,请点击回放标题下面的播放按钮。(这种方式的按钮的功能和标准视频播放器的相似。右边数第二个三角形按钮是播放按钮)。要反向播放动画一次,请点击倒放按钮(左边数第二个三角形按钮)。当播放动画时,帧的标尺显示相对于整个动画的播放位置。如果你想跳到指定的帧处你可以直接移动帧滑标到所需要的帧处,这样相应的帧就会显示在图形窗口中。

对于光滑动画,请在显示选项面板中打开双缓冲。这将会减少播放时的闪烁。 下面将会介绍回放动画的附加选项。 修改视角

如果想在场景的不同视角播放动画,你可以在动画播放的窗口中使用鼠标来修改视角(如:平移、旋转、缩放)。需要注意的是,当你在序列列表中选择新的序列时(或者重新选择当前序列时),你对序列视角做的任何改变都会丢失。 修改回放速度

不同的计算机播放动画的速度都是不一样的,这主要取决于场景的复杂性以及图形相关硬件的类型。你可能想要放慢回放的速度来获得最优视角。你可以用回放速度滑标来调节播放速度。 摘选回放

有时候你可能只要播放很长动画序列的一部分。要实现这一功能你可以修改回放标题下面的起始帧和终点帧。例如,如果你的动画包括50个帧,但是你只想播放20到35之间的帧,你就可以设定起始帧为20,终点帧为35。这样,当你播放动画时,就会从20帧开始到35帧结束。 快进动画

你可以在回放中略过一些帧来快进或者快退动画。要快进动画,你可以设定增量然后点击快进按钮。例如,如果你有15个帧,起点是1帧,终点是15帧,增量是2,那么动画就会只播放1,3,5,7,9,11,13和15帧。点击快退按钮就会播放相应的15,13,11,9,7,5,3,1。 连续的动画

如果你想要重复连续的回放动画,有两个选项可供选择。要从起点到终点(或者从终点到起点)连续回放动画,请在回放模式下拉菜单中选择自动重复选项。要在播放中前后连续播放动画,每次调转播放方向,请在回放模式下拉列表中选择自动反向。 要关掉连续性回放,请在回放模式中选择播放一次。这是默认的设定。 停止动画

要在回放中停止动画,请点击停止按钮(回放控制按钮中间的方块)。如果你的动画中包含非常复杂的场景,那么在动画停止之前可能会有轻微的滞后。 一个帧一个帧的播放动画

要手动一个帧一个帧的播放动画,请使用右边数第三个按钮(一竖线加一个三角形)。每点击一次这个按钮就会在图形窗口中显示下一个帧。反向的按帧播放方法同上,只不过要使用左起的第三个按钮。这一功能可以是你看清楚每一个感兴趣的帧。 删除动画序列

如果想要移除应经读入或者创建的序列,请在序列列表中选择然后点击删除按钮。要全部删除电机全部删除按钮即可。

注意:如果你删除了未保存到磁盘的动画(即存储类型是内存的动画)这些动画就被永久的移除了。如果你要保存只存储在内存中的动画,你应该在删除或者退出FLUENT之前确信已经保存到磁盘了。 22.17.3 保存动画序列

创建了动画序列之后,你可以保存成下面任何一种格式:

? ?

包含在FLUENT图元文件中的解动画文件。 硬拷贝文件,每个文件都包含了动画序列的帧。

本文来源:https://www.bwwdw.com/article/41tw.html

Top