← 回到首页 Skip to main content

1 绪论

第 1 章 绪论

计算流体力学(computational fluid dynamics,CFD)的历史始于 20 世纪 70 年代初。大约在那个时期,CFD 开始被用作一个缩写,指将物理学、数值数学,以及在一定程度上的计算机科学结合起来,用于模拟流体流动。功能日益强大的大型计算机的出现促成了 CFD 的起步;直到今天,CFD 的进步仍与计算机技术的发展紧密相连。CFD 方法最早的应用之一,是通过求解非线性势流方程模拟跨声速流动。进入 20 世纪 80 年代,首先是二维(2-D)Euler 方程,随后是三维(3-D)Euler 方程的求解成为可能。随着超级计算机运算速度迅速提高,以及多重网格等各类数值加速技术的发展,人们能够计算完整飞机外形周围或透平机械内部的无黏流动。到 20 世纪 80 年代中期,研究重点开始转向计算要求显著更高的黏性流动模拟,这类流动由 Navier–Stokes 方程描述。与此同时,多种湍流模型得到发展,其数值复杂程度和精度各不相同。直接数值模拟和大涡模拟(large eddy simulation,LES)代表了湍流建模的前沿。

随着数值方法,尤其是隐式格式的进步,到 20 世纪 80 年代末,需要采用真实气体模型的流动问题也能够求解。最早的大规模应用之一,是采用平衡化学模型,随后采用非平衡化学模型,计算欧洲 HERMES 航天飞机等再入飞行器周围的三维高超声速流动。过去和现在,许多研究都致力于燃烧的数值模拟,尤其是火焰建模。这些工作对于开发低排放燃气轮机和发动机十分重要。此外,蒸汽建模,特别是蒸汽凝结的建模,也成为设计高效汽轮机的关键因素。

随着人们对流动模拟复杂程度和保真度的要求不断提高,网格生成方法变得越来越复杂。最初使用的是较为简单的结构网格,可通过代数方法或偏微分方程构造。但随着所研究外形的几何复杂程度增加,网格必须划分为若干拓扑结构较简单的块,即采用多块方法。接下来的合理发展,是允许网格块之间使用非匹配界面,以减轻单个网格块生成过程中受到的约束。最终,人们引入了能够处理相互重叠网格的求解方法,即 Chimera 技术。例如,这使得模拟带有外部燃料箱和助推器的完整航天飞机周围的流动成为可能。

然而,为复杂几何形状生成结构多块网格,仍可能需要数周时间。因此,研究也转向非结构网格生成器和流动求解器的开发。这些方法有望在只需少量用户干预的情况下,显著缩短前处理时间。非结构网格方法的另一个十分重要的特点,是能够根据流动解进行网格自适应。最早的非结构网格完全由各向同性四面体组成,对于 Euler 方程描述的无黏流动,这已经足够。然而,在较高 Reynolds 数下求解 Navier–Stokes 方程,需要在剪切层内使用高度拉伸的网格。虽然也可以用四面体单元构造这种网格,但更合适的做法是在黏性流动区域使用棱柱或六面体,在区域外使用四面体。这样不仅能提高解的精度,还能减少单元、面和边的数量,从而显著降低模拟所需的内存和运行时间。

如今,CFD 方法已常规应用于飞机、透平机械、汽车和船舶设计。此外,CFD 还用于气象学、海洋学、天体物理学、生物学、石油开采和建筑学。许多为 CFD 开发的数值技术,也被用于求解 Maxwell 方程或气动声学问题。因此,CFD 已成为工程领域的重要设计工具,也是多种科学研究中不可或缺的工具。随着数值求解方法和计算机技术的进步,即使在个人计算机或个人计算机集群上,也能够计算几何和物理过程复杂的算例。在当今的超级计算机上,使用包含数千万个单元的网格进行大规模黏性流动模拟,只需数小时即可完成。

然而,若认为 CFD 如今已像固体力学中的有限元方法那样成为成熟技术,那就完全错了。湍流与燃烧建模、传热、黏性流动的高效求解技术、兼顾稳健性与精度的离散方法、自动网格生成器等,仍有许多未解决的问题。CFD 与其他学科,例如固体力学的耦合,也需要进一步研究。利用 CFD 进行设计优化,还带来了相当新的机遇。

