TMS BOOK · ACADEMY 讲义

两相流、沸腾与冷凝仿真

大纲的完整展开版——讲师授课蓝本 / 学员自学材料

J3-04 两相流、沸腾与冷凝仿真:框架选型、相变源项与结果可信度

课程代码 J3-04 · 板块 J 仿真分析 CAE / J3 换热器·部件级 CFD 时长 约 4 小时(5 讲 + 1 次两相相变算例实操) 适合对象 两相/相变 CFD 专家;承接制冷剂直冷板、蒸发器/冷凝器、浸没冷却部件级仿真的 CAE 责任人;以及需要判读这类结果并据此改流道与分液的换热器结构工程师 前置 A2-03 两相流基础:沸腾、冷凝与流型 两相流基础:沸腾、冷凝与流型(干度、空泡率、流型、CHF 与干涸的本体);J2-01 CFD 基础、湍流模型与网格划分(Fluent/STAR-CCM+) CFD 基础、湍流模型与网格划分(有限体积、库朗数、y⁺ 与网格无关性的本体);A1-04 工程热力学与蒸气压缩制冷循环(log p-h 图判读) 蒸气压缩循环与 log p-h 图判读 本讲义定位 讲师授课蓝本 / 学员自学讲义,是 J3-04 课题的完整展开版


引言:云图很好看,而它答不出「那一支到底干没干」

两相相变 CFD 是这条线上最容易「做完了但不能用」的一类活。原因不是它难收敛——难收敛是显性的,跑不出来你自己就知道。真正的麻烦是它很容易跑出来:残差掉到 1e-5,云图上液相红一片、气相蓝一片、界面处一条漂亮的过渡带,动画里气泡一个个从壁面脱离往上走。把这张图放到评审会上,几乎没有人会当场质疑。

而它可能同时满足下面四条里的任意一条,且四条全部不报错、全部不在残差曲线上留痕:

  • Lee 模型的系数 C 是随手填的默认值,于是界面上残留着几 K 的过热度没被消掉。壁温因此系统性偏高、蒸发起始位置系统性偏后——而「偏」的方向恒定,看起来像一个可以靠标定别的东西补回来的偏差。
  • 时间步取大了,界面在一步之内跨过了两三个单元。锐界面格式被破坏,α 场被抹成一条宽过渡带;此时求解器不会报错,它只会给你一个「弥散版本」的答案,而弥散把局部干涸抹平了——你要找的那个现象恰好是被数值抹掉的那个。
  • 网格不足以解析界面曲率,CSF 表面张力项造出的伪流(spurious currents)速度与真实流动同量级。低流速的冷凝算例里这一条最致命:真流 0.2 m/s,伪流 0.2 m/s,你在看的那个流场有一半是数值噪声。
  • 用稳态算了一个只在瞬态下才存在的现象。台架上支路流量在摆、电芯温度此起彼伏,而仿真给了一个漂亮的稳态收敛解,两边的平均值还对得上——于是有人写下「仿真与试验吻合」。稳态解在结构上就不含失稳模式,它不可能对上,只可能碰巧平均值接近。

钉子①(全课第一根,下文简称「钉子①」):先定框架,再选相变模型——顺序反了会卡死在前处理,而卡死是好结果;顺序反了却硬凑出来,才是坏结果。最典型的形态是:有人在经典 VOF 下满界面找 RPI 壁面沸腾选项,找不到就断定「软件缺功能」。错的不是软件,是框架与相变模型没配对——RPI 三段热流分配是欧拉两流体框架下的壁面闭合,它需要一个独立求解的气相场来接收蒸发那一段热流;经典 VOF 只有一个共享速度场,没有地方接。该换的是框架,不是模型。这根钉子在第 1 讲立、第 2 讲兑现(每一个相变模型都写清它挂在哪个框架下)、第 4 讲在四个场景上各兑现一次。

钉子②(与钉子①配对,管「算出来的数敢不敢交」):两相相变 CFD 的交付物是一组带标定来源与不确定度的可测量,⛔ 不是相分布云图,也不是一个「干涸位置 = 279 mm」的裸数。第 5 讲的三层可信度判据(守恒闭环 → 网格与时间步收敛 → 与部件试验对标)是整门课唯一的放行闸。⚠ 代价必须说透:把一个没过闸的干涸位置交出去,后果不是「热仿真误差大一点」,而是它会被当作结构结论去改分液板、改流道、改冷媒充注——改的是一个本来可能没错的东西,而且改完之后台架仍然不对,那时候没有人会回头怀疑那张云图。

⚠ 两根钉子各自独立:①管「模型框架选得对不对」,②管「数敢不敢交出去」。框架选对了照样可能因为不过闸而不许交;反过来,一个框架选错的算例可能三层闸全过——因为闸看的是自洽性与对标,而一个自洽且被标定过的错框架完全可以在标定工况上对得很好,出界之后才崩。这就是第 5 讲最后要给「射程声明」的原因。

