Skip to content
cfd-lab:~/zh/posts/2026-04-30-cavitation-nu…● online

本文译自作者的韩语原文。 阅读原文(한국어)

NOTE #027DAY THU 유체역학DATE 2026.04.30UPDATED 2026.10.19READ 4 min read#Fluid-Dynamics#Cavitation#Multiphase#Bernoulli#Flow-Phenomena

20℃的水也会沸腾 — 空化的物理

面积比0.4、入口5 m/s时喉部静压约35.7 kPa,σ仍为正。收到0.3,静压才变成负的。

20℃的水也会沸腾。把压力降得够低就行。"水的沸点是100℃"这条课本句子省掉了脚注:在1个大气压下。真正决定沸腾的是饱和蒸气压和当地静压的平衡。水在泵入口或螺旋桨叶尖加速,静压下降,常温的水也会突然沸腾。这就是空化(cavitation)。今天的笔记写到开始条件、用来量风险的那一个数,以及气泡消失时冒出的万巴级冲击。

沸点不由温度决定

水的饱和蒸气压是温度的函数。

温度饱和蒸气压 pvp_v
20℃2.34 kPa(≈ 17.5 mmHg)
60℃19.9 kPa
100℃101.3 kPa(≈ 760 mmHg)
200℃1554 kPa(≈ 15 atm)

把入口速度和水温调高,或把喉部面积比调小,压力曲线待在蒸气压虚线下面的那段就会变长。

Top: venturi tube cross-section. Bubbles spawn where p(x) < p_vapor and collapse downstream (red ring). Bottom: pressure profile and vapor-pressure threshold. Reference: water at 20°C with p_vapor ≈ 2.3 kPa (Antoine fit used for slider).

表里20℃是2.34 kPa,60℃是19.9 kPa。喉部开到0.6,同样的入口速度仍留在虚线之上。下游的红环是压力恢复、气泡溃灭的位置。

100℃之所以特别,只因为这个温度上 pvp_v 正好等于1个大气压。压力锅里(约2个大气压)沸点升到120℃;珠峰上(0.3个大气压)水在70℃就沸腾。

倒过来:想煮20℃的水,把外压降到约2.5 kPa,即1个大气压的1/40。家用真空泵就够。

麻烦在于,流动的水根本不需要真空泵。

流动制造的低压 — Bernoulli的阴影#

无粘定常流里,沿一条流线伯努利方程成立。

p+12ρu2+ρgz=constp + \tfrac{1}{2}\rho u^2 + \rho g z = \text{const}

pp 是静压,ρ\rho 是密度,uu 是速度,zz 是高度。同一高度上,速度变快的地方静压下降。文丘里喉部、翼型吸力面、泵入口。凡是加速的地方,压力一起往下掉。

静压低于工作温度的 pvp_v,液体就维持不住。微小气核播种,蒸气泡长出来。空化不是加热,而是流体减压触发的沸腾。

空化数 σ — 用一个数衡量风险

设计者把"这台泵会不会空化"收成一个无量纲数,空化数。

σ=p∞−pv12ρU∞2\sigma = \frac{p_\infty - p_v}{\tfrac{1}{2}\rho U_\infty^2}

p∞p_\infty 是参考静压,U∞U_\infty 是参考速度,pvp_v 是工作温度下的饱和蒸气压。分子是蒸气压之上的余量,分母是流动能拿出的最大动压。

σ\sigma 越大越安全。动压全部转化也拉不到 pvp_v 以下。一旦 σ\sigma 跌破临界值 σi\sigma_i,空化开始(initiation)。每种外形的 σi\sigma_i 不同,通常靠水洞测量。

旋转机械里,NPSH(净正吸入扬程) 起同样的作用。NPSH不足就是 σ\sigma 偏小,泵在沸腾。这个常数跨流线是否还成立,要和 总压下降而耗散为零的伯努利计算 放在一起看。

气泡之死 — 万级冲击波

如果空化只是产生气泡,事情未必很大。破坏来自气泡的消失。

气泡漂过低压区,进入压力恢复的地方。球形气泡半径 R(t)R(t) 由 Rayleigh–Plesset 方程描述。

R R¨+32 R˙2=pB−p∞ρ−4νR˙R−2γρRR\,\ddot R + \tfrac{3}{2}\,\dot R^2 = \frac{p_B - p_\infty}{\rho} - \frac{4\nu \dot R}{R} - \frac{2\gamma}{\rho R}

pBp_B 是泡内压力,γ\gamma 是表面张力,ν\nu 是运动粘度。外压远高于内压时,R¨≪0\ddot R \ll 0,气泡在微秒里溃灭。溃灭前液体速度接近声速,原地出现万巴量级的冲击。

这种冲击反复出现,金属表面被掏成麻点。泵叶轮、螺旋桨叶尖、水轮机转轮。空化侵蚀(erosion)的熟悉痕迹。

代码:在文丘里管中预测空化

给定截面积 A(x)A(x),连续方程和伯努利立刻给出压力分布。

import numpy as np
 
def venturi_pressure_field(x, area_ratio, U_in, rho=1000.0, p_in=101300.0):
    """以余弦形收缩再恢复的文丘里管。"""
    a0, a1, a2, a3 = 0.30, 0.42, 0.58, 0.70
    A = np.ones_like(x)
    m1 = (x >= a0) & (x < a1)
    s1 = 0.5 - 0.5 * np.cos(np.pi * (x[m1] - a0) / (a1 - a0))
    A[m1] = 1.0 + (area_ratio - 1.0) * s1
    A[(x >= a1) & (x <= a2)] = area_ratio
    m2 = (x > a2) & (x < a3)
    s2 = 0.5 - 0.5 * np.cos(np.pi * (x[m2] - a2) / (a3 - a2))
    A[m2] = area_ratio + (1.0 - area_ratio) * s2
 
    u = U_in / A                              # 连续方程
    p = p_in + 0.5 * rho * (U_in**2 - u**2)   # 伯努利
    return A, u, p
 
