2.3 CFD工作原理
为了进行CFD计算,用户可借助商用软件来完成所需要的任务,也可自己直接编写计算程序。两种方法的基本工作过程是相同的。本节给出基本计算思路,至于每一步的详细过程将在本书的后续章节逐一进行介绍。
2.3.1 计算流程
无论是流动问题、传热问题,还是污染物的运移问题,无论是稳态问题,还是瞬态问题,其求解过程如图2.1所示。
图2-1 CFD工作流程
如果所求解的问题是瞬态问题,则可将图2.1的过程理解为一个时间步的计算过程,循环这一过程求解下个时间步的解。下面对各求解步骤做简单介绍。
2.3.2 建立控制方程
建立控制方程是求解任何问题前都必须进行的。一般来讲,这一步是比较简单的。因为对于一般的流体流动而言,可根据2.2部分的分析直接写出其控制方程。例如,对于水流在水轮机内的流动分析问题,若假设没有热交换发生,则可直接将连续方程与动量方程作为控制方程使用。当然,由于水轮机内的流动大多是处于湍流范围,因此一般情况下需要增加湍流方程。
2.3.3 确定边界条件与初始条件
初始条件与边界条件是控制方程有确定解的前提,控制方程与相应的初始条件、边界条件的组合构成对一个物理过程完整的数学描述。
初始条件是所研究对象在过程开始时刻各个求解变量的空间分布情况。对于瞬态问题,必须给定初始条件;对于稳态问题,则不需要初始条件。
边界条件是在求解区域的边界上所求解的变量或其导数随地点和时间的变化规律。对于任何问题,都需要给定边界条件。例如,在锥管内的流动,在锥管进口断面上,可给定速度、压力沿半径方向的分布;而在管壁上,对速度取无滑移边界条件。
对初始条件和边界条件的处理会直接影响计算结果的精度,本书将在后续章节中对此进行详细讨论。
2.3.4 划分计算网格
采用数值方法求解控制方程时,都是将控制方程在空间域上进行离散,然后求解得到离散方程组。要想在空间域上离散控制方程,必须使用网格。现已发展出多种对各种区域进行离散以生成网格的方法,统称为网格生成技术。
不同的问题采用不同数值解法时,所需要的网格形式是有一定区别的,但生成网格的方法基本是一致的。目前,网格分结构网格和非结构网格两大类。结构网格在空间上比较规范,如对一个四边形区域,网格往往是成行成列分布的,行线和列线比较明显。而对非结构网格在空间分布上没有明显的行线和列线。
对于二维(2D)问题,常用的网格单元有三角形和四边形等形式;对于三维(3D)问题,常用的网格单元有四面体、六面体、三棱体等形式。在整个计算域上,网格通过节点联系在一起。
目前,各种CFD软件都配有专用的网格生成工具,如FLUENT使用GAMBIT作为前处理软件。多数CFD软件可接收采用其他CAD或CFD/FEM软件产生的网格模型。如FLUENT可以接收ANSYS所生成的网格。
当然,若问题不是特别复杂,用户也可自行编程生成网格。
2.3.5 建立离散方程
对于在求解域内所建立的偏微分方程,理论上是有真解(或称精确解或解析解)的。但由于所处理的问题自身的复杂性,一般很难获得方程的真解。因此,就需要通过数值方法把计算域内有限数量位置(网格节点或网格中心点)上的因变量值当作基本未知量来处理,从而建立一组关于这些未知量的代数方程组,然后通过求解代数方程组来得到这些节点上未知量的值,而计算域内其他位置上的值则根据节点位置上的值来确定。
根据所引入的应变量在节点之间的分布假设及推导离散化方程的方法不同,就形成了有限差分法、有限元法、有限元体积法等不同类型的离散化方法。
在同一种离散化方法中,如在有限体积法中,对式(2.21)中的对流项所采用的离散格式不同,也将导致最终有不同形式的离散方程。
对于瞬态问题,除了在空间域上的离散外,还涉及在时间域上的离散;离散后,将要涉及使用何种时间积分方案的问题。
2.3.6 离散初始条件和边界条件
前面所给定的初始条件和边界条件是连续性的,如在静止壁面上速度为0,现在需要针对所生成的网格,将连续型的初始条件和边界条件转化为特定节点上的值,如静止壁面上共有90个节点,则这些节点上的速度值应均设为0。这样,连同在各节点处所建立的离散的控制方程,才能对方程组进行求解。
在商用CFD软件中,往往在前处理阶段完成了网格划分后,直接在边界上指定初始条件和边界条件,然后由前处理软件自动将这些初始条件和边界条件按离散的方式分配到相应的节点上去。
2.3.7 给定求解控制参数
在离散空间上建立了离散化的代数方程组,并施加离散化的初始条件和边界条件后,还需要给定流体的物理参数和湍流模型的经验系数等。此外,还要给定迭代计算的控制精度、瞬态问题的时间步长和输出频率等。
在CFD的理论中,这些参数并不值得去探讨和研究,但在实际计算时它们对计算的精度和效率有着重要的影响。
2.3.8 求解离散方程
在进行了上述设置后生成了具有定解条件的代数方程组。对于这些方程组,数学上已有相应的解法,如线性方程组可采用高斯消去法(Gauss)或Gauss-Seidel迭代法求解,而对非线性方程组可采用Newton-Raphson方法。
在商用CFD软件中,往往提供多种不同的解法以适应不同类型的问题。
2.3.9 判断解的收敛性
对于稳态问题的解,或是瞬态问题在某个特定时间步上的解,往往要通过多次迭代才能得到。有时,因网格形式或网格大小、对流项的离散插值格式等原因,可能导致解的发散。对于瞬态问题,若采用显式格式进行时间域上的积分,当时间步长过大时也可能造成解的振荡或发散。因此,在迭代过程中,要对解的收敛性随时进行监视,并在系统达到指定精度后结束迭代过程。
2.3.10 显示和输出计算结果
通过上述求解过程得出了各计算节点上的解后,需要通过适当的方式将整个计算域上的结果表示出来。简单来说,可采用线值图、矢量图、等值线图、流线图、云图等方式对计算结果进行表示。
所谓线值图,是指在二维或三维空间上,将横坐标取为空间长度或时间历程,将纵坐标取为某一物理量,然后用光滑曲线或曲面在坐标系内绘制出某一物理量沿空间或时间的变化情况。矢量图是直接给出二维或三维空间里矢量(如速度)的方向及大小,一般用不同颜色和长度的箭头表示速度矢量。矢量图可以比较容易地让用户发现其中存在的旋涡区。等值线图是用不同颜色的线条表示相等物理量(如温度)的一条线。流线图是用不同颜色线条表示质点运动轨迹。云图是使用渲染的方式,将流场某个截面上的物理量(如压力或温度)用连续变化的颜色块表示其分布。
商用CFD软件均提供了上述各表示方式。用户也可以自己编写后处理程序进行结果显示。