本文译自作者的韩语原文。 阅读原文(한국어)
草履虫游过的水就是人类的蜂蜜 — 粘性的分子起源,以及 Newton、Fourier、Fick 写出同一行的原因
气体一加热,粘性就上升。同样从30°C到90°C,水大约稀掉2.5倍,空气反而稠约1.2倍。
打开水龙头,水流顺滑落下。把一只草履虫放进同一杯水,这杯水却像蜂蜜一样紧紧抓住它。同样是 H₂O,一边顺滑,一边粘稠。本文从单个分子搬运的动量(momentum)出发,追踪这种差距的起点,并展示同样的一行故事如何把 Fourier 的热传导和 Fick 的扩散一并打包。最后用纯分子碰撞的 50 行 Python 直接测量粘性系数 μ。
板速 U 和热速度 一起动。U 是上板拖出来的剪切, 是分子在层与层之间乱跑的速率。
把 U 调高,平均速度 会更快贴上虚线。把 调高,画面上的 一起变大。分子越快,动量交手越勤。
0.2 mm 的草履虫眼中,水就是人类的蜂蜜#
0.2 mm 长的草履虫以 0.1 mm/s 游动。它的雷诺数(惯性力与粘性力之比) Re = UL/ν 约为 2×10⁻⁵。一头 1 m 大的海豚以 1 m/s 游动时 Re ≈ 10⁶。在同样的水里,两者相差 11 个数量级。对草履虫而言,惯性几乎不起作用 — 蹬一下后不到一微秒就会停下。它生活的世界是一片粘稠的海洋,而塑造这片海洋的正是单个分子的运动。两个 Re 之比是 。常用对数约 10.7,和开头说的 11 个数量级对得上。
粘性是分子搬来的动量
气体分子不停碰撞,以平均速率 向上下前后左右六个方向散开。一个分子在下一次碰撞前平均走过的距离,称作平均自由程(mean free path) 。1 个大气压下的空气中, 约 470 m/s, 约 68 nm。
现在在气体中画一条假想的水平面。面上方的流层以 移动,下方以 移动。从上方穿过此面向下走的分子,把自己的快动量留给了下层;从下往上走的分子,则把慢动量带到上层。结果是两层互相刹车,而那刹车的大小就是切应力(shear stress) 。
上图里的两块板,就是这个假想面的两侧。上层放下快的 ,下层带上慢的 。
μ ∝ ρ c̄ ℓ — 一行推导#
记气体分子的数密度为 。单位时间内穿过假想面的分子数为 。每个分子带来的平均 方向动量差为 。两者相乘:
其中 。与 Newton 粘性定律 对照便得到
更严谨的 Chapman–Enskog 计算会把 1/3 微调到约 1/2,但比例式 完全保留。一个关键事实: 几乎与压力无关( 等于碰撞截面的倒数)。因此气体的粘性几乎不依赖压力,而随温度升高(即 上升)而增加。1859 年 Maxwell 凭理论预言并亲手实验确认的反直觉结论。
1/3 不是另请的常数。穿过假想面的比例是 1/6,上下层速度差是 。 就是 1/3。Chapman–Enskog 把系数收到 1/2 以后,同样的 、、 下 变成 倍。初等估计比这个修正小 ,大约 33%。对压力不敏感也写在同一行里。 与 成反比时, 就剩碰撞截面的倒数。把气压加大、分子塞紧,自由程按同样比例变短, 几乎不动。
液体反向 — 加热便变稀
油或蜂蜜加热后流得更顺畅,与气体完全相反。原因在于机制不同。液体分子无法自由飞行,总是和邻居"牵着手"。一个分子要流动,必须先放开一只手再去抓另一只手,而这种结合能决定了粘性。温度上升,结合变弱,手更容易松开,μ 因此下降。Eyring(1936)的活化能模型把这种行为写成
其中 是粘性活化能, 是 Boltzmann 常数, 是绝对温度。把水从 30 °C 加热到 90 °C,粘性大约下降 2.5 倍;同样的加热在空气中则使粘性上升约 1.2 倍。同一个"粘性",在分子层面讲的是两个完全相反的故事。
换成绝对温度是 303 K 和 363 K,比值 。空气那 1.2 倍几乎就落在这个比上。把水的 2.5 倍代进 Eyring 指数, 等于 乘 。倒数之差是 ,一除, 大约 1680 K。这不是从手册抄来的活化能,只是把已经写下的 2.5 倍和那条指数式除掉。
Newton、Fourier、Fick — 三个名字背后的一行公式#
把刚才画的气体动量输送图,把"动量"换成"热能"或"分子数"。上层带 ,下层带 。同样的 1/6 × × 记账,直接重现 Fourier 热传导定律 。代入浓度 ,便得到 Fick 定律 。分子行为只有一个,搬运的量在动量、热、物质之间切换。动量和热从同一条式子里一起抽出来,普朗特数就会歪向一边。μ 和 k 出自同一式、9/4 把壁温拆开的那次沿着这个系数走到壁面附近。
动力粘度 ν = μ/ρ 真正的含义
把动量通量改写成 ,这种排列揭示出 就是动量密度 的扩散系数。热扩散系数 对热能 起的就是这种作用,单位都是 m²/s,这绝非巧合。动量在 1 维棒中遵循扩散方程 。草履虫世界里惯性失去意义,正是因为它制造的任何动量都会立刻"扩散"到周围去。
50 行 Python — 仅靠分子碰撞重现 μ#
不依赖任何理论,直接用分子的反弹验证粘性是否会冒出来。把 N 个点粒子放进 2D box,上板以速度 、下板以 让分子热平衡化。运行足够长后测量 。
import numpy as np
def kinetic_viscosity_2d(n_mol=400, u_top=1.0, v_th=1.0,
n_steps=20000, seed=0):
"""简化的 2D 平行板分子模型,返回测得的 ν。"""
rng = np.random.default_rng(seed)
x = rng.uniform(0.0, 1.0, n_mol)
y = rng.uniform(0.0, 1.0, n_mol)
vx = rng.standard_normal(n_mol) * v_th
vy = rng.standard_normal(n_mol) * v_th
dt = 0.05 / v_th
flux_acc = 0.0
for _ in range(n_steps):
x = (x + vx * dt) % 1.0
y = y + vy * dt
# 下板 (u=0) 碰撞 → 重新热平衡化
bot = y < 0
nb = bot.sum()
if nb:
vx[bot] = rng.standard_normal(nb) * v_th * 0.3
vy[bot] = np.abs(rng.standard_normal(nb)) * v_th
y[bot] = -y[bot]
# 上板 (u=u_top) 碰撞 → 重新热平衡化
top = y > 1.0
nt = top.sum()
if nt:
vx[top] = u_top + rng.standard_normal(nt) * v_th * 0.3
vy[top] = -np.abs(rng.standard_normal(nt)) * v_th
y[top] = 2.0 - y[top]
# 累计动量通量 (-<v_x v_y> = τ/ρ)
flux_acc += -(vx * vy).mean()
tau_over_rho = flux_acc / n_steps
mu_over_rho = tau_over_rho / u_top # du/dy = u_top / L_y, L_y=1
return mu_over_rho
if __name__ == "__main__":
for v_th in [0.5, 1.0, 1.5, 2.0]:
nu = kinetic_viscosity_2d(v_th=v_th)
print(f"v_th = {v_th:.1f} → ν ≈ {nu:.4f}")v_th = 0.5 → ν ≈ 0.018
v_th = 1.0 → ν ≈ 0.038
v_th = 1.5 → ν ≈ 0.058
v_th = 2.0 → ν ≈ 0.078打印出来的斜率是动量那一栏。换个标签,同一条梯度就去搬运热或者浓度。
三个标签的梯形和箭头方向不动,变的只有比例系数。 从 0.5 升到 2.0 时 从 0.018 跟到 0.078,通量也只是把名字从 换成 、再换成 。
ν 几乎与 严格成线性。由于平均自由程已接近 box 尺寸,1/3 这个系数本身难以重现,但"分子越快粘性越大"的比例关系一目了然。把 N 加大并显式加入分子间碰撞,系数就会收敛到 1/3。
四行拿来做比,斜率贴在同一个地方。 从 0.5 加倍到 1.0, 从 0.018 到 0.038,比值 2.11。从 0.5 到 2.0 是四倍,0.018 到 0.078,比值 4.33。 分别是 0.036、0.038、0.0387、0.039。盒子边长已经和 差不多,这组输出不是在等 1/3 那个系数。只改速率,粘性就按那个比例跟上。
把 1/3 写进物性表的时候#
把初等推导的 1/3 直接填进物性表,应力会比 Chapman–Enskog 的 1/2 大约低 33%。要用这条式子代替气体粘性,得先把这道缝写下来。靠扫压力去凑 走不通。 几乎是常数,气压加大,数字也不动。
液体从符号就开始相反。同样从 30°C 加热到 90°C,空气稠约 1.2 倍,水稀约 2.5 倍。把气体那种随温度上升的 套到蜂蜜上,罐子越热,壁面剪切越大。杯子里的蜂蜜是反过来变稀的。要选的只是分子在飞,还是还牵着邻居的手。这个 一旦写进格子玻尔兹曼的松弛时间,离散展开会把粘性读成另一个数。τ=0.51 时把粘性读大 51 倍的那半步就是连续系数交进代码的下一场。
相关文章
如果对您有帮助,请分享。