质量守恒与连续性:原理与工程设置
连续性方程有两个版本:守恒形式与不可压形式。本文推导 Ma² 密度变化判据、给出逐面质量收支容差与声学时间步约束,并用一段 0.2 m × 0.3 m 空气管道算例完成可核对的手算。
质量守恒与连续性:原理与工程设置
连续性方程在 CFD 里被写成两个版本:守恒形式 与不可压形式 。后者不是前者的化简写法,而是"密度沿质点轨迹不变"这一额外假设的推论。一旦局部马赫数超过约 0.3,或密度变化本身就是待求信号(浮力对流、热声、相变质量传递),就必须回到守恒形式。质量守恒在 CFD 里不是一个需要额外施加的约束,而是压力方程的解所要满足的条件;也正因如此,"残差降下去了但流量对不上"是最常见的隐性错误。
连续性方程的两种写法各自成立在什么条件下
带质量源项的守恒形式为
其中 的量纲是 ,用于相变、质量注入或化学反应引起的净质量生成。把对流项展开,方程可以改写成随体形式
右端两项同时为零时才有 。注意 与"密度处处相同"是两回事:盐度分层水体中密度随深度单调增大,,但每个流体质点沿轨迹保持自身密度,因此仍然满足 ,用不可压求解器是合法的。反过来,刚性容器中被活塞压缩的气体,密度场一开始是均匀的,却因为 而出现非零的速度散度。判断依据应落在随体导数上,而不是落在密度场的空间梯度上。
多组分混合是常被误判的一类。理想气体在等温等压下混合时密度随组分变化,但按质量平均速度定义的速度场仍然满足 ,原因是扩散通量之和按定义为零。
连续性方程的两种形态
守恒形式对所有求解器通用:
不可压求解器不直接解它,而是把密度移出散度算子,得到运动学约束:
然后用压力方程强制它成立。压力方程由动量离散的预测量 构造:
是动量方程的对角系数。压力在这里扮演拉格朗日乘子的角色:它不改变总动量平衡,只负责把速度场投影到散度为零的空间。因此压力方程的收敛程度直接等于质量守恒的满足程度——这是设置时最需要记住的一条因果链。
一段可以逐位核对的手算
取矩形管道,截面 0.2 m × 0.3 m,20 ℃、1 atm 空气,物性取 、、,平均流速 。
流通面积 ,体积流量 ,质量流量 。马赫数 ,密度相对变化 ,即 0.096%,绝对量 。水力直径 ,雷诺数 。结论是:该工况用不可压求解器带来的密度误差不足 0.1%,完全在网格离散误差之下。
反过来,如果后处理得到出口质量流量 1.0826 kg/s,则 ,比 的验收线高出一个数量级,应判定为未收敛,而不是"结果看起来合理"。
rho, mu, a = 1.204, 1.825e-5, 343.2 # kg/m3, Pa.s, m/s
A, U = 0.2 * 0.3, 15.0 # m2, m/s
Dh = 2 * 0.2 * 0.3 / (0.2 + 0.3) # m
mdot, Ma = rho * U * A, U / a
print(f"mdot={mdot:.4f} kg/s Ma={Ma:.4f} "
f"drho/rho={0.5*Ma**2:.2e} Re={rho*U*Dh/mu:.3e}")
# mdot=1.0836 kg/s Ma=0.0437 drho/rho=9.55e-04 Re=2.375e+05
print(f"eps_m={(1.0836-1.0826)/1.0836:.2e}") # 9.23e-04
# OpenFOAM:逐 patch 取体积流量,再从日志提取连续性误差
postProcess -func "flowRatePatch(name=inlet)" -latestTime
postProcess -func "flowRatePatch(name=outlet)" -latestTime
grep -a "continuity errors" log.pimpleFoam | tail -5
# 日志三列含义:sum local(局部最大不平衡)/ global(全局净通量)/ cumulative
用 Ma² 判据量化密度变化到底有多大
等熵关系给出声速与密度的联系
忽略损失时动压与密度变化的关系由伯努利式给出 ,代入上式得到
这个二次关系决定了工程上把 Ma 当作可压缩性开关的合理性:Ma = 0.1 时密度变化仅 0.5%,Ma = 0.3 时是 4.5%,Ma = 0.5 时已经到 12.5%,Ma = 0.8 时达到 32%。若把 5% 作为可接受的密度误差上限,允许的最大马赫数是 。判据要用局部最大马赫数而非截面平均,叶顶、缝隙、阀门喉部的 Ma 常比主流高一个量级;热声问题中密度脉动本身就是输出信号,即使 Ma = 0.01 也需用可压缩求解器。
浮力驱动流动有对应的判据。Boussinesq 近似要求 ,水的体胀系数在 20 ℃ 附近约为 , 时 ,远小于 1,近似成立;空气在 300 K 时 , 就给出 ,已经处在近似的边缘,需要改用变密度或可压缩形式。
声学时间步与对流 CFL 是两套约束
用可压缩或声学求解时,时间步由最快的信号速度决定
而不可压 PISO 求解只受对流约束 (实践中取 0.5 以内),PIMPLE 配合至少 3 次外迭代可以把 Co 放到 5~10。取 、、,声学约束给出 ;若换成 的不可压时间步则是 ,相差约 12 倍。这是"算声场"与"只求定常场"在机时上的真实差距。
时间步与柯朗数
瞬态求解应开启自适应时间步,把流场柯朗数压在 1 以下:
// system/controlDict
adjustTimeStep yes;
maxCo 0.9;
maxDeltaT 1.0e-03;
// system/fvSolution —— 压力修正次数决定连续性误差
PIMPLE
{
nOuterCorrectors 2;
nCorrectors 3;
nNonOrthogonalCorrectors 1;
}
// system/controlDict —— 逐 patch 记录体积通量,用于质量审计
functions
{
inletFlow
{
type surfaceFieldValue;
surfaceFormat none;
fields (phi);
operation sum;
regionType patch;
name inlet;
writeFields false;
}
}
nCorrectors 是 PISO 的压力修正次数,取 2~3 时连续性误差通常能降到 量级;取 1 虽然便宜,但 global 项往往停留在 不再下降。nNonOrthogonalCorrectors 针对网格非正交性,取值应与最大非正交角挂钩:非正交角小于 取 1 即可, 以上建议取 2~3。
手算:入口流量与不平衡率
一条圆管水路:密度 ( 水),入口面积 ,入口速度 。质量流量
对应的体积流量 ,即 OpenFOAM 中入口 patch 上 ,出口应为 。
若求解器输出出口质量流量 ,不平衡率
即 ,对于工程验收偏高,应把 nCorrectors 提到 3 并检查出口边界类型。若出口质量流量为 ,不平衡率降到 ,即 ,可以接受。
时间步侧核对:单元尺度 ,若手动固定 ,则 ,已到上限;开启 adjustTimeStep 后求解器会把 压到 。
顺带核对流动状态:圆管水力直径 , 水 ,
处于充分湍流区,入口湍流量必须按 与湍流强度给定,否则前几倍管径内的质量分配会偏离。
故障模式与判定试验
| 现象 | 根因 | 判定试验 |
|---|---|---|
| 残差已降到 1e-5,出口浓度仍线性漂移 | 全局质量收支未闭合,误差被组分方程吸收 | 逐 patch 打印体积流量算 ;超过 即不收敛 |
| 封闭腔内压力随时间单调上升 | 入口给定流量而出口用固定压力,质量只进不出 | 输出总质量 随时间曲线,检查是否存在真实出口边界 |
| 低速浮力算例出现高频压力振荡 | 用不可压求解器承载了强密度变化, | 体积分 ,若超过 的 1% 则改用变密度形式 |
| Ma≈0.5 的喷管内激波位置整体偏移 | ,不可压假设失效 | 用 估算密度变化,超 5% 即换守恒形式 |
| 加大时间步后质量收支突然恶化 | Co > 1,面通量显式外推失稳 | 打印最大 Co,PISO 下超过 1 就把 减半复算 |
每步 global 连续性误差同号累积 |
压力方程未收敛到容差 | 把 nCorrectors 从 2 提到 3,看该项是否降到 |
| 残差很低但出入口流量差 2% | 出口速度用 fixedValue,与入口质量流量不匹配 |
逐 patch 对 phi 求和并与入口对比 |
| 不可压算例里密度出现 5% 变化 | 马赫数不低,不可压假设已失效 | 计算 并与容差比较 |
| 局部单元质量不守恒 | 网格非正交度大而修正次数不足 | nNonOrthogonalCorrectors 由 1 加到 3,看是否改善 |
| 瞬态解质量随时间缓慢漂移 | 关闭自适应步且柯朗数超过 1 | 监控 maxCo 与累计连续性误差 |
| 出入口流量相等但压力场不平 | 压力参考点缺失或与封闭边界冲突 | 检查 pressureReference 设置是否与边界类型相容 |
验收时要留的三条证据
第一条是逐 patch 的体积通量积分,覆盖全部进出口与壁面(壁面应为零),并给出不平衡率的具体数值。第二条是压力方程的最终残差与 nCorrectors 的对应关系,用来证明容差不是靠放松换来的。第三条是柯朗数的时间序列,确认整个统计窗口内没有被时间步放大掩盖的局部超限。三条证据都指向同一个物理量——面通量,因此它们可以互相校验:任一条对不上,优先怀疑边界类型而不是数值格式。
逐面质量收支该怎么核、容差取多少
把各边界质量流量求和,定义相对不平衡率
定常计算收敛后, 可以做到 量级(双精度舍入下限),工程验收通常取 ;若只能做到 ,说明线性求解容差太松、边界条件自相矛盾,或者根本没收敛。核算时必须逐 patch 列出流量,只报进出口两个数会掩盖其他 patch 上的补偿性误差。
参考资料
- Batchelor G.K., An Introduction to Fluid Dynamics, Cambridge University Press, 1967.
- Landau L.D., Lifshitz E.M., Fluid Mechanics, 2nd ed., Pergamon Press, 1987.
- Ferziger J.H., Perić M., Street R.L., Computational Methods for Fluid Dynamics, 4th ed., Springer, 2020.
- The OpenFOAM Foundation, OpenFOAM User Guide, The OpenFOAM Foundation, 2023.
- Patankar S.V., Numerical Heat Transfer and Fluid Flow, Hemisphere, 1980.
- Issa R.I., “Solution of the implicitly discretised fluid flow equations by operator-splitting”, Journal of Computational Physics, 62(1), 1986, 40-65.
- Rhie C.M., Chow W.L., “Numerical study of the turbulent flow past an airfoil with trailing edge separation”, AIAA Journal, 21(11), 1983, 1525-1532.
- Versteeg H.K., Malalasekera W., An Introduction to Computational Fluid Dynamics: The Finite Volume Method, 2nd ed., Pearson, 2007.