流体力学基础 — 从纳维-斯托克斯方程到湍流模型完整解析

🧑‍🎓

老师,我第一次打开OpenFOAM,感觉啥都不懂。流体力学跟结构分析有什么根本区别吗?

🎓

区别很大。结构分析里材料是固体,形状基本固定;流体分析里材料会流动,形态随时变化。最难的地方是:流体控制方程(纳维-斯托克斯方程)是非线性偏微分方程,求解比结构难得多。而且湍流问题到现在还没有完整的解析理论,这是物理上公认的"世纪难题"之一。

1. 流体基本性质

1.1 粘度

粘度是流体抵抗流动的能力,分为动力粘度 $\mu$(单位:Pa·s)和运动粘度 $\nu$:

$$\nu = \frac{\mu}{\rho}$$

牛顿流体(水、空气、大多数气体和低粘度液体)满足:

$$\tau = \mu \frac{du}{dy}$$

即剪应力与速度梯度成正比。非牛顿流体(血液、聚合物溶液、油漆)则不满足,需要更复杂的本构模型(幂律流体、Bingham流体等)。

1.2 可压缩性

液体可近似视为不可压缩流体(密度恒定);气体在马赫数 $Ma < 0.3$ 时也近似不可压缩,$Ma > 0.3$ 时密度变化不可忽略,必须用可压缩流方程

流体密度 ρ (kg/m³)动力粘度 μ (Pa·s)运动粘度 ν (m²/s)
空气(20°C, 1atm)1.2051.81×10⁻⁵1.50×10⁻⁵
水(20°C)9981.00×10⁻³1.00×10⁻⁶
发动机润滑油(40°C)8700.101.15×10⁻⁴
氢气(20°C, 1atm)0.0838.8×10⁻⁶1.06×10⁻⁴

2. 连续方程(质量守恒)

🧑‍🎓

CFD里的控制方程有几个?先从哪个开始理解?

🎓

一共三大类:质量守恒(连续方程)、动量守恒(NS方程)、能量守恒(能量方程)。先从最直观的连续方程开始——它说的是"质量不会凭空产生或消失"。

一般形式(可压缩非定常):

$$\frac{\partial \rho}{\partial t} + \nabla \cdot (\rho \mathbf{u}) = 0$$

不可压缩流体($\rho = \text{const}$)简化为:

$$\nabla \cdot \mathbf{u} = \frac{\partial u}{\partial x} + \frac{\partial v}{\partial y} + \frac{\partial w}{\partial z} = 0$$

物理含义:流入某控制体的质量流量 = 流出该控制体的质量流量。在CFD中,连续方程的残差是判断求解是否收敛的重要指标之一,通常要求降低3~5个数量级。

3. 纳维-斯托克斯方程(动量守恒)

🧑‍🎓

NS方程是什么?听说很复杂,为什么流体分析都要用这个?

🎓

纳维-斯托克斯方程本质上是牛顿第二定律在流体中的应用:质量×加速度 = 所有力之和。对于粘性不可压缩流体:

$$\rho\left(\frac{\partial \mathbf{u}}{\partial t} + \mathbf{u} \cdot \nabla \mathbf{u}\right) = -\nabla p + \mu \nabla^2 \mathbf{u} + \rho \mathbf{g}$$

各项物理含义:

  • $\rho \frac{\partial \mathbf{u}}{\partial t}$:非定常惯性力(速度随时间变化产生的力)
  • $\rho(\mathbf{u} \cdot \nabla)\mathbf{u}$:对流惯性力(流体流过空间时速度变化)—— 非线性项,难题根源!
  • $-\nabla p$:压力梯度力(推动流体的动力)
  • $\mu \nabla^2 \mathbf{u}$:粘性扩散力(粘度引起的内摩擦)
  • $\rho \mathbf{g}$:重力体力
🧑‍🎓

哦,那个"对流惯性力"就是为什么NS方程这么难解的原因?

🎓