图1 本课的射程与上下游交接。中心一个圆角矩形写「J3-04 两相相变 CFD 的数值实现:框架、相变源项、稳定性、可信度」,框内竖排五行对应五讲:方法族选型、相变模型与系数、时间步与界面锐化、四类整车场景、对标与可信度。左侧一列三个方框是上游前置,各有箭头指进中心框,框内第二行写本课从它接手什么:A2-03 写干度、空泡率、流型图、池沸腾曲线、CHF 与干涸的物理本体,本课只接手其判据并把它数值化;J2-01 写有限体积离散、湍流模型、网格与库朗数的本体,本课只做界面侧的特化;A1-04 写循环与 log p-h 图判读,本课从它接过工况点。右侧一列五个方框是下游,各有箭头从中心框指出,框内第二行写本课交出什么:D2-02 直冷系统设计写干涸位置与分配裕度,本课不交控制策略;J1-02 一维制冷循环写边界与工况交接,本课不交系统充注分布;L1-01 焓差法部件试验写标定与对标口径,本课不定台架规程;G3-06 人字通道冷媒侧两相写 CFD 能回答什么这一分界;J3-06 电驱油冷写界面锐化与表面张力伪流的机理,本课是它的前置。中心框下方一个红框写禁止事项:不做无相变自由液面与旋转域(去 J3-06),不做一维系统级充注与压力分布(去 J1-02),不做台架规程与不确定度评定(去 L1-01 与 L7-03),不做关联式本体(去 A2-03)。最下方一条横向长条框写对标数据来源:可视化流道高速摄影与焓差法部件试验,本课只定对标口径不定台架。图上不出现任何数值。本图为课程边界示意,不代表任何项目的实际交付清单,不得据图取任何数值。
图1 从图上要读出三个判断:①本课是一个纯方法节点——左侧三条箭头全部标着「本课不重讲物理本体」,右侧五条箭头全部标着「本课只交方法侧产物」;②右侧 D2-02 那一支写的是「干涸位置与分配裕度,不交控制策略」,说明本课止步于「这条支路会不会干、在哪里干」,怎么调阀、怎么改分液是结构与控制侧的事;③底部横条把两类对标数据单列,说明相变系数的标定不在本课内部闭环,它必须出门去部件试验台拿。本图为边界示意,⛔ 不得据图取任何数值。

本课的符号与口径约定(先看这一节,⛔ 别跳)

⚠ 本课有四个与相邻课程同名或同量纲、而口径并不相同的量。这一层没有任何自动检查能替你看住,读者直接互代就会得出系统性偏乐观或偏悲观的结论。以下四条必须先钉住:

① 本课的 α 是「网格单元内某一相的体积分数」,⛔ 不是 A2-03 两相流基础:沸腾、冷凝与流型 与 J1-02 制冷循环一维建模与制冷剂物性 那个空泡率。这是本课最容易出事的一条。A2-03 两相流基础:沸腾、冷凝与流型 定义空泡率 α = A_g/(A_g+A_l),是一个流道截面上气相占的面积份额,它是一维/关联式语境里的量,配着滑移比 S 使用;J1-02 制冷循环一维建模与制冷剂物性 第 4 讲用的正是这个 α,并据它算段均两相密度。本课的 α 是 VOF/欧拉框架里每个网格单元的相体积分数,是一个三维场,取值 0~1,逐单元变化。两者的关系是:把本课的气相体积分数在一个截面上按面积加权平均,才得到 A2-03 两相流基础:沸腾、冷凝与流型 的空泡率——即 α_g^(A2-03) = (1/A_c)∫α_g dA。⇒ 本课一律写带下标的 α_l(液相体积分数)与 α_g(气相体积分数),且 α_l + α_g = 1;⛔ 全课不出现裸 α。要引 A2-03 两相流基础:沸腾、冷凝与流型 的空泡率时写全名「截面空泡率」并加上标。误用后果两个方向都危险:把 CFD 单元里的 α_g 直接当空泡率去查两相关联式,等于把一个局部值当成截面平均值用(近壁单元 α_g 可能是 1 而截面空泡率只有 0.6);反过来把一维模型给的截面空泡率当成 CFD 初场逐单元均匀铺进去,会把一个分层流初始化成弥散流,而 VOF 会花很多步去把它「重新分层」——那些步是纯浪费,且中间态可能触发不该有的相变。

② 本课的 α 与 J3-01 换热器芯体 CFD 与多孔介质模型 的 α 完全无关,两者甚至不同量纲。J3-01 换热器芯体 CFD 与多孔介质模型(换热器芯体 CFD 与多孔介质模型)在它的符号纪律里明写「α 一律指渗透率,单位 m²」,是 Darcy-Forchheimer 黏性阻力项里的那个系数。本课的 α_l/α_g 无量纲。两门课都在 J3 模块里、都做部件级 CFD、读者极可能同一周里读到两份,所以这一条必须点破:看到 α 先看有没有下标、有没有单位。带 l/g 下标且无量纲的是本课的相体积分数;带 m² 的是 J3-01 换热器芯体 CFD 与多孔介质模型 的渗透率。

