本文译自作者的韩语原文。 阅读原文(한국어)
层流是2.0000,湍流是1.0322 — 速度水头前面的那个系数
动能挂在速度的三次方上。所以用平均速度平方拼出来的速度水头,在层流管流里恰好只数了一半。
只拿着平均速度去用伯努利,一半的能量就不见了
同一根管子,同样的流量。流量除以断面积得到平均速度 。用这个 拼出 ,塞进能量方程。 到这一步谁都会做。
可是在层流管流里,这个值恰好是真实动能的一半。流量对,断面积也对,唯独能量差了100%。今天就把这个 差值的来源找出来,顺便看看湍流里它为什么缩到3%。做法是直接积分。
定义速度水头的时候,究竟积了什么
穿过断面的动能通量,是局部动能乘以局部质量通量再对面积积分。
是局部轴向速度, 是密度, 是断面积。被积函数里 出现了 三次。两次来自能量, 一次来自搬运质量。
而教科书的能量方程写成 。因为 ,这就是 。两者 之比就是动能修正系数 。动量方程有同样的处境,那边 出现两次,给出 。
剖面越平坦,两个系数越接近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.
在层流、幂律、亏损律之间切换剖面,观察右侧两根账目柱的高度差。示踪粒子按局部速度移动,所以抛物线 里只有中间的点跑远,湍流剖面几乎整块一起走。这个"整块一起走的程度"就是 。
层流管流里系数为什么恰好是2#
Hagen–Poiseuille 解是抛物线:,。令 , 分子和分母都落到闭式。
由于 ,得到 。同样的路子给出 。既不是近似也不是经验式,是整数比。
把分子再拆开,2为什么是整数就看见了。,从0积到1是 。乘上前面的 ,分子是 。分母 是 。四分之一除以八分之一,正好是2。 低一个次方, 的积分停在 。表里的1.3333是这个有理数切到小数第四位。 时 ,和输出的0.8167一致。
不是说"丢掉了一半能量"。它说的是:平均速度这 一个数 替代不了三次方积分。同一条抛物线的封闭解若从速度追起, 泊肃叶流动的解析解先把那个断面算完。 那边积出来的是速度,这边是这个速度的三次方。
用一个指数写出湍流剖面
湍流管流只在近壁处急剧变化,核心区几乎是平的。把这个形状用一个指数近似,就是幂律。
是离壁的距离, 是随雷诺数一起增大的指数。通常取 。这个剖面的平均速度积分闭合,有 解析解。
时是 。和层流的 放在一起,剖面钝了多少一眼就看出来。 是同一类积分, 所以只要知道 ,值就定了。
用 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%,按雷诺数散开的曲线会叠成 下的一条线。
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.
的 和 的 ,是在那条叠好的线上只改 再积分的结果。曲线条数加上去,叠出来的线也不会变粗。
数值积分在层流里原样复现了 和 。幂律的平均速度也和解析解到第四位相同。说明 积分器是对的。
雷诺数消失的那套坐标 — 速度亏损律
表格第二块不是用幂律做的,是用速度亏损律。把对数律在中心线写一次、在任意点写一次,相减,粘性 系数整个消掉。
是摩擦速度。右边既没有 也没有 。只剩下离壁多远。对断面取平均, 会掉出一个常数 ,而 把它和摩擦系数连起来。 粘性系数 在相减时整个消失,只剩下离壁的距离。上面叠成的那条线,就是这个常数3.75。
把 和 放进同一张表#
| 剖面 | 备注 | |||
|---|---|---|---|---|
| 层流抛物线 | 0.5000 | 2.0000 | 1.3333 | 精确有理数 |
| 幂律 | 0.8167 | 1.0584 | 1.0204 | 教科书默认值 |
| 幂律 | 0.8658 | 1.0307 | 1.0106 | 高雷诺数 |
| 亏损律 | — | 1.0835 | 1.0309 | |
| 亏损律 | — | 1.0227 | 1.0080 |
把湍流那四行除以 ,规律就出来了。 是 的2.7到2.8倍, 是 的 0.98倍。也就是说,这两个系数拴住的不是剖面形状,而是 摩擦系数这一个量。管子越粗糙 越大, 跟着变大。光滑管跑高雷诺数, 能降到1.02。
把 那一行直接除开。,,所以 。 是 。所谓2.7到2.8倍,就是这两行。 贴得更紧。 上 , 上也是 。动量修正和摩擦系数几乎一样大。
3 m/s、 时, 的速度水头是 m。层流乘上2得到0.9174 m,漏掉的0.4587 m就是那一半。 的1.0322乘在同一个底上是0.4735 m,差0.0148 m。 漏掉0.0383 m,也就是8.35%。损失水头有好几米的管路里,0.0148 m会被盖住,层流的0.4587 m会留在账上。
表里还看得出幂律和亏损律在同一雷诺数下给出略有差别的值。幂律在壁面斜率无穷大,在中心线上有折点。 两个近似,差别就在它们是近似这件事上。
这个系数真正改动数字的地方
最后一块是3 m/s 管流的速度水头。湍流里把 取成1,在 时漏掉0.0148 m。如果这段 管路的损失水头有好几米,可以忽略。层流里漏掉0.4587 m。同一个算式里,这是100%。
数字真正会动的地方是分开的。高粘度流体或细管是层流,。入口段的剖面还在长, 就停在1和2之间某处。出口总压按面积平均还是按质量通量加权,就是在 和 之间选。两个值对不上,不是求解器错了,是平均的定义不同。
写得像常数,定它的却是剖面。用手钉成1,层流的账会错掉一半。
教科书写下 就往下走的前提#
只在剖面完全平坦时成立。湍流里这个近似能用,不是因为湍流平,而是因为 小。 在 0.01 附近时 是1.03,这3%会被管路计算里别的不确定性淹掉。
所以判断标准不是"是不是湍流",而是" 有多大"。过渡把管内的层分成好几叠的过程,写在 雷诺临界与管流转捩里。 粗糙管、低雷诺数、层流 — 只要占一条,就把 重新积一次。算法就是上面代码那样。
相关文章
如果对您有帮助,请分享。