20℃的水也会沸腾 — 空化的物理
减压引发的沸腾、空化数、以及气泡溃灭的万级冲击。
20℃的水也会沸腾。只要把压力降得足够低就行。"水的沸点是100℃"这条课本结论隐藏着一个被省略的脚注:在1个大气压下。真正决定沸腾的并不是温度,而是饱和蒸气压与周围压力之间的平衡。当水在泵叶轮入口或船用螺旋桨叶尖加速,静压随之下降,常温的水也会突然沸腾。这就是空化(cavitation, 空蚀现象)。本文整理空化为何发生、如何用一个无量纲数衡量风险,以及气泡消失瞬间为何会激起万级冲击波。文末附一段在文丘里管中预测空化区的Python代码,以及一个可以亲手操作的模拟器。
沸点不由温度决定#
水的饱和蒸气压是温度的函数。
| 温度 | 饱和蒸气压 |
|---|---|
| 20℃ | 2.34 kPa(≈ 17.5 mmHg) |
| 60℃ | 19.9 kPa |
| 100℃ | 101.3 kPa(≈ 760 mmHg) |
| 200℃ | 1554 kPa(≈ 15 atm) |
100℃之所以听起来特别,只因为在该温度下 恰好等于1个大气压。在压力锅里(约2个大气压)沸点升至120℃;在珠峰之巅(0.3个大气压)水在70℃就沸腾。
把这个逻辑反过来:想煮20℃的水,只需把外界压力降到约2.5 kPa,即1个大气压的1/40。一个家用真空泵就足够把温水煮沸。
麻烦的是,流动的水根本不需要真空泵。
流动制造的低压 — Bernoulli的阴影#
在无粘定常流中,沿一条流线伯努利方程成立。
是静压, 是密度, 是速度, 是高度。在同一高度上,速度变快的位置静压必然下降。文丘里喉部、翼型负压面、泵叶轮入口 — 凡是流速被加快的地方,压力都会同时跳水。
如果继续推到极端,静压一旦低于工作温度对应的 ,液体就再也维持不住。微小气体核作种子,蒸气泡爆发式生长。这就是空化的诞生瞬间。
一句话总结:空化不是被加热出来的沸腾,而是由流体力学减压触发的沸腾。
空化数 σ — 用一个数衡量风险#
设计者把"这台泵会不会空化"压缩成一个无量纲数,空化数。
是参考点的静压, 是参考速度, 是工作温度下的饱和蒸气压。分子代表"蒸气压之上还剩多少压力余量",分母代表"流动能贡献的最大动压"。
越大越安全。即便流动充分加速,动压全部转化也不足以把静压拉到 之下。一旦 跌到临界值 以下,空化就开始(initiation)。每种翼型或叶轮的 不同,通常通过风洞或水洞实验测定。
旋转机械工程中,NPSH(净正吸入扬程) 起到同等作用。NPSH不足意味 偏小,泵就在沸腾。
气泡之死 — 万级冲击波#
如果空化只是产生气泡,问题倒不大。真正的破坏来自气泡的消亡。
气泡漂过低压区,被流动带入压力恢复的区域。在那里,气泡内的蒸气被周围液体猛然挤压。球形气泡半径 的演化由 Rayleigh–Plesset 方程刻画。
是气泡内压, 是表面张力, 是运动粘度。当外压远高于内压时,,气泡在微秒尺度上溃灭。崩溃前夜液体速度逼近声速;崩溃瞬间,气泡所处位置瞬间出现万级压强的冲击波。
这种冲击反复出现后,金属表面会像麻坑一样被掏空。泵叶轮、船舶螺旋桨叶尖、水轮机转轮 — 这些都是空化侵蚀(erosion)留下的熟悉痕迹。
代码:在文丘里管中预测空化#
只要给定截面积 ,连续方程和伯努利定理立刻给出整条压力分布。
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倍,静压轻而易举跌破蒸气压。 转为负值的那一刻,就是空化开始的信号。
亲手制造空化#
在下面的模拟器里直接拖动入口速度、喉部面积比、以及水温。
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).
把温度滑到60℃,在相同流速下空化要容易得多 — 蒸气压从约2 kPa跳到20 kPa。反过来把throat ratio放宽到0.6以上,适中的速度也激不起气泡。当下游气泡收缩为红色环时,你看到的就是溃灭瞬间。
你会在哪里遇到 — 泵、螺旋桨、医疗#
- 泵与水轮机: 叶轮入口NPSH不足是最常见原因。吸入管损失、液体温度、转速都会侵蚀 。
- 船用螺旋桨: 叶尖涡核最先发生空化,既损伤推进效率又制造可听噪声。潜艇刻意压低转速以保持安静。
- 阀门与节流孔: 狭窄通道压力恢复不良会侵蚀下游管道。
- 医用超声(HIFU): 在人体组织中刻意诱发空化,用以击碎结石或加热肿瘤 — 把蚕食螺旋桨的同种崩溃冲击当作治疗手段。
- 水锤: 水轮机停机瞬间,反向流动的水柱撞击关闭的阀门,瞬时形成负压区并伴随空化脉冲。
下次再看见气泡#
只需记住三个张力极限。
- 液体不需要加热也能沸腾,只要绝对压力跌破当前温度的 。
- 越小越危险。这就是设计者紧盯一个数的理由。
- 损伤来自气泡的崩溃而非诞生。要保护的是压力恢复的区域。
下次再展开泵吸入段图纸时,用一支粗荧光笔把NPSH裕度勾出来。那一条线决定叶轮的寿命。
如果对您有帮助,请分享。