③ 本课的 Co 是「界面库朗数」,与 J3-06 电驱油冷部件级 CFD:旋转域、自由液面与搅油损失的数值实现 同一口径,是 J2-01 CFD 基础、湍流模型与网格划分(Fluent/STAR-CCM+) 那个 CFL 的特化。J2-01 CFD 基础、湍流模型与网格划分(Fluent/STAR-CCM+) 已把 CFL = u·Δt/Δx 的完整口径讲透(显式格式下是稳定性约束、隐式下退化为时间精度约束、稳态里的伪时间步不按物理时间步理解),本课不重讲。本课与 J3-06 电驱油冷部件级 CFD:旋转域、自由液面与搅油损失的数值实现 共用同一条限定:速度取界面所在单元的界面运动速度、网格尺度取界面活动区的最小尺度——也就是说它是在一个很小的空间子集上算的,整场平均 CFL 完全可能只有零点几而界面处已经过 1。⚠ 再补一条本课特有的:几何重构类的界面追踪(VOF 的锐界面格式)即便挂在隐式求解器上,界面推进那一步仍然是显式的,Co 过 1 会直接破坏界面拓扑。把 Co_max 当成「可以放宽的精度参数」是错的。

④ 干度 x 直接沿用 A2-03 两相流基础:沸腾、冷凝与流型 的定义 x = ṁ_g/(ṁ_g+ṁ_l),本课不另立;⛔ 但必须区分它的两种算法。A2-03 两相流基础:沸腾、冷凝与流型 已经讲透「热力学干度与真实干度会分道」。落到 CFD 里这句话有一个具体的、每次都要做的动作:从 CFD 结果里报干度时,必须写清你是怎么算的——是拿截面上气相质量流量除以总质量流量(真实干度,只有解出了相分布才算得出,是本课的默认口径),还是拿截面平均焓做能量平衡反算(热力学干度,与一维模型同源、便于与 J1-02 制冷循环一维建模与制冷剂物性 对接)。两者在过冷沸腾段与干涸后可以差得很远。本课一律写 x_a(真实干度,actual) 与 x_e(热力学平衡干度,equilibrium),⛔ 不写裸 x。

其余符号在各讲首次出现处定义,全课清单见小结前的符号表。

物性口径:本课凡出现 R134a 具体物性值,一律来自 CoolProp 8.0.0 在指定饱和温度下现算(与 J1-02 制冷循环一维建模与制冷剂物性 同一物性源、同一版本,所以两门课的 h_fg 数值可以互相核对);凡出现氟化液、CO₂ 之外的假想工质,一律标明「教学假设值」。物性属于可给准确值的一类,因此本课给到小数位并写出来源;而凡是与平台、几何、工况绑定的量(热流密度、流量、支路数、网格尺度、经验系数)一律不给准确值,只给教学假设值或典型区间,见小结前的典型参考值表。

按任务导航

⚠ 这门课不必通读。下表左列是这条线上真实会发生的任务,右列是直接去处。表的后五行是本课不覆盖的任务——它们各自带着去向,⛔ 若你的任务落在那几行,请直接转到指定课程,本课不会给你答案。

你手上的任务 去哪一节
拿到一个两相算例,第一步要决定 VOF、Mixture 还是欧拉两流体 第 1 讲 1.2~1.4,图3、图5
在软件里找不到 RPI 壁面沸腾,要判断是我的框架错了还是软件缺功能 第 1 讲 1.5,图4
要给项目一个「这个方案要多少网格、能不能算」的开算前估计 第 1 讲 1.6,第 4 讲 4.3
Lee 模型的系数 C 到底填多少,有没有可算的判据 第 2 讲 2.2~2.3,图6
壁温算出来比试验高好几度,要判是相变模型欠弛豫还是换热系数不对 第 2 讲 2.3 与第 5 讲 5.4(两条判据必须一起看)
要配 RPI 三段热流分配,想知道哪个次模型主导结果 第 2 讲 2.4,图7
算冷凝,要决定膜状还是珠状、要不要单独建液膜 第 2 讲 2.5,图8
时间步该取多大,几条约束里哪一条是卡点 第 3 讲 3.2,图10
界面被抹成一团,要判是格式问题还是时间步问题 第 3 讲 3.3,图11
低流速冷凝算例里流场看着乱,怀疑是数值噪声 第 3 讲 3.4,图12
要算直冷板哪一支会提前干涸、余量还有多少 第 4 讲 4.1,图13
要判冷凝器网格该往哪一段加密 第 4 讲 4.2,图14
要做浸没冷却的槽级仿真,想知道能不能 VOF 硬解 第 4 讲 4.3,图15
算 CO₂ 跨临界,求解器在气冷器出口段来回震荡 第 4 讲 4.4,图16
要交一份能被评审接受的两相 CFD 报告 第 5 讲 5.2、5.5~5.6,图18
台架上支路流量在摆而仿真是稳态收敛的,要判这算不算「对上了」 第 5 讲 5.3,图17
要写沸腾/冷凝关联式本身,或查流型图 ⛔ 本课不覆盖 ⇒ A2-03 两相流基础:沸腾、冷凝与流型
要做无相变的自由液面 + 旋转域(油冷电驱搅油) ⛔ 本课不覆盖 ⇒ J3-06 电驱油冷部件级 CFD:旋转域、自由液面与搅油损失的数值实现
要做系统级充注分布、压力—质量联立与循环闭环 ⛔ 本课不覆盖 ⇒ J1-02 制冷循环一维建模与制冷剂物性
要定焓差法台架规程、测点埋设与不确定度评定 ⛔ 本课不覆盖 ⇒ L1-01 换热器性能试验(风洞焓差法)、L7-03 试验数据分析与不确定度评估
要做电池包液冷(单相)流道的流量均匀性 ⛔ 本课不覆盖 ⇒ J3-02 电池包液冷流道 CFD 与流量均匀性

