空腔流(盖驱动)

分类:流体分析(CFD) | 整合版 2026-04-06
CAE visualization for lid driven cavity theory - technical simulation diagram
空腔流(盖驱动)

空腔流(盖驱动)的理论基础

概述

🧑‍🎓

老师,lid-driven cavity 是CFD中首个基准问题对吗?


🎓

是的。正方形空腔顶面(盖)以恒定速度水平滑动的问题。几何形状简单,边界条件明确,当Re数变化时会出现丰富的流动结构。Ghia et al. (1982) 的基准数据已被使用超过40年。


问题设置

🧑‍🎓

请讲解问题的定式化。


🎓

正方形空腔(边长 $L$)的顶壁以速度 $U$ 沿 $x$ 方向运动。其他3个壁面静止。支配方程为不可压缩Navier-Stokes方程。


$$ \nabla \cdot \mathbf{u} = 0 $$
$$ \frac{\partial \mathbf{u}}{\partial t} + (\mathbf{u} \cdot \nabla)\mathbf{u} = -\frac{1}{\rho}\nabla p + \nu \nabla^2 \mathbf{u} $$

🎓

无量纲参数只有 $Re = UL/\nu$ 一个。边界条件为:


  • 顶壁面:$u = U$, $v = 0$
  • 底壁面、左壁面、右壁面:$u = 0$, $v = 0$

流动结构的Re依赖性

🧑‍🎓

Re数如何影响流动?


🎓

可以如下整理:


Re主涡中心位置(坐标)角涡流动特性
100(0.6189, 0.7344)下角有微涡定常,主涡偏上偏右
400(0.5547, 0.6055)下两角有涡定常,主涡接近中心
1000(0.5313, 0.5625)下两角+左上角有涡定常,主涡接近中心
5000(0.5117, 0.5352)全四角有涡定常(2D),3D不稳定
10000(0.5117, 0.5313)涡的分层结构2D定常/弱非定常,3D转为湍流
🧑‍🎓

角涡就是在角处形成的小涡旋对吧。


🎓

是的。Moffatt (1964) 在理论上证明,在锐角处存在无限的涡列。各涡的强度按几何级数递减。在CFD中,只要解析出前2~3个涡就足够了,但需要在角处加密网格。


涡度-流函数定式化

🧑‍🎓

2D情况下通常用涡度-流函数求解吗?


🎓

在2D不可压缩流中,涡度-流函数定式化自动满足连续性方程,因此更高效。


$$ \frac{\partial \omega}{\partial t} + u\frac{\partial \omega}{\partial x} + v\frac{\partial \omega}{\partial y} = \nu \nabla^2 \omega $$
$$ \nabla^2 \psi = -\omega $$

其中涡度 $\omega = \partial v/\partial x - \partial u/\partial y$,流函数 $\psi$ 满足 $u = \partial \psi / \partial y$, $v = -\partial \psi / \partial x$。


🎓

但是,扩展到3D或可变密度流会很困难,所以通用CFD代码采用速度-压力定式化(原始变量定式化)作为标准。


盖的角处奇点

🧑‍🎓

盖的端点处速度不连续,这不会是问题吗?


🎓

很好的问题。在盖的角($(0,L)$ 和 $(L,L)$)处速度不连续。$u = U$(顶壁)和 $u = 0$(侧壁)不能同时成立。这是数学奇点,即使加细网格也不会收敛。


🎓

实务处理方法有:

  • 在离角几个网格单元处评估结果
  • 使用正则化条件(使盖的速度在角处平滑地过渡到零)
  • 承认奇点的存在,在足够细的网格下计算,确保非角区域的精度
Coffee Break 趣谈

Ghia (1982年)数据为何40年后仍被广泛引用

作为空腔流的"标准答案",Ghia等人在《计算物理学杂志》1982年发表的论文中的数据被全球使用。该论文包含Re=1000、3200、5000、10000等情况的速度分布表,至今每年被数百至数千篇论文引用。它能延续40年以上的原因是——"问题设置简单易重现,数据经过网格收敛且当时为最高水准"。开发新的CFD求解器或数值格式时,能否通过"Ghia基准"是首要检验点。

空腔流(盖驱动)的数值计算方法