完全正确!$(\mathbf{u} \cdot \nabla)\mathbf{u}$ 这个非线性对流项是所有难题的根源。雷诺数高时,这项主导,流动变得混沌——就是湍流。数学上,NS方程的解是否在所有情况下都光滑存在,到今天还没有证明,这是"千禧年七大数学难题"之一,悬赏100万美元!

3.1 无量纲NS方程

用特征速度 $U_\infty$、特征长度 $L$ 无量纲化,得到无量纲NS方程:

$$\frac{\partial \mathbf{u}^*}{\partial t^*} + \mathbf{u}^* \cdot \nabla^* \mathbf{u}^* = -\nabla^* p^* + \frac{1}{Re} \nabla^{*2} \mathbf{u}^*$$

其中雷诺数 $Re = \rho U_\infty L / \mu$ 是唯一的无量纲参数。这说明几何相似且Re相同的两个流动,其流场完全相似——这是风洞实验缩比模型的物理基础。航空工程师用这一原理在小风洞里测真实飞机的气动特性。

3.2 伯努利方程(NS方程的特例)

对于无粘、定常、不可压缩、沿流线的流动,NS方程积分得到伯努利方程

$$p + \frac{1}{2}\rho u^2 + \rho g z = \text{const(沿流线)}$$

压力 + 动压 + 静压头 = 常数。飞机升力(机翼上下表面压差)、文丘里管流量计、皮托管测速,本质上都是伯努利原理的应用。

4. 能量方程

带热传导的流体能量方程(内能形式):

$$\rho c_p \left(\frac{\partial T}{\partial t} + \mathbf{u} \cdot \nabla T\right) = \nabla \cdot (k \nabla T) + \Phi + S_e$$

其中 $c_p$ 是比热容,$k$ 是导热系数,$\Phi = \mu\left[2\left(\frac{\partial u}{\partial x}\right)^2 + \cdots\right]$ 是粘性耗散项(高速流动中不可忽略),$S_e$ 是内热源(如电加热、化学反应放热)。

🧑‍🎓

做电子散热仿真时,是流体分析和热分析一起做吗?怎么耦合?

🎓

对,就是共轭传热(CHT,Conjugate Heat Transfer)分析——同时求解流场(NS+能量方程)和固体中的热传导,在流固界面连续地交换热通量和温度。数据中心服务器散热、汽车发动机冷却系统、锂电池热管理,全都是CHT问题。流体和固体不能拆开单独算,因为它们在界面上是强耦合的。

4.1 无量纲数汇总

无量纲数定义物理含义典型值范围
雷诺数 Re$\rho U L/\mu$惯性力/粘性力层流<2300,湍流>4000
努塞尔数 Nu$hL/k$对流/导热1(纯导热)到>1000(强对流)
普朗特数 Pr$\mu c_p/k$动量/热量扩散比空气0.71,水6.9,润滑油~100
格拉晓夫数 Gr$g\beta\Delta T L^3/\nu^2$浮力/粘性力(自然对流)Gr>10⁹ 自然对流湍流
马赫数 Ma$U/a$流速/声速<0.3不可压,>1超音速

5. 雷诺数与流态

$$Re = \frac{\rho U L}{\mu} = \frac{U L}{\nu} = \frac{\text{惯性力}}{\text{粘性力}}$$

雷诺数是流体力学中最重要的无量纲数,决定流态:

流态Re范围(管道流)特征CFD处理
层流Re < 2,300流线有序,无扰动直接求解NS,无需湍流模型
过渡流2,300 ~ 4,000层流/湍流交替,不稳定最难处理,γ-Reθ转捩模型
湍流Re > 4,000速度随机脉动,高混合率RANS/LES/DNS

5.1 典型工程场景的 Re 估算

场景特征长度典型流速估算Re流态
血管(毛细管)10 μm0.1 mm/s~10⁻³极低Re层流
水管(DN50)50 mm1 m/s~50,000湍流
汽车(120 km/h)2 m33 m/s~4.4×10⁶强湍流
波音747机翼(巡航)8 m260 m/s~1.4×10⁸极强湍流
微流控芯片通道100 μm1 mm/s~0.1层流(蠕变流)