第 1 讲 两相方法选型:先定框架,再选相变模型

单相 CFD 里「用哪个模型」基本上只是湍流模型的选择,选错了误差是量的。两相相变 CFD 不是——方法族的选择决定了你后面还能配哪些相变模型、能解析什么尺度的界面、以及这个算例要不要花十倍的算力。选错了不是误差大一点,是整条路走不通。

1.1 三个方法族到底在解什么方程

先把三个名字背后的方程数说清楚。⚠ 下面每一条都决定了后面能配什么相变模型,⛔ 别当成术语介绍跳过。

① VOF(Volume of Fluid,界面追踪)。两相共享一套速度场与压力场,另外多解一个相体积分数 α_l 的输运方程:

∂α_l/∂t + ∇·(α_l·u) = −ṁ‴/ρ_l

变量与单位:α_l 液相体积分数(无量纲,0~1);u 共享速度场(m/s);ṁ‴ 体积相变质量源,蒸发为正(kg/(m³·s));ρ_l 液相密度(kg/m³)。 适用条件:两相之间没有显著的相间滑移,即界面尺度远大于网格尺度、两相在同一单元里不会以「弥散颗粒 + 连续相」的方式共存。 失效边界:当界面结构小于网格(弥散气泡、雾状流),共享速度场这个前提直接不成立——此时 VOF 给出的不是「解析不足的正确答案」,而是一个物理上不存在的东西:一团被平均掉的、以液相速度运动的「灰色流体」。

物性按 α 混合:ρ = α_l·ρ_l + (1−α_l)·ρ_g,μ 同理。VOF 的核心能力是「界面在哪」这个几何信息,代价是它必须解析界面。

② Mixture(混合模型)。同样一套共享速度场与压力场,同样解 α 输运,但额外用一个代数式给出相间滑移速度(漂移通量 u_slip = f(ρ_l−ρ_g, 加速度, 粒径)),把「气泡比液体跑得快」这件事以代数方式补回来,而不是解第二套动量方程。⇒ 它的定位是弥散相、低算力:算得动大域,能表达浮升与分层趋势,但给不出界面几何。

适用条件:弥散相体积分数不太高(典型上限 10%~20%,标「典型」,超过之后相间作用不再能用代数漂移式概括);相间滑移由浮力与阻力平衡主导,不是由惯性主导。 失效边界:需要界面形状的场合(液膜、弹状气泡、液面破碎)、需要相间能量不平衡的场合(一相过热一相饱和)——Mixture 只有一个共享温度场,两相被强制热平衡,而过冷沸腾的本质恰恰是热力学非平衡(A2-03 两相流基础:沸腾、冷凝与流型 1.1 讲透了这件事)。

③ 欧拉-欧拉双流体(Eulerian two-fluid / EMP)。每一相各有自己的动量方程、能量方程和体积分数方程,两相共享一个压力场,靠相间作用闭合(曳力、升力、湍流扩散力、壁面润滑力、相间传热、相间传质)耦合起来。⇒ 方程数最多、相间闭合子模型最多、最难收敛,但它是唯一能表达「气相温度与液相温度不同」的框架——这正是壁面沸腾必须的。

适用条件:弥散相为主(泡状、雾状),或需要相间热力学非平衡;有可用的相间闭合子模型(曳力关联式、界面面积密度模型或群体平衡)。 失效边界:大界面分层流——双流体框架下没有界面几何,把一个分层流硬套双流体,会得到一个「上半格气相下半格液相各自流动、界面处靠曳力粘着」的近似,压降与换热都算不准;⇒ 此时要么回 VOF,要么用两者的混合(Multi-Fluid VOF:在界面能解析处用 VOF 重构、在弥散处用双流体,主流商用软件已提供)。

图2 三个两相方法族各自在解什么方程。横向并排三大列,从左到右分别是 VOF 界面追踪、Mixture 混合模型、欧拉-欧拉双流体。每一列自上而下分四层。第一层是标题条,写方法名与一句定位:VOF 写解析界面几何,Mixture 写弥散相低算力,欧拉双流体写相间可以不平衡。第二层是方程清单方框,逐条列出该框架实际求解的方程与个数:VOF 列共享动量三个分量、共享压力一个、共享能量一个、液相体积分数一个,合计六个,方框右下角写共享速度与温度各一套;Mixture 列同样六个方程,另加一行代数滑移速度式,标注非求解为代数闭合,方框右下角写共享速度一套但含代数滑移、共享温度一套;欧拉双流体列液相动量三个、气相动量三个、液相能量一个、气相能量一个、体积分数一个、共享压力一个,合计十个,方框右下角写两套速度、两套温度。第三层是相间闭合方框,写该框架需要额外提供哪些闭合:VOF 写表面张力 CSF 与界面锐化格式;Mixture 写漂移通量关联式与颗粒直径;欧拉双流体写曳力、升力、湍流扩散力、壁面润滑力、界面面积密度、相间传热与相间传质,共七项,并用红色标注这七项每一项都是关联式且各带标定范围。第四层是能力与代价方框,用三行对照:能不能给出界面几何,VOF 写能、Mixture 写不能、欧拉双流体写不能除非配 Multi-Fluid VOF;两相温度能不能不相等,VOF 写不能、Mixture 写不能、欧拉双流体写能;相对算力量级,VOF 写基准一倍、Mixture 写约零点八到一倍、欧拉双流体写三到八倍且标注典型区间不是保证值。三列下方一条横向长条框,写一句结论:第二层的方程数只差约一点七倍,而第四层的墙钟时间差三到八倍,差额来自相间闭合带来的刚性与迭代次数,不是来自方程个数。图上除方程个数与算力量级区间外不出现其他数值,算力量级为行业典型区间不得作为承诺值。本图为方法对照示意,不代表任何具体软件的实现细节,不得据图取任何数值。
图2 从图上要读出三个判断:①三列第二层的方程个数只差 6 比 10,而第四层的算力差 3~8 倍 ⇒ 代价不在方程个数上,在相间闭合造成的刚性上,所以「省一个方程」不是选型理由;②第四层中间一行「两相温度能不能不相等」只有欧拉双流体写「能」,⇒ 凡是要表达热力学非平衡的物理(过冷沸腾、壁面沸腾),框架已经被这一行钉死了;③第三层欧拉双流体那一格用红色标了七项闭合关联式,⇒ 它的自由度不是优势而是负担,七项里每一项都要你说得出标定范围。图上算力量级为行业典型区间,⛔ 不得作为任何平台的承诺值;本图为方法对照示意,⛔ 不代表任何具体软件的实现细节、⛔ 不得据图取任何数值。

1.2 第一条判据:界面结构能不能被网格解析

选型的第一问不是「这是什么流型」,而是一个可以在开算前手算的比值:

N_int = L_int / Δx

变量与单位:N_int 界面解析度(无量纲,单位「单元/界面特征尺寸」);L_int 界面结构的特征尺寸(m)——泡状流取气泡直径 D_b,环状流取液膜厚度 δ_f,分层流取界面波长;Δx 界面所在区域的网格尺度(m)。 适用条件:Δx 取的必须是界面活动区的尺度,⛔ 不是全域平均网格尺度。 失效边界:界面结构尺寸本身不唯一时(如泡径分布很宽)这条判据只能给出上下界,此时应按最小的那一档判——因为最小的那一档决定了「有没有一部分相分布是纯数值产物」。

判据(本课钉死,全课引用):

  • N_int ≥ 8:界面可解析 ⇒ VOF 可用,且可以配界面解析型相变(Lee/Tanasawa/Schrage)。8 是行业典型下限,标「典型」;要解析曲率驱动的现象(液滴聚并、Laplace 压力跳)通常要 16 以上。
  • 3 ≤ N_int < 8:灰区。VOF 能跑,但界面形状不可信,压降与换热都会带系统性偏差;此时要么加密、要么承认你只在算「相分布的趋势」而不是几何。
  • N_int < 3:界面不可解析 ⇒ VOF 在这里给出的是伪结果,必须走 Mixture 或欧拉双流体。

【算例 1-A:两个方向都算一遍,看判据怎么翻转】(全部为教学假设几何,⛔ 不对应任何平台、⛔ 不得取用)

情形甲:直冷扁管内的环状流液膜,δ_f = 40 μm,你打算用的界面区网格 Δx = 25 μm。

N_int = 40×10⁻⁶ / 25×10⁻⁶ = 1.6 ⇒ 落在 N_int < 3 档 ⇒ VOF 不可用于解析这层液膜。 要把它推到 8,需要 Δx ≤ 40/8 = 5 μm。

情形乙:同一根管的低干度段弹状气泡,气泡长度 ~3 mm、直径 ~0.9 mm(受扁管高度限制),Δx 仍取 25 μm。

N_int = 0.9×10⁻³ / 25×10⁻⁶ = 36 ⇒ 远超 8 ⇒ 同一根管、同一套网格,低干度段的弹状气泡完全可以 VOF 解析,而高干度段的液膜完全不能。

