涡度方程
涡度方程的理论基础
涡度是什么
老师,涡度方程这个名字听起来就很难,那么「涡度」到底是什么?
涡度 $\boldsymbol{\omega}$ 是表示流体局部旋转的矢量量,定义为速度场的旋度(curl)。
二维情况下,$\omega = \frac{\partial v}{\partial x} - \frac{\partial u}{\partial y}$ 是一个标量。它量化了流体微小元素旋转的强度。
我明白了,不是说整个流体都要旋转,只要局部有旋转就有涡度,是吗?
完全正确。比如一个线性剪切流 $u = ky$、$v = 0$,即使整个流看起来是直线流动,也有 $\omega = -k \neq 0$,所以存在涡度。这说明涡度与「漩涡」的存在是两个不同的概念。
涡度方程的推导
那么涡度随时间如何变化呢?怎样推导出涡度方程?
在Navier-Stokes方程两边作用 $\nabla \times$ 算子就能得到涡度方程。对于不可压缩流体,结果是:
左边是涡度的物质导数(拉格朗日导数),表示随流体粒子运动的涡度变化率。
右边的两项各代表什么物理意义呢?
第一项 $(\boldsymbol{\omega} \cdot \nabla)\mathbf{u}$ 是涡管伸展/倾斜项(vortex stretching)。在三维流中,当涡管被拉长时,其截面变细,角动量守恒导致涡度增加。龙卷风或浴缸排水涡变细时转速加快,就是这个效应。
第二项 $\nu \nabla^2 \boldsymbol{\omega}$ 是粘性扩散项,表示涡度由于分子粘性而扩散。动粘性系数 $\nu$ 越大,涡度扩散和消散就越快。
二维的时候涡管伸展项就消失了,对吧?
很敏锐的观察。二维中 $\boldsymbol{\omega}$ 仅有z分量,$(\boldsymbol{\omega} \cdot \nabla)\mathbf{u} = 0$,所以涡度方程简化为简单的平流-扩散方程。
这意味着涡度的生成只能发生在边界上。
涡度的生成机制
涡度不是凭空产生的吧?
在不可压缩、正压流体中,涡度不在流体内部生成。涡度的主要来源如下:
- 固体壁面:由于无滑移条件产生速度梯度,涡度在壁面处生成。Lighthill(1963)给出的壁面涡度通量为 $\nu \frac{\partial \omega}{\partial n}\big|_{wall}$
- 斜压效应:当密度梯度与压力梯度不平行时,$\frac{1}{\rho^2}(\nabla \rho \times \nabla p)$ 项产生涡度。海洋的热盐环流就是典型例子
- 体积力的非均匀分布:例如旋转坐标系中的科里奥利力
CFD中要精确捕捉壁面涡度该怎么做呢?
壁面附近的网格分辨率最为关键。要么把壁面第一个单元的 $y^+$ 控制在1以下,要么用壁函数从壁面剪切应力近似涡度通量。
Kelvin循环定理的关系
涡度方程和Kelvin循环定理是怎么联系的呢?
对于非粘性、正压流体且仅受有势体力作用的情况,沿着闭合曲线的循环 $\Gamma = \oint \mathbf{u} \cdot d\mathbf{l}$ 是守恒的。由Stokes定理,$\Gamma = \int_S \boldsymbol{\omega} \cdot d\mathbf{S}$,所以这对应于涡度方程中粘性项和斜压项都为零的情况。
实际的CFD中有粘性,循环就不守恒了。涡度方程是循环定理的推广吗?
完全同意。涡度方程是更一般的描述,包含了粘性和斜压效应的全部细节。
涡度方程的历史——Helmholtz的涡定理(1858年)与涡管保存
涡度(Vorticity)概念与涡管(Vortex Tube)行为的「Helmholtz涡定理」由Hermann von Helmholtz在1858年发表。定理的核心:①涡管作为流体质点线移动,涡的强度守恒;②涡管不能在流体内部终止——必须闭合或在流体边界终止。龙卷风之所以不能从地面脱离、必须从海面吸取涡,就源于此。Kelvin(Kelvin爵爷)将其发展为「Kelvin循环定理(在正压完全流体中,物质曲线的循环Γ=const.)」。这个定理是现代螺旋桨升力生成机制(绑定涡)和涡栅法(VLM)、涡面法的数学基础。
涡度方程的数值计算方法
涡度-流函数法
在CFD中计算涡度方程时,最基础的方法是什么?
对于二维不可压缩流,涡度-流函数法(vorticity-stream function method)是经典方法。将涡度方程和流函数的Poisson方程耦合求解。
速度由 $u = \frac{\partial \psi}{\partial y}$、$v = -\frac{\partial \psi}{\partial x}$ 恢复。压力从未知数中消除,这是该方法的优点。
和直接求N-S方程相比有什么好处吗?
在二维情况下,未知数只有 $\omega$ 和 $\psi$ 两个,避免了压力-速度耦合问题(不需要SIMPLE法等迭代)。但三维拓展很复杂,因为涡度变成三分量矢量,实用性受限。
空间离散化
空间方向怎样离散化?
用有限差分法(FDM)在均匀间距 $h$ 的网格上,中心差分离散Poisson方程:
平流项用中心差分会在格子Reynolds数 $Re_h = |u|h/\nu > 2$ 时产生振荡。为避免这种情况,通常采用风上差分或QUICK法。
有限体积法(FVM)怎么样?
FVM中在单元界面处评估涡度通量。平流通量用二阶风上或TVD方案,扩散通量用中心差分。OpenFOAM的scalarTransportFoam求解器用FVM计算涡度平流-扩散,是个很好的参考。
时间积分
时间方向怎样推进?
主要的时间积分方案如下:
| 方案 | 精度 | 稳定性 | 特点 |
|---|---|---|---|
| 前向欧拉 | 一阶 | 条件稳定 | $\Delta t < h^2/(4\nu)$ 限制 |
| Crank-Nicolson | 二阶 | 无条件稳定 | 隐式,每步联立方程 |
| Adams-Bashforth 2阶 | 二阶 | 条件稳定 | 显式,两步法 |
| Runge-Kutta 4阶 | 四阶 | 条件稳定 | 高精度但成本大 |
实际中常用Crank-Nicolson处理扩散项(隐式),用Adams-Bashforth处理平流项(显式)的半隐式方案。
CFL条件也起作用吧?
对的。平流的CFL条件是 $\Delta t < h/|u_{max}|$。扩散的稳定性条件是 $\Delta t < h^2/(4\nu)$。高Reynolds数时平流的CFL支配,低Reynolds数时扩散限制更严格。
壁面涡度的边界条件
壁面上涡度的边界条件怎样设置? 我听说这很难。
涡度不能直接给定。要从流函数间接导出。Thom公式是典型的方法。在壁面($j=0$)利用无滑移 $u=v=0$ 和 $\psi=0$:
这是二阶精度,在迭代求解中和Poisson方程交替更新。
还有更高精度的方法吗?
Woods公式能达到三阶精度:$\omega_{i,0} = -\frac{3\psi_{i,1}}{h^2} - \frac{\omega_{i,1}}{2}$。Briley公式用Taylor展开可达四阶。但精度越高收敛越慢,通常Thom公式已够用。
联立方程的求解
每步都要求解Poisson方程,成本会不会很高?
这正是瓶颈。代表性的求解方法有:
- SOR法:实现简单。最优松弛系数 $\omega_{SOR} \approx 2 - \pi h$
- ADI法:交替方向隐式法。各方向的三对角矩阵用Thomas法求解
- 多重网格法:$O(N)$ 计算量,最快。粗网格高效消除低频误差
- FFT法:矩形域均匀网格时 $O(N \log N)$ 直接求解
实务中推荐用哪个?
网格数 $100 \times 100$ 左右SOR法足够。$1000 \times 1000$ 以上用多重网格法快得多。OpenFOAM的fvMatrix中GAMGsolv支持多重网格。
涡度输运方程的数值求解——乱流模型缺失下追踪Coherent结构的方法
直接求解涡度-流函数方程或「VIC法(Vortex-In-Cell)」是无网格法的一种,用于乱流涡结构分析,无需乱流模型。涡度输运方程中Stretch项 ω·∇u 在小尺度涡的伸长(Vortex Stretching)中最关键,是乱流能量级联的物理机制。现代CFD的DNS(直接数值模拟)涡度可视化(用Q准则或λ₂准则识别涡结构)使追踪乱流的毛发针涡和马蹄涡等Coherent结构成为标准后处理。这些方法指导了乱流控制的设计。
涡度方程的实务应用
涡度场的可视化和分析
CFD解出的涡度场怎样利用?
涡度场可视化对理解流动极有帮助。主要用法:
- 涡度等值面(3D):翼尖涡、卡门涡列的结构。Ansys Fluent的Contour选
Vorticity Magnitude - 涡度等值线(2D):涡的发展、剥离追踪。ParaView中用
Compute Derivatives滤器计算涡度 - Q准则、λ2准则:涡度不能区分纯剪切和涡,用 $Q = \frac{1}{2}(\|\Omega\|^2 - \|S\|^2) > 0$ 识别涡结构
Q准则在Fluent和STAR-CCM+里直接出吗?
Lid-driven cavity问题
涡度方程验证常用的基准问题有什么?
Lid-driven cavity(盖驱动腔体)是最广用的基准。正方形区域上壁以恒定速度 $U$ 移动,其他三壁静止。Ghia等(1982)的结果是公认的对比数据。
| Reynolds数 | 主涡中心 $(x/L, y/L)$ | 最小流函数 $\psi_{min}/(UL)$ |
|---|---|---|
| 100 | (0.6172, 0.7344) | $-0.1034$ |
| 400 | (0.5547, 0.6055) | $-0.1139$ |
| 1000 | (0.5313, 0.5625) | $-0.1179$ |
| 5000 | (0.5117, 0.5352) | $-0.1190$ |
Reynolds数高了涡的位置会变?
Re增大主涡中心向腔心移动,角部二次涡显著发展。Re=5000时下角有明显的三次涡。网格粗会捕捉不到,是收敛性的好指标。
圆柱周围的涡释放
圆柱后面的卡门涡列能用涡度方程算吗?
完全可以。Re=100的圆柱周围卡门涡的问题是涡度场非定常分析的经典例子。Strouhal数 $St = fD/U \approx 0.164$(Re=100)是验证指标。
实现要点:
- 计算域:圆柱上游 $10D$,下游 $30D$ 以上
- 网格:圆柱表面至少100点。$y^+<1$ 时壁层第一格厚 $\Delta y \approx D/Re^{0.5}$
- 时间步:涡释放周期内200步以上解析
- 初始扰动:完全对称初值无法触发涡释放,需加微小扰动
Fluent的具体设置?
选Transient,用Pressure-Based求解器和SIMPLE法。空间:Second Order Upwind,时间:Second Order Implicit。Monitor中记Lift coefficient的时间历程来确定涡释放周期。
网格设计要点
精确求解涡度要注意的网格问题有什么?
涡度是速度的微分,比速度场需要一阶更高的分辨率。具体是:
- 涡核分辨率:涡核直径内至少10个单元。涡移流的全路径都要细网格
- 数值扩散抑制:绝不用一阶风上差分,它会过度衰减涡。必须二阶以上
- 非结构网格注意:多面体网格比六面体的涡数值扩散大。如果能预测涡的路径,该区域用六面体网格效果好
涡远距离传播的问题,计算域会很大吧?
这正是涡法(vortex method)的用武之地。用拉格朗日方法追踪离散涡,无涡区域不用网格,计算量能大幅降低。但加入壁面会让边界处理复杂,得衡衡。
翼尖涡的管理——飞机winglet设计和CFD涡度分析
翼尖涡(Tip Vortex)是升力生成的副产物,作为诱导阻力的主因。Winglet(小翼)通过控制涡把诱导阻力降低10~15%,已成现代客机标配。CFD涡度分析中,用Q准则(Q=0.5(|Ω|²-|S|²)>0的区域可视化)追踪翼尖涡的核压力、涡强度(循环Γ)和远场衰减。Boeing 737 MAX的Advanced Technology Winglet设计中,CFD涡度分析比较多种winglet形状,最优化诱导阻力削减和结构重增长的trade-off,其设计过程已发表为CFD主导设计的教科书案例。
涡度方程的软件对比
涡度分析的主要CFD工具
各种CFD软件在涡度分析上有什么特点?
直接求解涡度方程的专用求解器很少,但从N-S方程得到涡度的功能各工具都有。涡度分析的特色对比如下:
| 工具 | 涡度输出 | 涡识别法 | 涡度基础定式化 |
|---|---|---|---|
| Ansys Fluent | 标准输出 | Q准则、λ2用UDF/Field Function | 无(原始变量法) |
| Ansys CFX | 标准输出 | CEL式计算可行 | 无 |
| STAR-CCM+ | 标准输出 | Q、λ2可用Field Function定义 | 无 |
| OpenFOAM | postProcess输出 | Q、λ2、Omega标准支持 | 可自己编程vorticity transport方程 |
只有OpenFOAM能直接求涡度方程?
OpenFOAM框架下可以自己编。以scalarTransportFoam为基础实现涡度输运方程求解器,再用Poisson方程算流函数。研究用的公开实现已有。
涡度的后处理功能对比
后处理中涡度相关的功能比较怎样?
后处理涡度分析功能对比如下:
| 功能 | Fluent | CFX-Post | STAR-CCM+ | ParaView(OpenFOAM) |
|---|---|---|---|---|
| 涡度矢量显示 | ○ | ○ | ○ | ○ |
| 涡度等值面 | ○ | ○ | ○ | ○ |
| Q准则 | UDF定义 | CEL定义 | Field Function | -func Q自动计算 |
| λ2准则 | UDF定义 | CEL定义 | Field Function | -func Lambda2自动计算 |
| enstrophy积分 | Report功能 | Expression | Report | integrate可算 |
| 涡核提取 | 无 | 无 | 有Vortex Core功能 | VTK涡核滤器 |
STAR-CCM+的涡核提取听起来很方便。
LES/DES中的涡度分析
乱流的涡度分析用LES/DES吧? 各工具有什么区别?
涡度分析在LES/DES中最重要,需要时间上追踪涡结构。
- Ansys Fluent:WALE、Smagorinsky-Lilly、Dynamic Smagorinsky。DES为SA-DES、SST-DES、SDES、SDES
- STAR-CCM+:LES用WALE、Dynamic Smagorinsky加WMLES(Wall-Modeled LES)。IDDES模型功能完整
- OpenFOAM:
pimpleFoam做LES/DES。子网格模型用LESModel指定。自定义模型易拓展
涡度分析用哪个工具最好?
研究开发要自定义,非Open openFOAM不行。产业用途要涡结构可视化和定量评估高效,STAR-CCM+有优势。Fluent通用性强,UDF拓展几乎无上限,但涡特化功能略少。
许可证成本的参考
费用面怎样?
涡度分析本身不需追加许可,但LES/DES的时间解析分析耗计算资源巨大。
| 工具 | 许可形式 | 年成本参考 | HPC并行加费 |
|---|---|---|---|
| Fluent | 商业许可 | 百万元量级 | 按核数加许可 |
| STAR-CCM+ | Power-on-Demand/token | 百万元量级 | token消耗灵活 |
| OpenFOAM | GPL(免费) | 0元 | 无(仅HW成本) |
大规模LES涡度分析用OpenFOAM+HPC集群成本最低?
许可证上确实如此,但要算入配置难度和缺乏官方支持的风险。初学者先在Fluent/STAR-CCM+小规模探索,经验成熟了再迁OpenFOAM+HPC,是聪明的策略。
涡度分析工具——「Q准则」的发明是1988年
现代CFD后处理涡可视化用的「Q准则」(Q-criterion)由Hunt等在1988年提出。涡度张量第二不变量 Q>0 的区域定义为「涡」,这个方法一目了然地显示飞机翼尖涡或发动机内乱流结构。35年来至今是所有主要工具的标准,说明「有意义的可视化」的重要性。
涡度方程的先端研究
涡法(Vortex Method)
涡度方程用不着网格也能解吧?
涡法(Vortex Method)是拉格朗日方式追踪离散涡要素的方法。涡度场用离散点涡或涡团的集合表达:
这里 $\Gamma_p$ 是涡要素的循环,$\zeta_\sigma$ 是核直径 $\sigma$ 的正则化核(如Gauss核 $\zeta_\sigma(r) = \frac{1}{2\pi\sigma^2} e^{-r^2/(2\sigma^2)}$)。
没网格怎样算速度场?
用Biot-Savart律从涡度恢复速度。二维里:
朴素算法$O(N^2)$复杂度,但用FMM(Fast Multipole Method)能降到$O(N)$。Greengard & Rokhlin(1987)的成果。
涡法适用什么问题?
涡局限的外部流动问题。翼后流、喷流混合、涡环碰撞等。反过来,有壁面的内部流或乱流壁层解析弱,需网格法-涡法混合研究中。
涡度和乱流的级联
涡度方程和乱流理论怎么关联?
乱流能级串联是从涡角度理解的:大尺度涡通过vortex stretching生成小尺度涡,最终粘性散逸。
enstrophy(涡度的平方积分)时间演化为:
第一项是stretching生成enstrophy,第二项是粘性散逸。3D乱流中生成可能超散逸,导致enstrophy有限时爆炸?(有限时特异问题)
有限时特异解决了吗?
这是千年大奖问题之一。3D N-S方程光滑解的有限时奇点性未解。超高分辨率DNS($4096^3$格子)数值调查中,但确定答案未得。
DNS、LES和涡度
DNS是直接求解涡度方程吗?
通常DNS求原始变量(速度-压力),然后后处理算涡度。不过涡度基础定式DNS也有研究,Kim & Moin(1985)开创。
LES中网格以下涡用子网格模型表达。WALE(Wall-Adapting Local Eddy-viscosity)模型用速度梯度张量的对称无迹部分,壁近自然趋零,优点突出:
最近的研究动向?
关注的研究热点:
- PINN(Physics-Informed Neural Network):涡度输运方程纳入损失函数的深学习流场预测
- 涡度约束法(Vorticity Confinement):数值扩散衰减的涡人为补强。航机后流解析已实用
- 格子Boltzmann法融合:LB法算速度,高效计算涡度研究
- GPU加速涡法:FMM的GPU实现,$10^7$量涡要素实时计算可能
PINN用涡度方程的好处?
实验数据只有部分速度时,涡度方程这个物理约束能填空白。PIV数据补完和超分辨已有应用。
涡度方程与天气预报——100年的挑战
涡度方程从1900年代初就用于气象学。挪威气象学家Vilhelm Bjerknes在1904年提议「计算大气涡度变化就能预报天气」。但那时无计算机,手算一个「6小时先预」要6个月!现代超算每秒数十亿次算涡度方程,2周先预报能在72小时内出。涡度先端研究至今与天气预报精度进步直结。
涡度方程的故障排查
涡度分析的常见问题
涡度分析结果不对时,怎样排查?
涡度分析特有的常见问题及应对汇总如下。
1. 涡在下游消失(数值扩散)
我算圆柱的卡门涡,结果下游涡很快消失。
最常见的问题。原因是数值扩散。查下面项:
| 检查项 | 常见原因 | 对策 |
|---|---|---|
| 离散化格式 | 用一阶风上差分 | 改二阶以上(QUICK、MUSCL、中心等) |
| 网格方向 | 流与格子线斜交 | 格子沿涡运动方向对齐 |
| 网格密度 | 涡核相对网格粗 | 涡核直径至少10个单元 |
| 网格种类 | 仅四面体网格 | 涡通路用六面体网格 |
Fluent的Spatial Discretization > Momentum改成Second Order Upwind或以上。理想用Bounded Central Differencing(LES用)数值扩散最小。
2. 涡释放不启动
圆柱非定常分析,涡一直不出来。
可能的原因和对策:
- 网格完全对称:数值扰动消失。网格加微小非对称,或初值加微小扰动
- 用定常分析:换Non-iterative Time Advancement或显式Transient
- 时间步太大:CFL < 1减小 $\Delta t$
- Re数太低:Re < 47圆柱后流稳定,无涡释放
3. 壁面涡度振荡
壁面涡度分布有齿状振荡,正常吗?
壁涡是 $\omega_{wall} = -\frac{\partial u_{tangential}}{\partial n}$,壁层速度梯度解析不精会振荡。对策:
- 确认 $y^+$:壁函数时 $30 < y^+ < 300$,解析壁时 $y^+ < 1
- 网格膨胀率:离壁膨胀率≤1.2
- Fluent技巧:用Node-Based Gradient改善壁层勾配
4. Enstrophy不守恒
非粘性流的enstrophy在增长,这是数值问题吗?
非粘性2D流enstrophy应守恒。增长说明格式有散逸/分散问题。
- 守恒型格式:平流项用散度形式(divergence form)
- 能保守格式:精确保守动能的离散化(Morinishi等1998)
- 谱方法:周期边界用FFT基础谱法最佳enstrophy守恒
OpenFOAM中的涡度调试
OpenFOAM中涡度错误的对处法?
常见问题和对策:
| 错误/症状 | 原因 | 对策 |
|---|---|---|
Maximum Courant Number: xxx很大 | CFL条件违反 | 设maxCo 0.5,启用adjustTimeStep yes |
| postProcess涡度失败 | functionObjects配置错 | system/controlDict加functions { vorticity { type vorticity; libs (fieldFunctionObjects); } } |
| 涡度场有尖刺 | 网格质量坏 | checkMesh -allGeometry -allTopology查,skewness>4的单元修 |
Fluent中涡度计算出NaN怎么办?
NaN通常是发散。涡度分析易发散的情况和对策:
- 高Re初过渡:从定常解启动转Transient,或初期数步用一阶再二阶切换
- Under-Relaxation:Pressure改0.2~0.3,Momentum改0.5~0.7
- Fluent TUI技巧:
/solve/set/equations/flow no
涡度是速度的微分,速度精度关键啊。
完全同意。涡度一阶微分、应变率张量也一阶微分,速度的二阶精度只给涡度一阶精度。要涡度高精度,速度要三阶以上,或充分网格分辨。
涡度「发散」是真故障还是数值误差
涡度方程直接求解(ψ-ω法)CFD代码常见的涡度急增。「发散了!」前冷静,检查:本质的流(如涡加强剥离)还是边界涡度边界条件设置差导致壁层异常堆积。一般壁面附近涡度细看可知原因。网格/格式问题最常见,不是求解器BUG。