6. 湍流基础与湍流模型

🧑‍🎓

Fluent里有k-ε、k-ω、SST……好多湍流模型,不知道选哪个。能讲讲它们的区别吗?

🎓

湍流模型选择确实让新手头大。简单说一个结论:SST k-ω是工业CFD的默认首选,它在边界层用k-ω,自由流用k-ε,综合了两者优点。不知道选什么,先用SST k-ω准没错。

6.1 RANS方法——雷诺平均

RANS(Reynolds-Averaged Navier-Stokes)将速度分解为时均值和脉动值:$u_i = \bar{u}_i + u_i'$,对NS方程时间平均,出现雷诺应力项 $-\rho\overline{u_i'u_j'}$,需要用湍流模型封闭(这就是著名的"湍流封闭问题")。

6.2 涡粘假设(Boussinesq近似)

$$-\rho\overline{u_i'u_j'} = \mu_t \left(\frac{\partial \bar{u}_i}{\partial x_j} + \frac{\partial \bar{u}_j}{\partial x_i}\right) - \frac{2}{3}\rho k \delta_{ij}$$

$\mu_t$ 是湍流粘度(湍动涡粘度,不是流体本身的粘度,而是湍流混合带来的"等效粘性"),$k = \frac{1}{2}\overline{u_i'u_i'}$ 是湍动能。不同湍流模型的核心区别就在于如何计算 $\mu_t$。

6.3 标准 k-ε 模型

求解湍动能 $k$ 和湍流耗散率 $\varepsilon$ 的输运方程:

$$\frac{D(\rho k)}{Dt} = \nabla\cdot\left[\left(\mu + \frac{\mu_t}{\sigma_k}\right)\nabla k\right] + G_k - \rho\varepsilon$$
$$\frac{D(\rho\varepsilon)}{Dt} = \nabla\cdot\left[\left(\mu + \frac{\mu_t}{\sigma_\varepsilon}\right)\nabla\varepsilon\right] + C_{1\varepsilon}\frac{\varepsilon}{k}G_k - C_{2\varepsilon}\rho\frac{\varepsilon^2}{k}$$

湍流粘度:$\mu_t = C_\mu \rho k^2 / \varepsilon$,标准常数:$C_\mu=0.09$,$C_{1\varepsilon}=1.44$,$C_{2\varepsilon}=1.92$,$\sigma_k=1.0$,$\sigma_\varepsilon=1.3$。

适用:充分发展的内部流(管道、通道)、自由剪切流。不适用:有分离的流动(机翼失速、回流区)、强逆压梯度区域。

6.4 k-ω 模型

用比耗散率 $\omega = \varepsilon/(C_\mu k)$ 代替 $\varepsilon$。近壁区(粘性底层和缓冲层)无需壁面函数,可以直接积分到壁面(y⁺ < 1)。但对自由流入射湍流强度非常敏感,边界条件设置不当会导致结果差异大。

6.5 SST k-ω 模型(工业首选)

Menter(1994)提出的混合模型,通过混合函数 $F_1(r)$ 平滑切换:

  • 近壁区($F_1 \approx 1$):标准 k-ω(精确处理边界层,不需要壁面函数)
  • 远离壁面($F_1 \approx 0$):变换为 k-ε(对自由流湍流强度不敏感)

还加入了对湍流剪应力的限制(修正了过度预测涡粘的问题),对分离流和逆压梯度区域更准确。是Fluent、CFX、OpenFOAM、Star-CCM+的推荐默认模型。

6.6 大涡模拟(LES)与直接数值模拟(DNS)

方法思路精度计算量适用场景
RANS(k-ε/SST)时间平均,全部湍流建模低~中基准(1×)工业设计,大多数稳态问题
DES/DDES近壁RANS+远场LES中高10~100×分离流、气动噪声(半工业)
LES直接模拟大涡,亚格子建模100~1000×燃烧、噪声、非定常流(研究)
DNS全尺度直接求解,无建模最高(精确)Re^(9/4) 增长基础研究,Re极低时可行

6.7 近壁处理与 y⁺