⇒ 这就是两相 CFD 与单相 CFD 最根本的差别:判据在同一个域内沿程翻转。你不可能用一个「够不够」的答案覆盖整条流道。落到操作上有三条出路,代价依次上升:①截域——只算你要的那一段,把上下游用边界条件接进来(最常用,第 4 讲 4.1 会做);②分区网格——高干度段局部加密到 5 μm 量级,代价是单元数与时间步同时恶化(Δx 减 5 倍,Δt 按 Co 约束也减 5 倍,总代价 5⁴ = 625 倍,第 3 讲会算);③换框架——高干度段改用带液膜子模型的方法,不去硬解那 40 μm。

1.3 第二条判据:流型与方法的匹配

第一条判据管「解析得动吗」,第二条管「这个框架的物理前提成立吗」。两条都要过。⚠ 常见的错是只过了第一条:网格够细,于是用 VOF 去算一个泡状流——网格确实解析得了单个气泡,可域里有几十万个气泡,你解析了它们,代价是算力爆炸而且没有任何额外信息,因为你要的答案(截面平均的换热与压降)本来就不需要每个气泡的形状。

流型分档承接 A2-03 两相流基础:沸腾、冷凝与流型 第 2 讲,本课只做「流型 → 方法」这一层映射:

流型(承 A2-03 两相流基础:沸腾、冷凝与流型) 界面特征 推荐框架 ⛔ 为什么不能用另一个
分层流 / 波状流 单一大界面,界面波长远大于网格 VOF 双流体没有界面几何,分层界面处只能靠曳力粘着,压降偏差大
塞状 / 弹状流 大气泡与液塞交替,界面清晰 VOF 同上;且弹状流的压降主要由界面形状与液膜厚度决定
环状流(液膜厚) 贴壁液膜 + 气芯,δ_f 可解析 VOF(或 VOF + 液膜子模型) 双流体的「液相」会被涂满整个截面,拿不到 δ_f
环状流(液膜薄)+ 夹带液滴 δ_f 数十微米 + 弥散液滴 Multi-Fluid VOF 或 VOF + 欧拉液滴 纯 VOF 解析不了液滴(N_int<3);纯双流体拿不到液膜
泡状流 大量弥散小气泡 欧拉双流体(配群体平衡)或 Mixture VOF 要逐个解析气泡,算力上不可行,且信息冗余
雾状流 / 干涸后 气相连续 + 弥散液滴 欧拉双流体 同上;且干涸后壁面无液膜,必须能表达气相过热

⚠ 表里最容易被跳过的是第四行。「环状流(薄膜)+ 夹带」是蒸发器高干度段与直冷板末端的真实流型,也就是你最关心干涸的那一段——而它恰恰是唯一一个单靠 VOF 或单靠双流体都不成立的行。⇒ 一个诚实的做法是:承认你算不了这一段的机理,改用「液膜质量守恒 + 夹带/沉积关联式」的降阶处理,把 CFD 用在能算的那部分上。第 4 讲 4.1 就是这么做的。

图3 界面解析度判据与它沿程翻转的方式。图分上下两块。上块是一根水平的扁管纵剖示意,从左到右画出四段:进口过冷液段画满液相色;低干度弹状段画三个拉长的大气泡与液塞交替,气泡直径标注约零点九毫米;中干度环状段画贴壁的两条液膜带与中间气芯,液膜厚度标注四十微米;末端近干涸段画极薄的断续液膜与气芯中的散点液滴,液滴直径标注约十微米。四段下方各画一个方框,写该段的界面特征尺寸与用同一套网格算出的界面解析度 N_int,分别是不适用、三十六、一点六、零点四。第五个方框写结论:同一根管同一套网格,N_int 沿程跨了近两个数量级。上块最右侧标注网格尺度 Δx 等于二十五微米,全段相同,用一条贯穿的虚线水平标尺表示。下块是一条横向的判据带,从左到右分三段并用不同底色:左段写 N_int 小于三,标不可解析,方法写必须走 Mixture 或欧拉双流体,底下补一行小字写此处 VOF 给出的是伪结果不是精度不足;中段写三到八,标灰区,方法写 VOF 能跑但界面几何不可信;右段写大于等于八,标可解析,方法写 VOF 可用并可配界面解析型相变,右端再标一格写大于等于十六时曲率驱动现象才可信。判据带下方用四条向下的引线把上块四段各自的 N_int 值落到判据带的对应位置上,可以看到弹状段落在最右、环状段落在最左、近干涸段落在最左之外。图上标注一行醒目文字:几何与网格尺度全部为教学假设值,不对应任何平台,不得取用;八与十六为行业典型下限,标典型,不是判定阈值。本图为判据示意,不得据图取任何尺寸或网格尺度。
图3 从图上要读出三个判断:①上块四段的 N_int 从 36 掉到 0.4,跨了近两个数量级,而网格尺度一个字没改 ⇒ 「这套网格够不够」这个问题在两相里没有单一答案;②下块判据带左段的小字写着「VOF 在这里给出的是伪结果不是精度不足」⇒ 这一档不能靠「误差大一点,先看趋势」蒙混,它给的东西没有对应的物理;③弹状段与环状段落在判据带的两个极端,⇒ 同一个算例里必然要么截域、要么分区、要么换框架,没有第四条路。图上几何与网格全部为教学假设值,8 与 16 为行业典型下限,⛔ 不得取用、⛔ 不得作为判定阈值。

