雨滴为什么不是泪滴形 — Weber数与Taylor类比破碎(TAB)
用TAB模型再现液滴在气流中破碎的原理
伞的图标和表情符号都把雨滴画成泪滴形——上尖下圆的那种形状。现实中根本没有这样的雨滴。直径超过2毫米的大液滴会被压成底部扁平的汉堡面包形。再大一些,中央会像口袋一样鼓起,最后破裂。
这篇文章用数字来处理这种"破裂"。用一个Weber数就能判定液滴在气流中是否、何时破碎。然后取O'Rourke和Amsden于1987年建立的TAB(Taylor Analogy Breakup)模型,在Python里让一个液滴振荡,把它炸开。这是用一根弹簧预测液滴命运的故事。
雨滴不是泪滴
下落的液滴内部有两种力在较量。一种是周围空气拍打表面的空气动力,把液滴向两侧压扁。另一种是表面张力,想把液滴重新拉回球形。
对小液滴而言,表面张力完全占上风。所以小液滴永远是球形。液滴越大,或相对速度越快,空气动力就越强。到某个时刻,表面张力再也撑不住。液滴变扁、鼓起,最终碎成细小的液滴。这个过程称为二次破碎(secondary breakup),与喷嘴刚喷出的液柱变成液滴的一次破碎相区别。
柴油发动机、火箭喷注器、农药喷雾。所有把燃料或液体打碎的装置都建立在这一现象之上。液滴越小,表面积越大,蒸发和燃烧越快。
Weber数 — 惯性战胜表面张力的刻度#
把两种力的比值化为一个数,就得到Weber数(惯性力/表面张力之比)。
其中是气体密度,是液滴与气体的相对速度,是液滴直径,是表面张力。分子是气体拍打液滴的动压,分母是表面张力抓住液滴的力。
小的时候,液滴只是安静地振荡。超过某个临界值,液滴就破碎。实验上这个临界Weber数大约在12附近。无论水滴还是燃料滴,在这个值以上都无法幸存。
这里还要加上衡量粘性作用的第二个无量纲数:Ohnesorge数(粘性力/√(惯性·表面张力))。
是液体粘度,是液体密度。粘性大的液滴(想象一滴蜂蜜)对变形的阻力很大。增大会把临界Weber数往上推,也就是更难破碎。
Taylor的类比:把液滴挂在弹簧上#
Weber数只告诉你液滴"会不会破"。要知道"何时、如何"破,必须求解液滴随时间的变形。这里出现了G.I. Taylor的洞见。他把振荡并变形的液滴,对应成一个弹簧–质量–阻尼振子。
把三种力一一配对。弹簧的回复力是表面张力。作用在质量上的外力是气体的空气动力阻力。阻尼力是液体的粘性。把这个类比写成方程,就得到关于变形量的二阶常微分方程。
是液滴赤道鼓起的程度(无量纲变形),是半径。右端第一项是空气推动的强迫力,第二项是表面张力的回复,第三项是粘性阻尼。系数由实验确定,O'Rourke–Amsden分别取。
当强迫力与回复力平衡,液滴会稳定在某个定常变形。
是以半径为基准的Weber数。要点在于变形与Weber数成正比。Weber翻倍,液滴也压扁一倍。
变形参数 y 与破碎的扳机#
TAB模型的规则很简单。一旦,液滴就破碎。是液滴赤道的鼓起等于半径的时刻。振幅增大到那个程度,液滴就无法保持圆形。
这里无阻尼振荡的性质很关键。从静止状态突然受到强迫力,振子不会停在定常值,而是过冲,最大达到。所以即使只有0.5,也就是定常变形只有一半,也可能在第一次振荡就达到而破裂。这种过冲在理论上降低了临界Weber数。
在下面的模拟中亲自操作一下。左边是迎着气流的液滴,右边是变形的轨迹。
把Weber调到12以下,曲线够不到红线(),只是振荡。调到12以上,第一个峰就越过红线,液滴粉碎。把Ohnesorge调大,曲线很快平息。粘性吃掉了振荡,在相同Weber下也能幸存。
Python — 让一个液滴振荡到破裂#
把上面的类比直接搬进代码。用无量纲时间积分,寻找越过1的时刻。
import numpy as np
def weber(rho_g, u, d, sigma):
"""气体惯性与表面张力之比(以直径为基准)。"""
return rho_g * u**2 * d / sigma
def tab_breakup(We, Oh, dt=0.01, t_max=40.0):
"""积分无量纲TAB振子,返回破碎时刻(无量纲tau)。
y>1 表示破碎;到最后 y<1 则返回 None(幸存)。"""
C_F, C_k, C_d, C_b = 1/3, 8.0, 5.0, 1/2
omega2 = C_k # 无量纲固有频率^2
forcing = (C_F / C_b) * (We / 2) # 定常变形 y_eq = forcing/omega2 = We/24
damp = C_d * Oh * np.sqrt(C_k) # Ohnesorge 增大阻尼
y, ydot, t = 0.0, 0.0, 0.0
while t < t_max:
acc = forcing - omega2 * y - damp * ydot
ydot += acc * dt
y += ydot * dt
t += dt
if y >= 1.0:
return t # 破碎!
return None
for We in [6, 10, 12, 20, 40]:
tau = tab_breakup(We, Oh=0.02)
tag = f"破碎 tau={tau:.2f}" if tau else "幸存"
print(f"We={We:5.1f} -> {tag}")输出直接读出了临界Weber数。
We= 6.0 -> 幸存
We= 10.0 -> 幸存
We= 12.0 -> 破碎 tau=1.14
We= 20.0 -> 破碎 tau=0.74
We= 40.0 -> 破碎 tau=0.50到We=10为止,过冲够不到1,液滴幸存。到We=12,第一个峰勉强越过红线。Weber越大,破碎时刻越短。打得越狠,破得越快。与物理精确吻合。
破碎模式的阶梯
越过临界值并不意味着每个液滴都以同样方式破碎。随着Weber数升高,破碎的形态会变化:振荡 → 袋状(bag) → 混合(multimode) → 薄膜剥离(sheet-thinning) → 灾变(catastrophic)。每个阶段都有实验能清晰区分的大致Weber边界。
推动下面的阶梯,观察每种模式的形态。
附近的袋状破碎,是液滴中央鼓成薄膜然后爆开的最低能量破碎。当达到数百,表面本身像波浪一样剥离,成为灾变破碎。TAB模型最初就是针对袋状破碎区域设计的。所以在低Weber下吻合得好,但在Weber极大的区域(如超过40MPa的高压喷射)会低估贯穿距离。那个区域要叠加KHRT或波动破碎模型。
抄进实验记录本的
TAB模型的本质是一句话。破碎的液滴是一根振荡的弹簧,破裂就是振幅超过半径的那一刻。
- Weber数 ≈ 12是液滴生存的边界。在它之上,表面张力输给惯性。
- 过冲降低了临界值。即使定常变形只有一半,也可能在第一次振荡就破裂。
- Ohnesorge数引入了粘性。粘稠的液滴振荡被阻尼,能撑得更久。
下次在暴雨中开车,看到一颗大液滴在挡风玻璃上被压扁并破裂时——那就是它越过Weber 12的瞬间。
如果对您有帮助,请分享。