数值方法的选择

🧑‍🎓

求解空腔流用什么方法最好?


🎓

空腔流是闭合区域,无进出口,这是其特殊性。压力的绝对值无法唯一确定,需要在某点固定参考压力。


方法适用范围备注
有限差分法(均匀网格)Re < $10^4$Ghia等人原始数据采用该方法
有限体积法(FVM通用商用CFD的标准。SIMPLE/PIMPLE耦合
有限元法(FEM通用Taylor-Hood单元(P2/P1)满足LBB条件
谱方法高精度计算Chebyshev多项式基。指数收敛
格子玻尔兹曼方法(LBM)Re < $10^4$ 左右壁面反弹边界条件实现简单

FVM 上的实现(SIMPLE法

🧑‍🎓

简单介绍一下SIMPLE法的步骤。


🎓

空腔流中SIMPLE迭代如下:


1. 假设压力场 $p^*$

2. 用 $p^*$ 求解动量方程,得到试速度 $\mathbf{u}^*$

3. 求解压力修正方程 $\nabla \cdot (\frac{1}{a_P} \nabla p') = \nabla \cdot \mathbf{u}^*$

4. 修正速度和压力:$p = p^* + \alpha_p p'$, $\mathbf{u} = \mathbf{u}^* - \frac{1}{a_P} \nabla p'$

5. 收敛检验。未收敛则回到第1步


🎓

空腔流无进出口,压力基准要在某点(如左下角单元)固定。OpenFOAM 中在 `fvSolution` 的 `p` 配置里指定 `reference cell` 和 `reference value`。


格子玻尔兹曼方法

🧑‍🎓

格子玻尔兹曼方法(LBM)也能解吗?


🎓

LBM在空腔流入门学习中很受欢迎。D2Q9模型(二维9速度)使用BGK碰撞算子就能简单实现。


$$ f_i(\mathbf{x} + \mathbf{c}_i \Delta t, t + \Delta t) = f_i(\mathbf{x}, t) - \frac{1}{\tau}[f_i(\mathbf{x}, t) - f_i^{eq}(\mathbf{x}, t)] $$

🎓

弛豫时间 $\tau$ 与动粘度的关系为 $\nu = c_s^2 (\tau - 0.5) \Delta t$,其中 $c_s = 1/\sqrt{3}$(格子声速)。顶壁面的移动用Zou-He边界条件实现。


🧑‍🎓

LBM就不用解压力-速度耦合了?


🎓

对。LBM是显式方法,无需迭代,并行化也容易。但高Re数时需要注意数值稳定性,通常采用MRT(多弛豫时间)模型或正则化方法。


Ghia 基准与比较方法

🧑‍🎓

如何与Ghia等人的数据比较?


🎓

比较对象有两个:


1. 空腔中央竖线($x = 0.5$)上的 $u$ 速度:顶壁处 $u = 1$,底壁处 $u = 0$,中间会有再循环产生的负 $u$

2. 空腔中央横线($y = 0.5$)上的 $v$ 速度:左壁附近为正,右壁附近为负


🎓

Ghia等人用 $129 \times 129$ 均匀网格计算了 Re = 100, 400, 1000, 3200, 5000, 7500, 10000 的数据。将这些离散点的值与自己的CFD结果比较,相对误差在 1% 以内就是好结果。

Coffee Break 趣谈

角涡成为"压力-速度耦合的钥匙孔"

盖驱动空腔的数值计算中,四个角附近会生成入套的微涡和三级涡。这些在理论上被称为"Moffatt涡"——无穷小涡的连锁,但数值计算受网格分辨率限制必然中断。有趣的是"能否准确重现这些嵌套涡"成为压力-速度耦合格式质量的试金石。SIMPLE、SIMPLEC、PISO等方法的对比基准就是看能否再现角涡的数目和形状。"能准确计算角部"实际上是很难的问题。

空腔流(盖驱动)的实务应用

实践步骤

🧑‍🎓

教一下实际做空腔流基准计算的步骤。


🎓

OpenFOAM为例说明。


1. 网格生成:用 `blockMeshDict` 定义 $N \times N$ 均匀网格。尝试 $N = 64, 128, 256$ 三个水平

2. 边界条件:顶壁设为 `movingWall` 速度 $U = (1, 0, 0)$,其他3壁为 `fixedValue (0 0 0)`

3. 物性:$\nu = 1/Re$(无量纲化:$U = 1$, $L = 1$)

4. 求解器:`icoFoam`(层流·非定常)或 `simpleFoam`(定常)

5. 后处理:用 `sampleDict` 提取中央线上的速度,与Ghia数据比较


网格收敛性

🧑‍🎓

需要多少分割才够?


🎓

所需的分辨率随Re数变化。


Re最低必要分割数Ghia的分割数推荐分割数
100$32 \times 32$$129 \times 129$$64 \times 64$
1000$64 \times 64$$129 \times 129$$128 \times 128$
5000$128 \times 128$$257 \times 257$$256 \times 256$
10000$256 \times 256$$257 \times 257$$512 \times 512$
🧑‍🎓

均匀网格不如在壁面附近加密更好吗?


🎓

完全同意。在壁面和角处集中加密,同样网格数可获得更高精度。OpenFOAM 中 `blockMesh` 的 `simpleGrading` 可在壁面方向进行拉伸(拉伸比5~10很有效)。


Ghia 数据的比较绘图

🧑‍🎓

Re = 1000 时的代表值是多少?


🎓

给出Ghia等人(1982)的Re = 1000主要数据。


$x = 0.5$ 上的 $u$ 速度


$y$$u$
1.00001.00000
0.97660.65928
0.96880.57492
0.5000-0.06080
0.0547-0.24533
0.00000.00000
🎓

特别是 $y \approx 0.05$ 附近的负 $u$(约$-0.25$)反映底壁附近的再循环。这个值对了,说明底角涡的结构被正确解析。


3D 空腔

🧑‍🎓

3D的空腔流也有研究吗?


🎓

有的。3D时加入跨向($z$方向)端壁效应。Koseff & Street (1984)的实验很著名。2D下Re = 3200定常的流动,在3D下变为非定常。


🎓

3D空腔的临界Re取决于跨向长径比(SAR),SAR = 3时,Re $\approx 800$ 出现3D不稳定性(Albensoeder & Kuhlmann 2006)。

Coffee Break 趣谈

涂料搅拌罐与空腔流的共通点

工厂的涂料搅拌罐在物理上接近空腔流——只不过是用搅拌叶而非盖的运动来驱动液体。罐内若有"死区(混合不到的停滞区域)",涂料会不均匀,沉淀出现。这个死区就对应空腔流中的"角附近低速区"。如果CFD能准确计算空腔流中副涡的位置和大小,对罐型设计的死区预测精度也会提高。学术基准问题直接关乎现场产品品质改进。

空腔流(盖驱动)的软件比较

工具的实现

🧑‍🎓

空腔流用什么CFD工具都能解吧。各工具有差别吗?


🎓

都能解,但作为教学·学习工具,易用性有差别。


工具设置容易度精度确认教育利用
ANSYS Fluent有教程Custom Field Function大学版许可
COMSOL几分钟内GUI完成直接比对理论解、参考解教学最优
OpenFOAMcavity教程面向初学者Python/GNUplot比较无偿学习最优
FEniCS/FiredrakePython脚本实现高阶FEM、自动微分科研教学向
PalabosLBM基础。C++cavity样例LBM学习最优

OpenFOAM 的 cavity 教程

🧑‍🎓

OpenFOAM 著名的cavity教程怎样?


🎓

OpenFOAM 的入门教程 `$FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity` 提供Re = 10的粗$20 \times 20$均匀网格空腔流。


🎓

要扩展为基准计算,可以:


  • 网格改为 $128 \times 128$ 以上(修改 `blockMeshDict` 的hex分割数)
  • 改变 $\nu$ 计算Re = 100, 400, 1000
  • 用 `sampleDict` 提取中央线数据
  • 用Python matplotlib与Ghia数据(文本文件下载)比图

ANSYS Fluent 的设置

🧑‍🎓

Fluent怎样设置?


🎓

Fluent的步骤如下:


1. Meshing:在正方形区域用Face Meshing生成 $128 \times 128$ 均匀网格

2. Setup:Viscous Model → Laminar,Fluid Material设置密度和粘度

3. Boundary Conditions:顶壁面设为Moving Wall($U = 1$ m/s,$x$ 方向),其他为Stationary Wall

4. Solution Methods:SIMPLE,Second Order Upwind

5. Reference Values:设置压力Operating Point(避免浮动压力)

6. Run:迭代3000~5000步,残差降至 $10^{-6}$ 以下收敛

7. Post:中央线上的XY Plot看速度分布


COMSOL 的设置

🧑‍🎓

COMSOL初学者友好吧。


🎓

COMSOL几步就搞定。


1. 2D模型 → 选择Laminar Flow (spf)

2. 创建正方形几何($1 \times 1$ m)

3. 上边设为Wall → Sliding Wall($U_w = 1$ m/s)

4. 其他3边为No Slip(默认)

5. Fluid Properties设置 $\mu$ 和 $\rho$(对应Re)

6. Mapped网格做均匀分割

7. Stationary Study求解

8. Line Graph显示中央线速度,与Ghia数据比较


🧑‍🎓

用多个工具解同一问题,对理解工具特性很有帮助。


🎓

是的。用OpenFOAM、Fluent、COMSOL分别解同一问题再比对,能充分理解各工具的特点。离散格式的影响也一目了然。

Coffee Break 趣谈

"与Ghia论文的比较"成为CFD求解器入门的必过关卡

学习CFD的人首先要确认自己的代码是否正常运行,而蓋驱动空腔与Ghia论文的比较就成为全球标准做法。原因很简单——"无需进出口边界""无需3D计算""无需实验装置就能验证答案"三个条件都满足。OpenFOAM教程包含它,商用求解器入门培训必有它。"我的空腔计算与Ghia论文吻合"在业界成为"CFD计算基础动作正确"的通行证。简单问题之所以能担此重任,正是因为它身兼教学、验证、求解器评估三职。

空腔流(盖驱动)的前沿研究

稳定性分析和分岔

🧑‍🎓

空腔流的稳定性分析怎样做?


🎓

以定常解为基态,追踪微扰动的增长率。用时间演化法(DNS追踪扰动幂次增长)或全局稳定性分析(求解一般化特征值问题)。


🎓

2D空腔的Hopf分岔约在Re $\approx 8000\text{--}8500$(Fortin等1997,Bruneau & Saad 2006)。这个值对网格分辨率敏感。3D时,离心不稳定性(Taylor-Goertler型)在Re $\approx 800\text{--}1000$ 出现。


正则化 盖驱动空腔

🧑‍🎓

有办法回避盖角处的奇点吗?


🎓

正则化盖驱动空腔通过使盖速度在角处平滑过渡为零,例如:


$$ u_{lid}(x) = U \cdot 16 x^2 (1 - x)^2 $$

🎓

这样奇点消失,网格收敛性改善。高精度基准(Botella & Peyret 1998的谱法解)就采用正则化。


高精度参考解

🧑‍🎓

比Ghia更精的参考解有吗?


🎓

有几项研究给出更高精度的参考解:


研究者方法Re网格/阶数精度
Ghia et al. (1982)FDM100-10000$257 \times 257$工程精度
Botella & Peyret (1998)谱法1000$N = 96$12位以上
Erturk et al. (2005)FDM(高阶)100-21000$601 \times 601$高精度
Bruneau & Saad (2006)多重网格FDM1000-10000$2048 \times 2048$含非定常解
🧑‍🎓

Botella & Peyret是12位精度?


🎓

谱法的指数收敛威力。但要注意Botella & Peyret用的是正则化空腔,有奇点的Ghia情况不能直接比。


机器学习应用

🧑‍🎓

空腔流在机器学习研究中也用?


🎓

经常在代理模型和PINN(物理信息神经网络)验证中使用。


  • PINN:Raissi等(2019)在包括空腔流的NS方程PINN求解中验证
  • 自编码器:不同Re的流场在隐空间中插值
  • 强化学习:空腔内主动控制(壁面吹吸)最优化

🧑‍🎓

PINN能不用数据求NS方程?


🎓

损失函数含NS残差,原则上无数据可解。但实际需要边界条件数据,高Re数收敛困难。Re $\leq 1000$的空腔流最适合验证PINN性能。

Coffee Break 趣谈

Re=8000超过后突然变3D——空腔流的"转折点"

2D空腔流随Re增加,在某个转折点会3D化。实验和LES研究表明,Re≈8000~10000时,流动开始在跨向(深度方向)变得不均匀,转为真正的3D湍流。2D的RANS计算察觉不到这个变化。建筑物和电子设备冷却等实际设计中,筐体内部"空腔"经常经历这个现象。"2D计算显示均匀混合,但实际有偏差"的背景可能是这个3D转变。Ghia数据是2D,而3D拓展至今仍是研究前沿。

空腔流(盖驱动)的故障处理

常见问题和对策

🧑‍🎓

空腔流计算会出什么故障?


1. 与Ghia 数据不符

🎓

检查点

  • 网格密度:Re = 1000最少 $64 \times 64$。$32 \times 32$ 会有5~10%误差
  • 空间离散化格式:一阶上风(First Order Upwind)的数值扩散会使涡变弱。至少用二阶精度
  • 参考点偏移:Ghia数据是 $129 \times 129$ 格点上的值。自己网格与其插值误差需注意
  • Re数定义:确认 $Re = UL/\nu$。$L$ 是空腔边长

2. 压力振荡

🧑‍🎓

压力等值线出现棋盘纹。


🎓

原因:共置点(速度和压力在同一格点)的Rhie-Chow插值不当导致。


对策

  • 确认Rhie-Chow momentum interpolation已启用(OpenFOAM默认启用)
  • 或用交错网格(速度和压力在不同格点,古典FDM代码)
  • 压力松弛因子设为 0.2~0.3

3. 高Re数不收敛

🎓

Re > 5000时非线性强,SIMPLE法收敛变慢。


对策

  • 伪时间进行法:用非定常求解器(PIMPLE)跑足够长的时间,让解收敛到定常
  • 续延法:从低Re(Re=100)的收敛解开始,逐步提升Re
  • 多重网格:压力方程用AMG预处理。OpenFOAM中用 `GAMG` 求解器

🧑‍🎓

逐步提升Re是好办法。


🎓

是的,parameter continuation。从Re=100 → 400 → 1000 → 3200 → 5000 → 10000逐步升,每步用前一步的解作初值。


4. 角涡无法解析

🎓

Moffatt涡按几何级数衰减,均匀网格难以解析。


对策:在角处按几何级数加密。OpenFOAM中 `blockMesh` 的 `simpleGrading` 设置壁面拉伸比为10~20。


5. 3D 计算与2D 结果不同

🧑‍🎓

3D计算结果与2D不同。


🎓

Re > 800左右会出现3D不稳定性(Taylor-Goertler涡),3D结果与2D不同属正常物理。


确认事项

  • 是否用了周期性边界(跨向)。若有端壁则有端壁效应
  • 跨向网格分辨率足够否(不稳定波长的1/10以下)
  • 先验证低Re(Re=100)2D和3D相同,再看高Re差异,分清是不稳定性还是数值误差

🧑‍🎓

一步步验证的态度很重要。


🎓

没错。空腔流看起来简单,却包含分岔现象、角处奇点、3D不稳定性等数值流体力学的本质问题。这正是它40年来作为基准问题历久弥新的原因。

Coffee Break 趣谈

"中央涡中心位置偏差"是网格还是数值扩散的锅

空腔流中"主涡中心与Ghia论文不符"时,首先怀疑网格分辨率。但其实还有别的原因——移流项离散化格式精度低(一阶上风差分)会使数值扩散导致涡"向下偏离"。至少要用二阶以上格式。再有,高Re(Re=10000)时,空腔可能从定常变为弱振荡解,如果用"残差达10⁻⁶就结束"的条件,会误认为"振荡不断、残差下降"为正常而过早停止。要同时看时间序列。

相关模拟器

用本领域的交互式模拟器体会理论

模拟器列表

相关领域

热分析V&V·品质保证结构分析
本文评价
感谢反馈!
有帮助
需更详
报告错误
有帮助
0
需更详
0
报告错误
0
作者:NovaSolver Contributors
匿名工程师及AI——网站地图
查看简介