1.4 第三条判据:你要交付的响应量是什么

前两条判据是物理侧的,第三条是交付侧的,而它常常能把前两条的结论直接推翻——因为一个你不需要的量,解析它没有价值。

把交付物摊开成四类,各自对框架的最低要求完全不同:

你要交付的量 最低框架要求 ⛔ 哪些东西不需要
段平均换热系数 / 总换热量 Mixture 甚至一维即可 ⛔ 不需要界面几何、不需要逐泡解析
压降与流量分配 Mixture 或双流体 ⛔ 不需要相变细节,需要的是空泡率沿程分布
局部壁温与干涸位置 必须能表达壁面液膜与热力学非平衡 ⇒ VOF+液膜 或 双流体+RPI 这是本课的主战场
界面形状 / 气泡尺寸分布 / 液滴夹带 VOF(解析)或 双流体+群体平衡(统计) ⛔ 两条路给的是两种东西:一个是几何、一个是分布函数

⚠ 这张表最重要的用法是反着用:如果你的交付物只在第一行,就不要因为「两相所以要 VOF」而去做一个解析界面的算例。本课见过的最贵的一类浪费,就是为了一个段平均换热系数去解析了三百万个气泡。

1.5 钉子①:框架决定了你能配哪些相变模型

现在把钉子①钉进去。相变模型不是可以自由挑选的一个下拉菜单——它挂在框架上,框架定了菜单就定了。

相变模型 它需要什么 挂在哪个框架下 ⛔ 在别的框架下为什么没有
Lee(体积质量源,∝ 过热/过冷度) 一个 α 场 + 一个温度场 VOF / Mixture / 双流体都可以 它是最通用的一个,代价是最粗糙
Tanasawa / Schrage(界面解析型,∝ 界面面积) 能算出界面法向与界面面积密度 VOF(需界面重构) Mixture 与双流体没有几何界面,界面面积只能靠关联式估,此时它退化成一个 Lee 型
Rohsenow 型亚网格核态沸腾(壁面热流分成单相 + 沸腾两段) 一个壁面 + 液相温度 VOF / 单相 + 沸腾修正 它不需要解析气泡,是发动机水套过冷沸腾的主流做法
RPI 三段热流分配(对流 + 淬灭 + 蒸发) 一个独立求解的气相场去接收蒸发那一段热流,且气液可以不同温 只有欧拉两流体(Fluent 需 Eulerian 或 Multi-Fluid VOF;STAR-CCM+ 需 EMP Wall Boiling) 经典 VOF 只有一个共享速度场与一个共享温度场,蒸发那一段热流没有地方接收——不是软件没做,是框架里不存在那个自由度

⇒ 这就是引言里那个「在经典 VOF 下找不到 RPI」的完整解释。它不是一个软件功能缺失的问题,是一个自由度不存在的问题:RPI 要把壁面热流分成三段,其中 q_evap 那一段的去处是「生成气相并把它以气相的温度带走」,而经典 VOF 里气相和液相被强制同温、共享一个速度场——那一段热流没有独立的接收方。⇒ 正确的动作是回到 1.1~1.4 重新过一遍框架判据,如果确实需要壁面沸腾的三段分配,就得付欧拉双流体那 3~8 倍的算力;如果付不起,就退到 Rohsenow 型亚网格沸腾,接受「拿不到气相温度、拿不到相分布」这个代价,把交付物降到「壁温 + 段平均换热」这一层。

图4 框架与相变模型的配对矩阵,以及顺序反了会撞在哪里。主体是一张矩阵图,横轴三列自左至右为 VOF 界面追踪、Mixture 混合模型、欧拉两流体,纵轴四行自上至下为 Lee 体积质量源、Tanasawa 与 Schrage 界面解析型、Rohsenow 型亚网格核态沸腾、RPI 三段壁面热流分配。矩阵十二格中,可配的格子画实心对勾并在格内写一行该组合的定位;不可配的格子画叉并在格内写一行原因。Lee 那一行三格全部可配,三格分别写最通用但最粗糙、可用于弥散相蒸发、可用于双流体但通常被更好的界面传质模型取代。Tanasawa 与 Schrage 那一行,VOF 格可配写需要界面重构给出界面法向与面积密度,Mixture 与双流体两格画叉写无几何界面,界面面积只能靠关联式估此时退化为 Lee 型。Rohsenow 那一行,VOF 格可配写不需要解析气泡是发动机水套过冷沸腾主流做法,Mixture 格标灰写可用但少见,双流体格标灰写通常改用 RPI。RPI 那一行,VOF 与 Mixture 两格画粗红叉并写同一句原因:没有独立求解的气相场去接收蒸发那一段热流,气液被强制同温,这一段热流没有接收方;双流体格画实心对勾并写只有这一格提供,Fluent 需 Eulerian 或 Multi-Fluid VOF,STAR-CCM+ 需 EMP Wall Boiling。矩阵右侧画一条自上而下的粗箭头标注正确顺序,箭头旁三段文字自上而下写第一步定界面解析度与流型,第二步定框架,第三步在该列里挑相变模型。矩阵左下方另画一条自下而上的红色虚线箭头标注错误顺序,旁边写先选中了 RPI 再去找框架,于是在 VOF 列上下找遍所有面板,箭头终点撞在 RPI 与 VOF 那个红叉格上并画一个碰撞标记,旁边写此处不是软件缺功能,是框架里不存在这个自由度。图上不出现任何数值。本图为配对关系示意,具体软件的菜单名称与版本相关,不代表任何版本的实际界面,不得据图取任何设置。
图4 从图上要读出三个判断:①RPI 那一行只有一格是通的,且两个红叉写的是同一句原因(没有接收方)⇒ 这不是三个独立的软件差异,是一条框架层的物理约束;②Tanasawa 那一行在 Mixture 与双流体格里写的是「退化为 Lee 型」而不是「不能用」⇒ 有些组合是能配上但配上之后变成了另一个模型,这比配不上更危险,因为它不报错;③右侧的正确顺序箭头是从上往下三步,左下的错误顺序箭头是从下往上,⇒ 顺序反了必然撞在红叉上,而撞上之前你会以为是软件的问题。本图为配对关系示意,具体软件菜单随版本变化,⛔ 不得据图取任何设置。

