本文译自作者的韩语原文。 阅读原文(한국어)
20℃的水也会沸腾 — 空化的物理
面积比0.4、入口5 m/s时喉部静压约35.7 kPa,σ仍为正。收到0.3,静压才变成负的。
20℃的水也会沸腾。把压力降得够低就行。"水的沸点是100℃"这条课本句子省掉了脚注:在1个大气压下。真正决定沸腾的是饱和蒸气压和当地静压的平衡。水在泵入口或螺旋桨叶尖加速,静压下降,常温的水也会突然沸腾。这就是空化(cavitation)。今天的笔记写到开始条件、用来量风险的那一个数,以及气泡消失时冒出的万巴级冲击。
沸点不由温度决定
水的饱和蒸气压是温度的函数。
| 温度 | 饱和蒸气压 |
|---|---|
| 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℃之所以特别,只因为这个温度上 正好等于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倍,静压跌破蒸气压。 转为负的那一刻,就是空化开始。
把代码默认值代进那一行。,,。入口动压 是12500 Pa,即12.5 kPa。面积比0.4时喉部速度是 。喉部动压是78125 Pa。静压是 Pa,约35.7 kPa。仍高于代码里的蒸气压2339 Pa。表上的2.34 kPa是2340 Pa,和代码只差1 Pa。。正的。默认值不会点亮"负值即空化"。
面积比0.5的喉部速度是 。0.3则是 ,比值1.67。动压比是 。上面说的1.7倍和接近3倍,就是这个除法。0.3时静压降到约 Pa,穿过2339 Pa, 变负。入口分子是 kPa。除以12.5 kPa,参考 约7.9。喉部把动压吃掉以后,7.9降到2.67。60℃时表上的 是19.9 kPa, 倍。同样的12.5 kPa,余量薄得多。
喉部平段在代码里从 到 ,长度 0.16。上游收缩从 到 ,长 0.12。恢复段从 到 ,也是 0.12。样本从 0 到 1 共 400 个,间距 。 约 168, 约 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不足是最常见的原因。吸入损失、液体温度、转速都在削 。
- 船用螺旋桨:叶尖涡核最先沸腾,推进效率和可听噪声一起变差。潜艇故意压低转速。
- 阀门与节流孔:窄通道压力恢复不好,下游管道被侵蚀。
- 医用超声(HIFU):在组织里故意诱发空化,用来击碎结石或加热肿瘤。同一种溃灭,拿来当工具。
- 水锤:水轮机停机后,回流撞击关闭的阀门,短暂形成负压,并带上空化脉冲。
喉部面积比收到哪里
面积比0.4、入口5 m/s时,喉部静压留在约35.7 kPa, 约2.67。还没有气泡。收到0.3,静压变为负,代码里的负值条件打开。喉部速度从10到16.7的这一步,决定叶轮还能用多久。
掏金属的地方不是喉部,而是压力恢复的下游。把一个气泡推进到 明显为负的那一瞬,计算在 Keller–Miksis 与二次 Bjerknes 力 里。
相关文章
如果对您有帮助,请分享。