计算流体力学(Computational Fluid Dynamics,简称 CFD)是利用数值方法和计算机求解流体流动、传热及相关物理问题的学科1)。 CFD 以 Navier-Stokes 方程组为数学基础,通过将偏微分方程离散化为代数方程组,利用计算机迭代求解获得流场的数值近似解。经过近百年的发展,CFD 已从纯粹的学术研究工具全面进化为航空航天、汽车制造、能源动力、化工过程、环境工程、生物医学等众多工程领域不可或缺的核心设计和分析手段2)。
本文将从 CFD 的历史发展、数学基础、数值方法、湍流模型、网格技术、应用领域、软件工具、学习路径、就业前景和前沿趋势等维度,为读者呈现一个全景式且深度的技术概述。
CFD 的思想萌芽可以追溯到 1922 年,英国数学家和气象学家 Lewis Fry Richardson 在他的开创性著作《Weather Prediction by Numerical Process》中提出了一种革命性的设想:将大气划分为网格,利用流体力学方程逐网格进行数值计算来预报天气3)。 他提出的有限差分方法和网格划分概念,虽然在当时的计算条件下无法实现(罗列了六万四千个「计算员」才能赶上天象的变化速度),但为整个学科的建立奠定了方法论基础。Richardson 的贡献还包括 Richardson 外推法,如今仍然是 CFD 验证中重要的网格收敛性评估工具。
真正意义上的 CFD 计算始于 1940 年代。随着第一台通用电子计算机 ENIAC 的建成,流体力学问题的数值求解首次具备了硬件基础4)。 1950 年代,Los Alamos 国家实验室成为 CFD 研究的发源地之一,John von Neumann、Stanisław Ulam 等数学家和物理学家在原子弹研制过程中发展了蒙特卡洛方法,推动了计算流体动力学的早期进步。
1957 年,Los Alamos 国家实验室的 Francis H. Harlow 组建了 T3 研究小组,这个小组在接下来的十余年间发展了一系列开创性的数值方法,深刻塑造了现代 CFD 的面貌5)6)。
Harlow 团队开发的方法包括:
Harlow 被公认为 CFD 之父之一,其团队的贡献不仅在于具体算法,还在于证明了数值方法可以有效地求解真实的流体力学问题。
1960 年代,航空工业对更精确的气动工具的需求催生了面板法(Panel Methods)的快速发展8)。
1967 年,Douglas Aircraft 公司的 John Hess 和 A.M.O. Smith 发表了具有里程碑意义的三维面板法论文。他们将物体表面离散为四边形或三角形面板,在每个面板上布置源汇和偶极子分布,求解无粘、不可压缩势流。Hess-Smith 方法奠定了面板法的理论框架,其程序代码成为后来许多商业面板法软件的基础。
1968 年,Boeing 的 Paul Rubbert 和 Gary Saaris 开发了第一个能够处理升力的面板代码 A230。此后各大航空企业纷纷推出自有面板法程序:Boeing 的 PANAIR 和 A502(高阶面元分布)、Lockheed 的 Quadpan(低阶面元、效率更高)、Douglas 的 HESS、McDonnell Aircraft 的 MACAERO、NASA 的 PMARC 等9)。
这一时期还出现了重要的翼型设计工具。Mark Drela 于 1986 年发表的开源代码 XFOIL 将面元法与边界层耦合,能够快速准确分析翼型性能,至今仍是航空气动设计的经典工具10)。
面板法无法处理跨音速流动中的非线性效应,这促使研究人员转向全势能方程。1970 年,Boeing 的 Earll Murman 和 Julian Cole 首次描述了用全势能方程求解跨音速流动的方法11)。
Courant 研究所的 Frances Bauer、Paul Garabedian 和 David Korn 开发了广泛使用的二维全势能翼型代码 Program H。随后 Antony Jameson(当时在 Grumman 公司和 Courant 研究所)与 David Caughey 于 1975 年合作开发了重要的三维全势能代码 FLO22。Jameson 后来还开发了使用非结构化四面体网格的 AIRPLANE 代码12)。
全势能方法的最终代表是 Boeing 的 Tranair(A633)代码,它在航空工业界使用至今。
1981 年,Antony Jameson 发表了划时代的三维 Euler 方程求解器 FLO57,采用有限体积法和 Runge-Kutta 时间推进,将 CFD 带入了求解 Euler 方程的时代。FLO57 的方法论被广泛借鉴,产生了一系列重要程序:Lockheed 的 TEAM、IAI/Analytical Methods 的 MGAERO(笛卡尔网格)、NASA 的 CART3D 等。
1980 年代后期,计算机性能的提升使得直接求解 Navier-Stokes 方程成为可能。NASA Ames 研发了 ARC2D(二维)和 ARC3D(三维)代码,此后 NASA 又陆续推出了 OVERFLOW 和 CFL3D 等著名 Navier-Stokes 求解器13)。
在压力-速度耦合算法方面,Imperial College London 的 Brian Spalding 和 Suhas Patankar 团队做出了卓越贡献。他们发展的 SIMPLE 算法(Semi-Implicit Method for Pressure-Linked Equations)以及后续的 SIMPLER、SIMPLEC 和 PISO 算法,成为不可压缩流求解的标准方法14)。 Patankar 的著作《Numerical Heat Transfer and Fluid Flow》以不到 200 页的篇幅清晰阐述了基于 FVM 的传热与流动数值方法,被公认为 CFD 领域的经典名著。
同期,Dervieux、Venkatakrishnan 等人发展了非结构化网格的求解技术,使得复杂几何外形的流动计算成为可能。
2004 年,OpenFOAM(Open Source Field Operation and Manipulation)作为开源 CFD 工具包正式发布,它采用 C++ 的面向对象设计,将有限体积法求解器、网格工具、后处理模块集成为统一的框架15)16)。 OpenFOAM 的发布深刻改变了 CFD 的生态格局,使得中小企业和研究机构也能拥有工业级的 CFD 工具。
2008 年,Stanford University 的 Aerospace Design Lab 发布了 SU2(Stanford University Unstructured)代码,专注于气动优化和伴随方法17)。 SU2 的伴随求解器使得大规模气动外形优化成为可能,已被 NASA、Boeing、Airbus 等机构采用。
CFD 的数学核心是描述粘性牛顿流体运动的一组偏微分方程——Navier-Stokes 方程组。这个方程组源于 19 世纪 Claude-Louis Navier 和 George Gabriel Stokes 各自独立推导的成果,至今仍然是描述绝大多数流体现象的基本框架20)。
质量守恒方程(连续性方程): \begin{equation} \frac{\partial \rho}{\partial t} + \nabla \cdot (\rho \mathbf{V}) = 0 \end{equation} 单位时间内控制体内部的质量增加等于通过控制面的净流入量。对于不可压缩流动(密度恒定),方程简化为 ∇·V = 0。
动量守恒方程(N-S 方程): \begin{equation} \frac{\partial (\rho \mathbf{V})}{\partial t} + \nabla \cdot (\rho \mathbf{V} \mathbf{V}) = -\nabla p + \nabla \cdot \tau + \rho \mathbf{g} + \mathbf{F} \end{equation} 其中 ρ 为密度,V 为速度矢量,p 为压力,τ 为粘性应力张量,g 为重力加速度,F 为其他体积力(如电磁力)。方程左边代表非定常项和对流项,右边依次代表压力梯度力、粘性力、重力和源项。
对于牛顿流体,粘性应力张量与应变率张量呈线性关系: \begin{equation} \tau_{ij} = \mu \left[ \left( \frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i} \right) - \frac{2}{3} (\nabla \cdot \mathbf{V}) \delta_{ij} \right] \end{equation} 能量守恒方程: \begin{equation} \frac{\partial (\rho E)}{\partial t} + \nabla \cdot (\rho \mathbf{V} H) = \nabla \cdot (k \nabla T) + \nabla \cdot (\mathbf{V} \cdot \tau) + S_h \end{equation} 其中 E 为总能量(内能+动能),H 为总焓,k 为热导率,T 为温度,S_h 为体积热源(如化学反应热、辐射热)。
Navier-Stokes 方程组在数学上属于二阶非线性偏微分方程组,目前尚未证明三维 N-S 方程解的光滑性和唯一性,这是 Clay Mathematics Institute 公布的七个千禧年大奖难题之一21)。
根据不同的物理假设对 N-S 方程进行简化,可以得到一系列适用于不同流动条件的方程22)。
每个层次在精度和计算量之间做出不同的权衡,选择哪个层次的方程是 CFD 分析的第一个关键决策。
CFD 问题的适定性要求给出合适的初始条件和边界条件。
常见边界条件类型:
初始条件影响收敛速度和稳态解的唯一性,对瞬态问题则直接影响求解的时程。
将连续的控制方程转化为可在计算机上求解的代数方程组,是 CFD 最核心的技术环节。目前主流的离散化方法有三种:有限体积法、有限元法和有限差分法,此外还有谱方法、格子 Boltzmann 方法等也占有一定地位23)。
有限体积法是当前商业 CFD 软件(ANSYS Fluent、STAR-CCM+、OpenFOAM)和大部分工程流场求解器的核心方法24)。
基本原理: 将计算域划分为互不重叠的有限个控制体积(Control Volume),在每个控制体积上对守恒方程的积分形式进行离散。利用高斯散度定理将控制面上的通量积分转换为控制面的通量求和,然后对各个控制面上的流动变量和通量进行插值和近似。 \begin{equation} \int_{CV} \frac{\partial (\rho \phi)}{\partial t} dV + \int_A \mathbf{n} \cdot (\rho \phi \mathbf{V}) dA = \int_A \mathbf{n} \cdot (\Gamma \nabla \phi) dA + \int_{CV} S_\phi dV \end{equation} 其中 φ 是通用变量(可代表速度分量、温度、湍流变量等),Γ 是扩散系数,S_φ 是源项。方程各项依次对应:瞬态项、对流项、扩散项、源项。
FVM 的核心优势:
对流项的离散格式:
时间离散格式:
压力-速度耦合算法:
有限元法在固体力学中占据主导地位,在流体力学中的应用也在不断扩大26)。 FEM 的核心思想是将计算域划分为有限个单元(Element),在每个单元上构造形函数(Shape Function)来近似变量分布,通过变分原理或加权余量法建立全局代数方程组。
Galerkin 方法是最经典的 FEM 形式,它要求残差与形函数在加权积分意义下正交。对于椭圆型问题(如扩散方程、Stokes 流),Galerkin 方法天然最优。
但对于对流主导问题(高 Peclet 数),标准 Galerkin 方法会产生数值振荡,因此发展了多种稳定化策略:
间断 Galerkin(DG)方法是 FEM 在 CFD 中的一个重要分支,它允许单元边界上的解不连续。DG 方法结合了 FVM 的守恒性和 FEM 的高精度,特别适合包含激波、接触间断等强间断的流动问题,也是高精度 DNS 研究的热门方法。
FVM vs FEM 的选择:
有限差分法是最古老、数学推导最直观的离散方法27)。 它直接用差商近似偏导数,将控制方程转化为代数方程。FDM 在结构化/正交网格上效率极高,但处理复杂几何时能力有限。
常用差分格式:
FDM 在以下领域依然不可替代:
对于光滑解的问题,谱方法(Spectral Method)可以达到指数级收敛速度。谱方法将解用全局基函数(如傅里叶级数、Chebyshev 多项式)展开,仅需少量自由度数即可达到极高精度。
谱元法(SEM)结合了谱方法的高精度和有限元法的几何灵活性,在声学、电磁学和湍流 DNS 中越来越流行。代表代码是 Nektar++。
LBM 不直接求解 N-S 方程,而是在介观层面用粒子分布函数的迁移和碰撞过程模拟流体行为。LBM 天然适合并行计算和复杂几何(多孔介质),但在高雷诺数和可压缩流方面不如传统方法成熟。
RANS 方法将流动变量分解为时均量和脉动量:φ = φ̄ + φ'。代入 N-S 方程后得到一个与层流 N-S 形式相同但多出雷诺应力项 -ρu'ᵢu'ⱼ 的方程组。湍流模型的作用就是封闭这个雷诺应力项。
涡粘模型(Eddy-Viscosity Models): 基于 Boussinesq 假设,将雷诺应力表示为平均应变率的线性函数,类比分子粘性:
雷诺应力模型(RSM): 直接求解雷诺应力输运方程(6 个独立分量),放弃 Boussinesq 假设。RSM 理论上能捕捉各向异性效应和曲率效应,适用于强旋流、二次流等复杂工况,但计算量约为 k-ε 的 5-10 倍,收敛性也更差。
非线性涡粘模型: 在 Boussinesq 线性假设基础上增加高阶项以考虑各向异性,如 Explicit Algebraic Reynolds Stress Model(EARSM)。
LES 的基本思想是大尺度涡结构直接计算、小尺度涡通过亚格子模型模化31)。 LES 捕获的流动细节远超 RANS,计算量也大 1-2 个量级,但随着 GPU 和集群计算的发展,LES 在工业应用中越来越常见。
亚格子模型:
LES 的应用现状:
DNS 直接求解 Navier-Stokes 方程组,捕捉从含能大涡到耗散尺度的全部湍流结构,不引入任何模型32)。
计算量: DNS 所需的网格点数与 Re^{9/4} 成正比。对于 Re=10⁶ 的流动(翼型绕流的典型条件),需要的网格点数约为 10¹³,远超目前最强大的超级计算机的能力。因此 DNS 目前仅限于低雷诺数(Re ∼ 10³-10⁴)的简单几何流动。
DNS 的价值:
代表 DNS 代码包括:ChannelFlow(跨声道流)、PoongBack(湍流边界层)、以及 OpenFOAM 中的 pisoFoam 搭配高阶格式等。
为了兼顾 RANS 的高效性和 LES 的准确性,混合方法应运而生,并正在成为工业 CFD 的新标准。
DES(分离涡模拟,Detached Eddy Simulation):Spalart 等人于 1997 年提出,在附体边界层中使用 RANS(S-A 模型),在分离区自动切换为 LES33)。
DDES(延迟 DES):解决 DES 在网格加密时过早从 RANS 切换到 LES 导致的问题。
IDDES(改进 DDES):进一步提升壁面湍流的分辨率,使模型能处理强非定常流动中的壁面湍流。
SBES(应力基混合模型):ANSYS 开发的专有混合方法,明确指定 RANS 和 LES 的分配,用户可控性更强。
网格质量直接决定 CFD 求解的精度、稳定性和效率。一个典型的 CFD 项目中,网格生成往往耗时最长34)。
结构化网格: 六面体网格按规则排列,索引关系明确。计算效率高、数值精度好、内存需求低。适合几何规则的问题(如管道、翼型、涡轮叶片通道)。缺点是手工生成耗时,复杂几何几乎不可能生成纯结构化网格。
非结构化网格: 四面体/多面体网格,可自动填充任意复杂几何。生成自动化程度高,但内存占用大、计算精度略逊。多面体网格相比四面体具有更高的精度-效率比,近年来越来越流行。
笛卡尔网格: 网格线平行于坐标轴,生成完全自动化。著名的 NASA CART3D 代码即采用笛卡尔网格 + 切割单元法。缺点是壁面附近分辨率不足,需结合壁面模型。
混合网格: 边界层使用棱柱层(Prism Layer)以精细捕捉近壁流动,外场使用四面体或多面体。这是当前工程应用中最实用的网格策略,兼顾了近壁面精度和整体生成效率。
重叠网格(Overset/Chimera): 多个独立网格通过重叠区域插值交换信息。每个部件独立网格化,然后拼装成整体。特别适合运动部件(旋翼/螺旋桨-机身干扰、多体分离)。
AMR 根据求解过程中的误差估计(如梯度、旋度、残差)自动细化和粗化网格。理想情况下,AMR 能在保证精度的同时将网格量减半。当前 AMR 已在 OpenFOAM、deal.II 等代码中成熟实现,是 CFD 发展的重要方向。
CFD 的应用横跨几乎全部涉及流体流动的工程领域35)。
航空航天始终是 CFD 技术最先进、应用最深入、投入最大的领域36)。
翼型/机翼气动设计: 使用 XFOIL/MSES 进行二维翼型分析和反设计。使用三维 RANS 求解器对全机进行气动性能评估。使用伴随方法(Adjoint Method)进行气动优化以获取更佳的升阻比。
高超音速流动: 再入大气层的飛行器表面温度可达数千度,需要考虑真实气体效应(化学非平衡、热化学非平衡)、边界层转捩和热防护系统的烧蚀37)。
推进系统:
气动弹性和颤振分析: 使用流固耦合方法(如 preCICE + OpenFOAM + CalculiX)对机翼、风扇叶片等弹性结构进行气弹稳定性评估38)。
典型应用案例: SpaceX 星舰再入大气层的 CFD 模拟展示了从马赫数 25 到亚音速的全速域流动特征。Boeing 787 和 Airbus A350 的气动设计大量使用 CFD 进行减阻优化。F-35 联合攻击机的进气道设计完全依赖 CFD。
外气动减阻: 风阻系数 Cd 每降低 0.01,电动汽车的续航里程可提升约 5-8km。在高速公路上,约 60-70% 的能量消耗用于克服气动阻力。CFD 已能对整车进行精确的风阻预测。
热管理: 发动机舱内的冷却气流组织、散热器/中冷器的空气侧流动、制动盘的冷却、电池包的热管理(尤其锂电池在快充时的产热问题是当前的重点)。
风噪(Aeroacoustics): A 柱涡、后视镜尾流、雨刮器、车门密封条等产生的气动噪声已成为影响乘坐舒适性的重要因素。Lighthill 声类比和 LES 结合的方法是风噪预测的标准路线。
涉水与 HVAC: 车辆涉水时水流在底盘和发动机舱内的分布、空调系统的风道设计和除霜性能、前排和后排乘客区的气流组织和温度场。
赛车空气动力学: F1/WEC/Formula E 赛车的下压力-阻力平衡、尾流效应(DRS 系统优化)、轮胎的旋转效应对气动力的影响。
燃气轮机: 压气机叶片叶型优化、燃烧室燃料-空气混合与火焰稳定、涡轮叶片的气膜冷却设计。联合循环电站的效率每提高 1%,对电站运营的效益数以亿计。
风力发电: 风力机叶片的翼型选择和三维气动优化、风电场中尾流干扰与机组布局优化(通过 CFD 降低尾流损失 3-5%)。致动盘/致动线方法结合 LES 是风电 CFD 的标准方法。
核电: 反应堆堆芯热工水力分析、失水事故(LOCA)的瞬态过程、自然循环冷却系统的设计验证、蒸汽发生器内的两相流动。
燃烧与污染物: 煤粉燃烧、气体燃烧、生物质燃烧、燃烧过程中的 NOx/SOx 生成机理。
CFD 在生物医学中的应用是当前的热点领域39)。
血流动力学: 动脉瘤的形成、生长和破裂风险评估——通过 CFD 计算壁面剪切应力和振荡剪切指数。动脉粥样硬化斑块处的局部流场分析。支架/人工血管植入后的血流动力学性能预测。
呼吸系统: 药物吸入颗粒在鼻腔、咽喉、气管和各级支气管中的沉积分布。COVID-19 疫情期间,大量的 CFD 研究用于分析飞沫和气溶胶的传播。
人工器官: 人工心脏/心室辅助装置内的剪切应力分析(溶血风险评估)。人工心脏瓣膜的启闭运动流固耦合分析。
大气扩散: 工厂烟囱排放的污染物在复杂地形和建筑群中的扩散路径。核事故中放射性核素的远距离输送。城市热岛效应的 CFD 分析。
水力学与洪水: 溃坝洪水波的演进模拟(浅水方程+有限体积法)。城市暴雨内涝。河流泥沙输运和河床演变。
近海与海洋: 船舶阻力和推进效率优化。螺旋桨空化模拟。海上风机基础的波浪载荷。海岸波高分布和泥沙输运。
随着芯片热流密度不断攀升(当前旗舰手机 SoC 已超 10W/cm²,GPU 超过 100W/cm²),热管理成为电子器件设计的核心瓶颈。
CFD 软件生态系统可分为商业软件、开源软件和云平台三大类40)。
ANSYS Fluent: 市场占有率最高的通用 CFD 软件,功能覆盖不可压缩/可压缩流动、多相流(VOF/Eulerian/Lagrangian/DEM)、燃烧、动网格、流固耦合等几乎所有 CFD 功能。采用基于压力的耦合求解器和基于密度的求解器双求解器架构41)。
Siemens STAR-CCM+: 以多面体网格自动生成和集成化工作流著称,在汽车和船舶行业占有率高。其伴随求解器和优化模块与 CAD 深度集成。
COMSOL Multiphysics: 多物理场耦合能力最强,但单纯流动求解性能不如 Fluent 和 STAR-CCM+。适合需要同时求解电磁/结构/流动的耦合问题。
Ansys CFX: 叶轮机械领域的传统强项求解器,采用基于有限元的 FVM 方法(FEM-FVM 混合格式)。
其他商业软件: NUMECA(叶轮机械)、CONVERGE(自动网格生成+内燃机)、FlowVision(俄罗斯通用 CFD)、OpenMind(韩国通用 CFD)。
OpenFOAM: C++ 编写、GPL 协议的工业级开源 CFD 工具包,由 OpenFOAM Foundation 维护。包含 250+ 预置求解器和 200+ 预置物理模型42)43)。
SU2: Stanford 大学支持的开源气动优化套件,伴随方法领先44)。 与 OpenFOAM 相比更轻量、更适合气动形状优化。支持 Euler/RANS 求解器和离散伴随方法。
CFDPython/12 Steps to NS: Barba 团队开发的最受欢迎的 CFD 入门教程系列,用 Python 从零起步实现 N-S 方程求解器45)。
deal.II: 高性能有限元库,学术研究中使用广泛46)。
jax-cfd: Google 基于 JAX 框架开发的 CFD 工具,原生支持 GPU 加速和自动微分47)。
MFEM: Lawrence Livermore 开发的高性能有限元库,支持大规模并行48)。
preCICE: 多物理场耦合库,连接 OpenFOAM、CalculiX、deal.II 等进行联合仿真49)。
Nektar++: 谱元法框架,适合高精度 DNS 和 CFD 研究。
Code_Saturne: 法国 EDF 开发的通用工业 CFD 代码,验证充分。
流体力学:
数值分析:
CFD 入门教材:
推荐路线:
在线课程: