Skip to content
cfd-lab:~/zh/posts/2026-09-17-kinetic-energ…● online

本文译自作者的韩语原文。 阅读原文(한국어)

NOTE #157DAY THU 유체역학DATE 2026.09.17UPDATED 2026.10.19READ 4 min read#Kinetic-Energy-Coefficient#Bernoulli#Turbulence#Poiseuille#Fluid-Mechanics

层流是2.0000,湍流是1.0322 — 速度水头前面的那个系数

动能挂在速度的三次方上。所以用平均速度平方拼出来的速度水头,在层流管流里恰好只数了一半。

只拿着平均速度去用伯努利,一半的能量就不见了

同一根管子,同样的流量。流量除以断面积得到平均速度 VV。用这个 VV 拼出 V2/2gV^2/2g,塞进能量方程。 到这一步谁都会做。

可是在层流管流里,这个值恰好是真实动能的一半。流量对,断面积也对,唯独能量差了100%。今天就把这个 差值的来源找出来,顺便看看湍流里它为什么缩到3%。做法是直接积分。

定义速度水头的时候,究竟积了什么

穿过断面的动能通量,是局部动能乘以局部质量通量再对面积积分。

E˙k=∫A12u2⋅ρu dA=ρ2∫Au3 dA\dot{E}_k = \int_A \frac{1}{2} u^2 \cdot \rho u \, dA = \frac{\rho}{2} \int_A u^3 \, dA

uu 是局部轴向速度,ρ\rho 是密度,AA 是断面积。被积函数里 uu 出现了 三次。两次来自能量, 一次来自搬运质量。

而教科书的能量方程写成 m˙V2/2\dot{m} V^2/2。因为 m˙=ρVA\dot{m} = \rho V A,这就是 ρV3A/2\rho V^3 A / 2。两者 之比就是动能修正系数 α\alpha。动量方程有同样的处境,那边 uu 出现两次,给出 β\beta。

α=∫Au3 dAV3A,β=∫Au2 dAV2A\alpha = \frac{\int_A u^3 \, dA}{V^3 A}, \qquad \beta = \frac{\int_A u^2 \, dA}{V^2 A}

剖面越平坦,两个系数越接近1。把剖面开关从层流拨到亏损律,右边账目柱的高度差会从2收到1.03附近。

Tracers move at the local velocity, so the parabola stretches far more than the blunt turbulent profile. The yellow bar is the kinetic energy the flow actually carries; the grey bar is what V²/2g alone would claim.

在层流、幂律、亏损律之间切换剖面,观察右侧两根账目柱的高度差。示踪粒子按局部速度移动,所以抛物线 里只有中间的点跑远,湍流剖面几乎整块一起走。这个"整块一起走的程度"就是 α\alpha。

层流管流里系数为什么恰好是2#

Hagen–Poiseuille 解是抛物线:u=Uc[1−(r/R)2]u = U_c \left[1 - (r/R)^2\right],V=Uc/2V = U_c/2。令 s=r/Rs = r/R, 分子和分母都落到闭式。

∫Au3 dA=2πR2Uc3∫01(1−s2)3s ds=πR2Uc34\int_A u^3 \, dA = 2\pi R^2 U_c^3 \int_0^1 (1-s^2)^3 s \, ds = \frac{\pi R^2 U_c^3}{4}

由于 V3A=(Uc/2)3πR2=πR2Uc3/8V^3 A = (U_c/2)^3 \pi R^2 = \pi R^2 U_c^3 / 8,得到 α=2\alpha = 2。同样的路子给出 β=4/3\beta = 4/3。既不是近似也不是经验式,是整数比。

把分子再拆开,2为什么是整数就看见了。(1−s2)3s=s−3s3+3s5−s7(1-s^2)^3 s = s - 3s^3 + 3s^5 - s^7,从0积到1是 1/2−3/4+1/2−1/8=1/81/2 - 3/4 + 1/2 - 1/8 = 1/8。乘上前面的 2πR2Uc32\pi R^2 U_c^3,分子是 πR2Uc3/4\pi R^2 U_c^3/4。分母 V3AV^3 A 是 πR2Uc3/8\pi R^2 U_c^3/8。四分之一除以八分之一,正好是2。β\beta 低一个次方,u2u^2 的积分停在 4/34/3。表里的1.3333是这个有理数切到小数第四位。n=7n=7 时 2n2/((n+1)(2n+1))=98/120=0.81666…2n^2/((n+1)(2n+1)) = 98/120 = 0.81666\ldots,和输出的0.8167一致。

α=2\alpha=2 不是说"丢掉了一半能量"。它说的是:平均速度这 一个数 替代不了三次方积分。同一条抛物线的封闭解若从速度追起, 泊肃叶流动的解析解先把那个断面算完。 那边积出来的是速度,这边是这个速度的三次方。

用一个指数写出湍流剖面

湍流管流只在近壁处急剧变化,核心区几乎是平的。把这个形状用一个指数近似,就是幂律。

uˉUc=(yR)1/n,y=R−r\frac{\bar{u}}{U_c} = \left(\frac{y}{R}\right)^{1/n}, \qquad y = R - r

yy 是离壁的距离,nn 是随雷诺数一起增大的指数。通常取 n=7n=7。这个剖面的平均速度积分闭合,有 解析解。

VUc=2n2(n+1)(2n+1)\frac{V}{U_c} = \frac{2n^2}{(n+1)(2n+1)}

n=7n=7 时是 0.81670.8167。和层流的 0.50.5 放在一起,剖面钝了多少一眼就看出来。α\alpha 是同一类积分, 所以只要知道 nn,值就定了。

用 Python 把四类剖面的账目并排写下来#

三个族(层流、幂律、亏损律)进同一个梯形积分器。不用外部包,只用标准库。半径方向40,000等分时, 层流结果与解析解在小数第四位上一致。

import math
 
R, M = 1.0, 40000                      # 半径,半径方向的分段数
dr = R / M
rs = [i * dr for i in range(M + 1)]
A = math.pi * R * R
 
def ring_integral(vals):
    """在断面上积分 f(r):∫ f · 2πr dr(梯形法)"""
    s = 0.0
    for i in range(M):
        a = vals[i] * 2.0 * math.pi * rs[i]
        b = vals[i + 1] * 2.0 * math.pi * rs[i + 1]
        s += 0.5 * (a + b) * dr
    return s
 
def ledger(u):
    """平均速度、动能修正系数 alpha、动量修正系数 beta"""
    vbar = ring_integral(u) / A
    al = ring_integral([x ** 3 for x in u]) / (vbar ** 3 * A)
    be = ring_integral([x ** 2 for x in u]) / (vbar ** 2 * A)
    return vbar, al, be
 
def poiseuille():
    return [1.0 - (r / R) ** 2 for r in rs]
 
def power_law(n):
    return [max(1.0 - r / R, 0.0) ** (1.0 / n) for r in rs]
 
def defect_law(ustar):
    """u/Vbar = 1 + (u*/Vbar)(3.75 - 2.5 ln(R/y)),y = R - r"""
    out = []
    for r in rs:
        y = max(R - r, 1e-9)
        out.append(1.0 + ustar * (3.75 - 2.5 * math.log(R / y)))
    return out
 
print(f"{'profile':<20}{'Vbar/Uc':>9}{'alpha':>9}{'beta':>8}")
vb, al_lam, be = ledger(poiseuille())
print(f"{'Poiseuille (laminar)':<20}{vb:9.4f}{al_lam:9.4f}{be:8.4f}")
for n in (6, 7, 8, 10):
    vb, al, be = ledger(power_law(n))
    exact = 2.0 * n * n / ((n + 1.0) * (2.0 * n + 1.0))
    print(f"{'power law n=' + str(n):<20}{vb:9.4f}{al:9.4f}{be:8.4f}   Vbar exact {exact:.4f}")
 
print()
cases = [("laminar", al_lam)]
print(f"{'Re':>8}{'f':>8}{'u*/Vbar':>9}{'Uc/Vbar':>9}{'alpha':>8}{'beta':>8}")
for Re in (1e4, 1e5, 1e6, 1e7):
    f = (0.790 * math.log(Re) - 1.64) ** -2.0        # Petukhov 摩擦系数
    us = math.sqrt(f / 8.0)                          # u*/Vbar
    u = defect_law(us)
    vb, al, be = ledger(u)
    print(f"{Re:8.0e}{f:8.4f}{us:9.4f}{max(u) / vb:9.4f}{al:8.4f}{be:8.4f}")
    cases.append((f"turbulent Re={Re:.0e}", al))
 
print()
V, g = 3.0, 9.81                                     # 3 m/s 管流,比较速度水头
base = V * V / (2 * g)
for name, al in (cases[0], cases[1], cases[3]):
    print(f"{name:<21}alpha={al:6.4f}  alpha·V²/2g = {al * base:6.4f} m  "
          f"alpha=1 missing {al * base - base:6.4f} m ({(al - 1) * 100:6.2f}%)")
profile               Vbar/Uc    alpha    beta
Poiseuille (laminar)   0.5000   2.0000  1.3333
power law n=6          0.7912   1.0768  1.0269   Vbar exact 0.7912
power law n=7          0.8167   1.0584  1.0204   Vbar exact 0.8167
power law n=8          0.8366   1.0460  1.0160   Vbar exact 0.8366
power law n=10         0.8658   1.0307  1.0106   Vbar exact 0.8658
 
      Re       f  u*/Vbar  Uc/Vbar   alpha    beta
   1e+04  0.0315   0.0627   1.2353  1.0835  1.0309
   1e+05  0.0180   0.0474   1.1779  1.0490  1.0177
   1e+06  0.0116   0.0381   1.1430  1.0322  1.0114
   1e+07  0.0081   0.0319   1.1195  1.0227  1.0080
 
laminar              alpha=2.0000  alpha·V²/2g = 0.9174 m  alpha=1 missing 0.4587 m (100.00%)
turbulent Re=1e+04   alpha=1.0835  alpha·V²/2g = 0.4970 m  alpha=1 missing 0.0383 m (  8.35%)
turbulent Re=1e+06   alpha=1.0322  alpha·V²/2g = 0.4735 m  alpha=1 missing 0.0148 m (  3.22%)

把亏损律滑块从0推到100%,按雷诺数散开的曲线会叠成 u∗u^* 下的一条线。

Drag collapse from 0 to 100%. On the left the Reynolds curves are clearly separated; dividing by u* and measuring from the centreline folds them onto one dashed line that has no Reynolds number in it at all.

Re=104Re=10^4 的 α=1.0835\alpha=1.0835 和 Re=106Re=10^6 的 α=1.0322\alpha=1.0322,是在那条叠好的线上只改 ff 再积分的结果。曲线条数加上去,叠出来的线也不会变粗。

数值积分在层流里原样复现了 2.00002.0000 和 1.33331.3333。幂律的平均速度也和解析解到第四位相同。说明 积分器是对的。

雷诺数消失的那套坐标 — 速度亏损律

表格第二块不是用幂律做的,是用速度亏损律。把对数律在中心线写一次、在任意点写一次,相减,粘性 系数整个消掉。

Uc−uˉu∗=2.5ln⁡Ry\frac{U_c - \bar{u}}{u^*} = 2.5 \ln \frac{R}{y}

u∗=τw/ρu^* = \sqrt{\tau_w/\rho} 是摩擦速度。右边既没有 ν\nu 也没有 ReRe。只剩下离壁多远。对断面取平均, 会掉出一个常数 Uc/u∗−V/u∗=3.75U_c/u^* - V/u^* = 3.75,而 u∗/V=f/8u^*/V = \sqrt{f/8} 把它和摩擦系数连起来。 粘性系数 ν\nu 在相减时整个消失,只剩下离壁的距离。上面叠成的那条线,就是这个常数3.75。

把 α\alpha 和 β\beta 放进同一张表#

剖面V/UcV/U_cα\alphaβ\beta备注
层流抛物线0.50002.00001.3333精确有理数
幂律 n=7n=70.81671.05841.0204教科书默认值
幂律 n=10n=100.86581.03071.0106高雷诺数
亏损律 Re=104Re=10^4—1.08351.0309f=0.0315f = 0.0315
亏损律 Re=107Re=10^7—1.02271.0080f=0.0081f = 0.0081

把湍流那四行除以 ff,规律就出来了。α−1\alpha - 1 是 ff 的2.7到2.8倍,β−1\beta - 1 是 ff 的 0.98倍。也就是说,这两个系数拴住的不是剖面形状,而是 摩擦系数这一个量。管子越粗糙 ff 越大, α\alpha 跟着变大。光滑管跑高雷诺数,α\alpha 能降到1.02。

把 Re=106Re=10^6 那一行直接除开。α−1=0.0322\alpha-1 = 0.0322,f=0.0116f = 0.0116,所以 0.0322/0.0116≈2.780.0322/0.0116 \approx 2.78。Re=104Re=10^4 是 0.0835/0.0315≈2.650.0835/0.0315 \approx 2.65。所谓2.7到2.8倍,就是这两行。β\beta 贴得更紧。Re=106Re=10^6 上 0.0114/0.0116≈0.980.0114/0.0116 \approx 0.98,Re=104Re=10^4 上也是 0.0309/0.0315≈0.980.0309/0.0315 \approx 0.98。动量修正和摩擦系数几乎一样大。

3 m/s、g=9.81g = 9.81 时,α=1\alpha=1 的速度水头是 V2/2g=9/19.62=0.4587V^2/2g = 9/19.62 = 0.4587 m。层流乘上2得到0.9174 m,漏掉的0.4587 m就是那一半。Re=106Re=10^6 的1.0322乘在同一个底上是0.4735 m,差0.0148 m。Re=104Re=10^4 漏掉0.0383 m,也就是8.35%。损失水头有好几米的管路里,0.0148 m会被盖住,层流的0.4587 m会留在账上。

表里还看得出幂律和亏损律在同一雷诺数下给出略有差别的值。幂律在壁面斜率无穷大,在中心线上有折点。 两个近似,差别就在它们是近似这件事上。

这个系数真正改动数字的地方

最后一块是3 m/s 管流的速度水头。湍流里把 α\alpha 取成1,在 Re=106Re=10^6 时漏掉0.0148 m。如果这段 管路的损失水头有好几米,可以忽略。层流里漏掉0.4587 m。同一个算式里,这是100%。

数字真正会动的地方是分开的。高粘度流体或细管是层流,α=2\alpha=2。入口段的剖面还在长,α\alpha 就停在1和2之间某处。出口总压按面积平均还是按质量通量加权,就是在 ∫u2\int u^2 和 ∫u3\int u^3 之间选。两个值对不上,不是求解器错了,是平均的定义不同。

α\alpha 写得像常数,定它的却是剖面。用手钉成1,层流的账会错掉一半。

教科书写下 α=1\alpha=1 就往下走的前提#

α=1\alpha=1 只在剖面完全平坦时成立。湍流里这个近似能用,不是因为湍流平,而是因为 ff 小。ff 在 0.01 附近时 α\alpha 是1.03,这3%会被管路计算里别的不确定性淹掉。

所以判断标准不是"是不是湍流",而是"ff 有多大"。过渡把管内的层分成好几叠的过程,写在 雷诺临界与管流转捩里。 粗糙管、低雷诺数、层流 — 只要占一条,就把 α\alpha 重新积一次。算法就是上面代码那样。

如果对您有帮助,请分享。