本文译自作者的韩语原文。 阅读原文(한국어)
挂在天上的波浪 — 开尔文-亥姆霍兹不稳定性
密度相等且没有重力与表面张力时,增长率等于 kΔU/2,短波会一路跑掉。
天空偶尔挂着一排像冻住的海浪。钩状波峰卷起来,排得像海滩上的碎浪。照片像合成的。云是真的。开尔文-亥姆霍兹云。空气把波浪破碎前的一瞬间抄了下来。
这些钩子从快流与慢流相接的薄边界长出来。剪切层。这层边界为什么卷成漩涡,什么时候卷、什么时候安静,都压在一个增长率公式里。最后把一层薄涡层卷起来,做出那些钩子。
拨动剪切 、密度比、重力、表面张力的滑条,增长率曲线要么贴到地上,要么橙色带从两侧收窄。
把 降到 6 附近,曲线翻成 “STABLE”。加大重力或表面张力,不稳定带从两边缩短。密度比靠近 1 时,很弱的剪切也会把曲线顶起来。
挂在天上的波浪
开尔文-亥姆霍兹云并非唯一。同样的事到处都在发生。木星条纹裂开的边界,海水中不同密度的水互相滑动形成的内波,往咖啡里倒牛奶时瞬间出现的螺旋。就连一缕香烟的烟直直上升后突然散乱的那个点,也是同一个道理。
它们有一个共同点。两层速度不同的流体并排流动。上层快,下层慢。两者之间那层薄薄的边界在滑动。这个滑动(剪切)就是种子。
直觉上,你会觉得两股流只要并排擦过去就好。实际并非如此。边界面上哪怕只有极小的扰动,那扰动也会自行增长。这就是开尔文-亥姆霍兹不稳定性(由剪切引起的界面不稳定)。
两股流滑动时发生了什么
假设边界面上鼓起了一个小峰。上方的快流必须越过它。越过峰顶的通道变窄了。要保持流量相同,狭窄处的速度就会加快。
速度快,压强就低。这是伯努利原理(流动快的地方压强低)。峰顶上方压强降低,峰就被进一步向上吸。而在波谷处则相反,流动变慢、压强升高,波谷被压得更深。
归纳一下就是:峰更高,谷更深。小扰动喂养自己,这是一种正反馈。一旦开始就停不下来。这就是不稳定性的核心机制。
这里有一个常见误解:“重的水在下、轻的空气在上,不是很稳定吗?”只看重力,确实如此。但只要剪切足够强,就能压过重力的稳定化作用。稳定的分层在强风面前也会崩溃。
色散关系 — 哪些波长会增长
这场角力可以压缩成一个方程。上层(密度 )与下层(密度 )以相对速度 互相滑动,界面上作用着重力 和表面张力 。波数为 (单位长度内的波数)的扰动增长的速度,也就是增长率 ,如下所示。
是扰动变大的速度。根号里第一项是剪切(引起不稳定),第二项是重力(重流体在下则起稳定作用),第三项是表面张力(把界面绷紧而起稳定作用)。
若根号内为正, 为实数,扰动指数增长。若为负, 为虚数,扰动只振荡而不增长。不稳定条件就是根号内为正,也就是剪切项胜过其余两项。
看看最纯粹的情形。若两层密度相等(),且没有重力和表面张力,公式会简化得惊人。
波数越大,也就是波长越短,增长越快。若完全没有刹车,任意短的波长都会爆炸式增长。在真实流动中,粘性会在短波长一端切断这种失控。
重力和表面张力踩下刹车
两个刹车拦住不同的波长。重力项正比于 ,因此压制长波(小 )。表面张力项正比于 ,因此压制短波(大 )。二者之间留下一条不稳定波长的带。
若剪切较弱,这条带根本打不开。加大剪切,到某一刻会在某个特定波长处最先突破不稳定。这个阈值正是风开始在平静水面掀起波浪的最小风速。
代入空气与水,可得 ,最先突破的波长约为 1.7 cm。这是开尔文在19世纪算出的值。(真实水面由于粘性,在更低的风速下也会起涟漪——这是理想理论的局限。)
在连续分层的流动中,用理查森数(浮力与剪切之比)来判定。,其中 是浮力频率。根据迈尔斯-霍华德定理,在 的某处可能出现不稳定。它是预测大气与海洋中何时爆发湍流的实用判据。
前面曲线上的橙色带,就是在这个门槛上第一次打开的窗口。卷起来之后涡核里的速度分布,和 强制涡与自由涡 分成的那张图叠在一起。
用 Python 画出增长率曲线#
把公式直接搬进代码,就能立刻看出在任意风速下哪个波长最先增长。
import math
def kh_growth_rate(k, dU, rho_u, rho_l, g=9.81, T=0.072):
"""开尔文-亥姆霍兹模态的增长率 sigma(k)。"""
shear = rho_u * rho_l * dU**2 / (rho_u + rho_l)**2 # 不稳定化 (剪切)
gravity = g * (rho_l - rho_u) / ((rho_u + rho_l) * k) # 稳定长波
tension = T * k / (rho_u + rho_l) # 稳定短波
disc = shear - gravity - tension
return k * math.sqrt(disc) if disc > 0 else 0.0
rho_air, rho_water = 1.225, 1000.0
ks = [1 + 0.2 * i for i in range(4000)]
for dU in (3.0, 6.6, 10.0):
s = [kh_growth_rate(k, dU, rho_air, rho_water) for k in ks]
smax = max(s)
if smax > 0:
kstar = ks[s.index(smax)]
lam = 2 * math.pi / kstar * 100 # cm
print(f"dU={dU:4.1f} m/s -> unstable, lambda*={lam:5.2f} cm, sigma_max={smax:6.2f} /s")
else:
print(f"dU={dU:4.1f} m/s -> stable (no waves)")运行结果如下。
dU= 3.0 m/s -> stable (no waves)
dU= 6.6 m/s -> unstable, lambda*= 1.69 cm, sigma_max= 4.89 /s
dU=10.0 m/s -> unstable, lambda*= 0.78 cm, sigma_max=183.30 /s把涡数和剪切 的滑条往上推,卷起的速度和钩子的间距一起变。
一条平缓的线几秒内缠成猫眼。 加大就卷得更快。个数增加,钩子就切得更细。Reset 回到平坦的波浪。
风速每秒 3 m 时水面是静的。一过 6.6 m/s,最先长出来的是 cm、 /s 的涟漪。10 m/s 时 cm, /s。风速从 6.6 到 10,大约 1.5 倍,增长率却从 4.89 到 183.30,大约 37 倍。刚过门槛,根号里面很薄。
代码里的 1.69 cm 对应 ,大约 。把刹车全部拿掉的 ,代入 , 是每秒上千。输出的 4.89 /s 差着一个量级。6.6 m/s 是剪切与重力、表面张力几乎抵消的地方。密度是空气 1.225、水 1000,,。这四个数做出 m/s。波长从 1.69 cm 收到 0.78 cm,是短波一侧开始占上风。
线性之后才出现猫眼
不稳定刚开始长的时候,线性理论是对的。峰一大,故事就变了。界面不会停在波浪上,而是整个卷起来。薄涡层缠成一列涡。这就是钩状云,斯图尔特猫眼(cat's eye)。
增长率公式只看见线性阶段,也就是波刚变大的那段。猫眼是非线性阶段。界面在拉自己。每个点用无粘诱导速度拽邻居。波先立起来,然后才卷。
Ri 超过 1/4,单靠剪切卷不起来#
大于 1/4 时,迈尔斯-霍华德定理不允许不稳定。分层压住了剪切。空气与水的界面上, 低于 6.6 m/s,输出也是 stable。3 m/s 那一行一个波都不打开。
同一条界面若只靠张力断成液滴,是 液柱的 Plateau–Rayleigh 断裂。这里只看剪切能不能压过那份张力。像 那样没有刹车,短波会一直赢下去。粘性把那一头切掉。天上的钩子,是切断之前剪切已经赢了的位置。
相关文章
如果对您有帮助,请分享。