1.6 算力账:开算前就要算出来的那个数

选型的最后一步是把代价算出来。⚠ 这一步必须在开算之前做,因为「算了两周发现算不完」是这条线上最贵的失败形态——它花掉的不只是机时,是项目的时间窗口。

【算例 1-B:直冷扁管的网格量与算力账】(全部为教学假设几何与参数,⛔ 不对应任何平台、⛔ 不得取用)

设一块直冷板由 20 条并联扁管组成,单管断面 1.0 mm × 4.0 mm,管长 300 mm。目标是解析低干度段的弹状气泡(1.2 节情形乙判定为可解析),取界面区 Δx = 25 μm,为简化按全域均匀网格估:

断面单元数 = (1.0×10⁻³/25×10⁻⁶) × (4.0×10⁻³/25×10⁻⁶) = 40 × 160 = 6,400 轴向单元数 = 300×10⁻³/25×10⁻⁶ = 12,000 单管单元数 = 6,400 × 12,000 = 7.68×10⁷ 全板 20 管 = 1.54×10⁹ 单元

⇒ 结论一:全板 VOF 解析在结构上不可行(1.5×10⁹ 单元的瞬态两相算例不在任何常规工程算力的射程内)。⇒ 必须截域:只算一条扁管(7.68×10⁷ 仍然偏大),并且把管长再截。

继续:只算一条管的中段 30 mm:

单元数 = 6,400 × (30×10⁻³/25×10⁻⁶) = 6,400 × 1,200 = 7.68×10⁶ 单元 ⇒ 落进可算范围。

再算时间:取界面速度 2 m/s、Co_max = 0.25(第 3 讲会说明为什么取这么严):

Δt = 0.25 × 25×10⁻⁶ / 2 = 3.125×10⁻⁶ s 要算的物理时长:让流体走完 30 mm 至少要 30×10⁻³/2 = 0.015 s,取 3 个流经时间以获得准稳态 ⇒ 0.045 s 时间步数 = 0.045 / 3.125×10⁻⁶ = 14,400 步

⇒ 结论二:7.68×10⁶ 单元 × 14,400 步的瞬态两相算例是可做的,但它只覆盖 30 mm——而你真正关心的干涸发生在 280 mm 处。⇒ 这就把「CFD 该干什么」这个问题逼出来了:CFD 不去算整根管,它去算一段代表性流道,产出的是局部换热与相分布的机理理解 + 给一维模型标定用的闭合关系;整根管沿程的干度演化交给能量平衡与一维模型(第 4 讲 4.1 与第 5 讲 5.5 会把这条交接线画清楚)。

⚠ 这一段的结论请连着第 4 讲 4.3 一起看:在浸没冷却那个场景里,同样一笔算力账会得出更极端的结论——那里连「截一段」都救不了,必须换框架。

本讲小结:两相方法选型要过三条判据且顺序不能反——①界面解析度 N_int = L_int/Δx(≥8 可解析、<3 是伪结果,且它沿同一条流道翻转);②流型与框架匹配(VOF 管大界面、双流体管弥散相、环状流薄膜+夹带那一行两个都不成立);③交付的响应量决定最低框架要求,一个不需要的量解析它没有价值。三条过完才轮到相变模型,而框架已经把相变模型的菜单定死了——RPI 三段热流分配只在欧拉两流体下存在,因为经典 VOF 里蒸发那一段热流没有接收方(钉子①)。最后必须在开算前算一笔网格与时间步的账,它常常直接把「算整块板」这个想法否掉,逼出「CFD 算一段、一维算全程」的正确分工。

后面还有 4 讲正文 · 关键公式 · 案例拆解 · 常见误区 · 动手做

会员专属

后续为会员深水区内容——四库数据与深度拆解。

查看会员方案