本书旨在为大学生奠定坚实基础,使其能够理解当今 CFD 所采用的数值方法,并通过实际操作熟悉现代 CFD 程序。本书也面向刚开始从事 CFD 工作,或正在应用 CFD 程序的工程师和科学家。书中使用的数学始终与其背后的物理过程相联系,以便理解有关内容。本书也可以作为参考手册。每一章都提供了丰富的参考文献,可作为进一步学习的基础。

CFD 方法关注流体运动方程的求解,以及流体与固体之间的相互作用。第 2 章推导了描述无黏流体运动的 Euler 方程,以及描述黏性流体运动的 Navier–Stokes 方程,还讨论了完全气体和真实气体的补充热力学关系。第 3 章介绍控制方程的求解原理,简要说明最重要的方法,并提供相应参考文献。第 3 章可与第 2 章结合阅读,以了解 CFD 的基本原理。

过去,人们已为 Euler 方程和 Navier–Stokes 方程的空间离散开发了众多格式。本书的一个独特之处,是同时介绍结构有限体积格式(第 4 章)和非结构有限体积格式(第 5 章)。这两类方法具有广泛的应用潜力,尤其适合处理工业环境中经常遇到的复杂流动问题。本书特别关注各种控制体的定义,以及对流通量和黏性通量的空间离散方法,并详细介绍最常用的中心格式和迎风格式的三维有限体积表述。

控制方程的时间离散方法可分为两大类:一类是显式时间推进格式(第 6 章第 6.1 节),另一类是隐式格式(第 6.2 节)。为提供更全面的概述,本书既讨论新近发展的基于 Newton 迭代的求解方法,也介绍显式 Runge–Kutta 格式等标准技术。

一般而言,黏性流体流动分为性质不同的两类:层流和湍流。对于层流,求解 Navier–Stokes 方程不会带来根本性困难。然而,湍流模拟仍然是一项重大挑战。所谓 Reynolds 平均 Navier–Stokes 方程,提供了一种较为简单的湍流建模方法。另一方面,Reynolds 应力模型或 LES 能够显著提高湍流预测精度。第 7 章详细介绍多种经过充分验证、应用广泛且复杂程度不同的湍流模型。

为体现具体问题的特点,并获得控制方程的唯一解,必须指定适当的边界条件。边界条件基本上可分为物理边界条件和数值边界条件两类。第 8 章讨论这两类边界条件在固壁、入口、出口、注入和远场等不同情形下的处理,也介绍对称面、周期边界和网格块边界的处理。

为减少求解复杂流动问题的控制方程所需的计算时间,采用数值加速技术十分必要。第 9 章广泛讨论了隐式残差光顺、多重网格等方法。该章还介绍另一种重要方法,即控制方程的预处理。预处理使同一种数值格式能够适用于 Mach 数从接近零到跨声速甚至更高数值的流动。最后,第 9 章还设有一节,讨论使用不同方法实现数值计算程序的并行化。

对控制方程进行任何离散,都会引入一定误差,即离散误差。为了保证离散方程的解能充分逼近原方程的解,离散格式必须满足若干相容性要求。第 10 章的前两部分讨论这一问题。在实现某种数值求解方法之前,至少应大致了解该方法将如何影响 CFD 程序的稳定性和收敛行为。实践已多次证实,von Neumann 稳定性分析能够较好地评估数值格式的性质。因此,第 10 章的第三部分针对不同模型方程讨论稳定性分析。

CFD 中一项具有挑战性的任务,是围绕复杂几何形状生成贴体结构网格或非结构网格。网格用于在空间上离散控制方程,因此,流动解的精度与网格质量密切相关。第 11 章深入讨论结构网格和非结构网格生成中最重要的方法。

为展示不同数值求解方法的实际应用,书中提供了可供下载的多种源代码,包括准一维 Euler 流动求解器,以及二维 Euler 和 Navier–Stokes 结构与非结构流动求解器。此外,还包括二维结构代数网格生成器和椭圆型网格生成器的源代码,以及将结构网格转换为非结构网格的程序。书中还提供两个程序,用于对显式和隐式时间推进格式进行线性稳定性分析。源代码配有一组完整算例,包含网格、输入文件和计算结果。代码包还包括若干演示并行化技术的程序。第 12 章介绍各目录的内容、各程序的功能,并提供使用示例。

本书最后包括附录和索引。附录给出微分形式的控制方程及其特征性质,讨论旋转参考系和移动网格下控制方程的表述,以及若干简化形式。附录还给出二维和三维情形下的 Jacobian 矩阵,以及从守恒变量到特征变量的变换矩阵。随后介绍用于求解线性方程组的 GMRES 共轭梯度方法,最后简要说明张量记号。