def cavitation_zone(p, p_vapor):
    """返回空化区段的索引。"""
    return np.where(p < p_vapor)[0]
 
x = np.linspace(0, 1, 400)
A, u, p = venturi_pressure_field(x, area_ratio=0.4, U_in=5.0)
p_vapor = 2339.0  # 20℃水的饱和蒸气压
 
zone = cavitation_zone(p, p_vapor)
sigma_min = (p.min() - p_vapor) / (0.5 * 1000.0 * 5.0**2)
 
print(f"最低静压: {p.min()/1000:.1f} kPa")
print(f"sigma_min = {sigma_min:.3f}   (负值即空化)")
print(f"空化长度: 管长的 {zone.size/x.size*100:.0f}%")

把 area_ratio 从0.5降到0.3,喉部速度大约变为1.7倍,动压接近3倍,静压跌破蒸气压。σmin⁡\sigma_{\min} 转为负的那一刻,就是空化开始。

把代码默认值代进那一行。ρ=1000\rho = 1000,Uin=5U_{in} = 5,pin=101300p_{in} = 101300。入口动压 12ρUin2\tfrac{1}{2}\rho U_{in}^2 是12500 Pa,即12.5 kPa。面积比0.4时喉部速度是 5/0.4=12.55/0.4 = 12.5。喉部动压是78125 Pa。静压是 101300+12500−78125=35675101300 + 12500 - 78125 = 35675 Pa,约35.7 kPa。仍高于代码里的蒸气压2339 Pa。表上的2.34 kPa是2340 Pa,和代码只差1 Pa。σmin⁡=(35675−2339)/12500≈2.67\sigma_{\min} = (35675 - 2339) / 12500 \approx 2.67。正的。默认值不会点亮"负值即空化"。

面积比0.5的喉部速度是 5/0.5=105/0.5 = 10。0.3则是 5/0.3≈16.75/0.3 \approx 16.7,比值1.67。动压比是 (0.5/0.3)2=25/9≈2.78(0.5/0.3)^2 = 25/9 \approx 2.78。上面说的1.7倍和接近3倍,就是这个除法。0.3时静压降到约 −2.51×104-2.51\times 10^{4} Pa,穿过2339 Pa,σmin⁡\sigma_{\min} 变负。入口分子是 101.3−2.34≈99101.3 - 2.34 \approx 99 kPa。除以12.5 kPa,参考 σ\sigma 约7.9。喉部把动压吃掉以后,7.9降到2.67。60℃时表上的 pvp_v 是19.9 kPa,19.9/2.34≈8.519.9/2.34 \approx 8.5 倍。同样的12.5 kPa,余量薄得多。

喉部平段在代码里从 a1=0.42a_1 = 0.42 到 a2=0.58a_2 = 0.58,长度 0.16。上游收缩从 a0=0.30a_0 = 0.30 到 a1a_1,长 0.12。恢复段从 a2a_2 到 a3=0.70a_3 = 0.70,也是 0.12。样本从 0 到 1 共 400 个,间距 1/3991/399。0.42×3990.42 \times 399 约 168,0.58×3990.58 \times 399 约 231,平段因此是 64 格,占全管 16%。面积比 0.4 时这 64 格的静压全是 35.7 kPa,高于 2339 Pa,空化长度的输出是 0%。面积比 0.3 时这 64 格都在蒸气压之下,斜坡还没算进去,输出也不会低于 16%。入口压力 101300 Pa 就是表上 100℃ 的蒸气压 101.3 kPa。100℃ 的水在入口已经处在沸腾压力。20℃ 的计算之所以还需要喉部,原因在这里。入口分子约 99 kPa,除以 12.5 kPa 得到参考 σ 约 7.9。面积比 0.4 时这个 7.9 只降到 2.67,64 格仍在 35.7 kPa。面积比 0.3 时同一批 64 格跌到蒸气压下面,打印出来的百分比不会低于 16。平段长度 0.16,两段斜坡各 0.12,加起来 0.40,管长的四成花在收缩和恢复上。

会在哪里遇到 — 泵、螺旋桨、医疗

  • 泵与水轮机:叶轮入口NPSH不足是最常见的原因。吸入损失、液体温度、转速都在削 σ\sigma。
  • 船用螺旋桨:叶尖涡核最先沸腾,推进效率和可听噪声一起变差。潜艇故意压低转速。
  • 阀门与节流孔:窄通道压力恢复不好,下游管道被侵蚀。
  • 医用超声(HIFU):在组织里故意诱发空化,用来击碎结石或加热肿瘤。同一种溃灭,拿来当工具。
  • 水锤:水轮机停机后,回流撞击关闭的阀门,短暂形成负压,并带上空化脉冲。

喉部面积比收到哪里

面积比0.4、入口5 m/s时,喉部静压留在约35.7 kPa,σmin⁡\sigma_{\min} 约2.67。还没有气泡。收到0.3,静压变为负,代码里的负值条件打开。喉部速度从10到16.7的这一步,决定叶轮还能用多久。

掏金属的地方不是喉部,而是压力恢复的下游。把一个气泡推进到 R¨\ddot R 明显为负的那一瞬,计算在 Keller–Miksis 与二次 Bjerknes 力 里。

如果对您有帮助,请分享。