无量纲壁面距离 $y^+$ 是判断第一层网格是否合适的关键:

$$y^+ = \frac{\rho u_\tau y_1}{\mu}, \quad u_\tau = \sqrt{\frac{\tau_w}{\rho}}$$

$y_1$ 是第一层网格中心到壁面的距离,$u_\tau$ 是摩擦速度。

湍流模型推荐 y⁺近壁处理网格层数
k-ε + 标准壁面函数30 ~ 300壁面函数(省计算)5~10层棱柱网格
SST k-ω(低Re处理)y⁺ < 1直接积分到壁面15~20层,比例≈1.2
LESy⁺ ≈ 1(x,z向也需细)壁面解析LES(WRLES)全方向均匀细化
🧑‍🎓

实际工作中怎么快速估算需要多细的第一层网格?

🎓

先估算Re,用Blasius公式 $C_f \approx 0.058 Re_x^{-0.2}$ 估算摩擦系数,算出壁面剪应力 $\tau_w = C_f \cdot \frac{1}{2}\rho U^2$,再反推 $y_1 = y^+ \mu / (\rho u_\tau)$。比如汽车外流(Re~10⁶,U=33 m/s),要达到 y⁺~1,第一层网格大约0.01~0.05 mm。我们网站的y⁺计算器可以自动算,很方便。

7. 可压缩流动与激波

🧑‍🎓

超音速飞行的CFD和普通流体分析有什么不同?

🎓

差别很大。超音速(Ma > 1)流动中,密度、压力、温度都会发生剧烈变化,必须加入能量方程和理想气体方程。最特别的现象是激波——一个极薄的间断面(厚度约几个分子自由程),流体参数在激波前后发生跳跃式变化。比如战斗机超音速飞行时,机头附近就会有正激波和斜激波,产生"音爆"。

7.1 马赫数与流动分区

$$Ma = \frac{U}{a}, \quad a = \sqrt{\gamma R T}$$

$a$ 是声速(空气20°C时约343 m/s),$\gamma$ 是比热比(空气约1.4),$R$ 是气体常数(空气287 J/kg·K)。

马赫数范围流态名称主要特征CFD数值格式
Ma < 0.3不可压缩密度变化可忽略(<5%)不可压缩求解器(速度基)
0.3 ~ 0.8亚音速可压缩密度显著变化可压缩求解器(密度基)
0.8 ~ 1.2跨音速局部超音速区+正激波密度基+激波捕捉(TVD格式)
1.2 ~ 5超音速斜激波、膨胀波Roe格式/AUSM格式
> 5高超音速极高温、气体离解、电离化学非平衡流CFD

7.2 正激波跳跃关系(Rankine-Hugoniot)

正激波前(下标1)、后(下标2)参数关系:

$$\frac{p_2}{p_1} = \frac{2\gamma Ma_1^2 - (\gamma-1)}{\gamma+1}, \quad \frac{\rho_2}{\rho_1} = \frac{(\gamma+1)Ma_1^2}{(\gamma-1)Ma_1^2 + 2}$$
$$Ma_2^2 = \frac{(\gamma-1)Ma_1^2 + 2}{2\gamma Ma_1^2 - (\gamma-1)}$$

对于 $\gamma=1.4$(空气):激波越强($Ma_1$ 越大),压力比越大,密度比最大为 $(\gamma+1)/(\gamma-1) = 6$,激波后马赫数趋近但不会超过某极限值。

8. 数值流体力学(CFD)概述

🧑‍🎓

CFD软件内部是怎么求解NS方程的?和FEA软件有什么不同?

🎓

商业CFD(Fluent、CFX)和开源CFD(OpenFOAM)主流用的是有限体积法(FVM):把流场划分为许多控制体(多面体),在每个控制体上对守恒方程积分,保证质量/动量/能量在每个控制体内守恒。FEA用有限元法(FEM),CFD用有限体积法(FVM),这是两者的核心差异。FVM天然守恒,适合流动问题。

8.1 压力-速度耦合算法

不可压缩NS方程中,压力和速度是耦合的——动量方程包含压力梯度,但没有独立的压力方程,需要通过连续方程导出压力修正方程:

  • SIMPLE(Semi-Implicit Method for Pressure-Linked Equations):迭代解压力修正,稳健,适合复杂流场,Fluent稳态默认
  • SIMPLEC:SIMPLE的改进变体,收敛略快
  • PISO(Pressure Implicit with Splitting of Operators):两步预测-修正,适合非定常瞬态计算,OpenFOAM默认
  • Coupled求解器:同时求解速度-压力系统,收敛快,内存需求大,适合高Ra数自然对流

8.2 对流项离散格式

  • 一阶迎风(First-Order Upwind):稳健但数值扩散大,结果"太光滑",不推荐精度要求高的场景
  • 二阶迎风(Second-Order Upwind):精度高,是工业CFD的标准选择(Fluent默认)
  • QUICK:三阶精度,适合结构化六面体网格
  • 有界中心差分(Bounded CD):LES推荐,最小数值扩散但需要限制器防振荡

8.3 CFD典型工作流程

  1. 几何准备:导入/创建计算域几何(包围盒、入口/出口);修复几何缺陷(间隙、重叠面)
  2. 网格划分:边界层棱柱网格(控制y⁺)+ 四面体/多面体体网格;检查网格质量
  3. 物理场设置:流体属性(密度、粘度、热导率);湍流模型;边界条件(入口速度/压力、出口压力、壁面无滑移等)
  4. 求解器设置:压速耦合算法;离散格式;收敛准则;监测点设置
  5. 求解:观察残差曲线;监测关键物理量(阻力、升力、压降)
  6. 后处理:流线/速度云图/压力分布;积分量(阻力系数、努塞尔数);导出数据
  7. 验证:网格无关性研究;与实验数据对比

9. 实际CFD注意事项

🧑‍🎓

CFD结果的残差降下去了,是不是就代表收敛了、结果是对的?

🎓

不一定!残差降低只是必要条件,不是充分条件。更重要的是:监测你真正关心的物理量(阻力系数 $C_d$、压降 $\Delta p$、出口温度)是否稳定不变。很多情况下残差降了3个数量级但流场还没稳定,尤其是分离流动、旋转机械这类问题。残差降到1e-4未必够,有些流场需要1e-6才可信。

CFD常见错误与对策

  • 计算域太小:入口/出口距离物体不够,边界条件干扰流场。建议:上游 ≥5倍特征尺寸,下游 ≥10~15倍,横向(外流)≥5倍
  • 湍流入口条件随便填:湍流强度 I 和湍流长度尺度 L 要根据上游情况设置;管道进口通常 I=5%,自由来流 I=0.1%~1%
  • y⁺不在湍流模型适用范围:用壁面函数但 y⁺<30,或用低Re处理但 y⁺>5,误差很大
  • 时间步长过大(瞬态计算):CFL数 $Co = U\Delta t/\Delta x$ 应 <1(RANS),LES要求 <0.5
  • 跳过网格无关性验证:至少做两套网格(粗/细网格比~1.5³),关键量差异 <5% 才能说网格已收敛
  • 初始条件不合理导致发散:冷启动用零速度场容易发散,建议用势流或简化解初始化;非定常计算先做定常解作为初始场
  • 忽略周期性波动(伪稳态):钝体绕流、旋转机械等本质上是非定常的,定常计算会得到无法收敛的振荡残差,需要瞬态模拟后时间平均

9.1 CFD精度预期(现实目标)

场景关键量RANS精度(vs实验)LES精度
管道压降(湍流)ΔP±5%(SST k-ω)±2%
圆柱绕流阻力系数Cd±10%(RANS)±3%
翼型升力系数(无失速)Cl±3%±1%
翼型升力系数(失速区)Cl±15~30%(RANS失效)±5%
喷嘴出口温度T_out±3°C(CHT)
跨主题标签(Cross-topics)
传热学 数值方法 OpenFOAM Ansys Fluent 湍流分析 Re计算器 y⁺计算器