水要流多远才变成抛物线 — 入口段长度与Hagen–Poiseuille
管道入口发展段、Hagen–Poiseuille抛物线以及64/Re摩擦系数
把水龙头开到最大,水流会在一段距离内保持顺滑。管道内部也有类似的事发生。在入口处,水几乎感觉不到管壁的存在。速度分布几乎是平的。可是流过一段之后,断面速度分布就变成一条光滑的抛物线。中间这一段就是今天的主角。
管壁把消息传遍断面所需的距离
在管壁处流体不滑移(no-slip,壁面速度为零)。这个条件不会在入口一下子传遍整个断面。
一开始只有壁面附近出现一层薄薄的边界层(速度急剧变化的近壁层)。流动越往前走,这层就越往内生长。当上下两侧边界层在管中心相遇的那一刻,速度分布不再改变。从这一点起就称为充分发展(fully developed)流动。
从入口到充分发展的距离叫做水力入口段长度 。层流中它由管径 和雷诺数(惯性力与黏性力之比)决定。
其中 是断面平均速度, 是密度, 是黏性系数。当 时,入口段长度可达管径的100倍。在细实验管路里若测点选错,测到的就是仍在发展中的流动。
在下面的模拟中亲手调节雷诺数吧。
把 Re 从100升到2000,橙色的“fully developed”线会向右移。入口处平坦的速度分布需要更长的距离才能落到抛物线上。
发展段的抛物线 — Hagen–Poiseuille#
一旦充分发展,轴向速度不再变化。此时 ,径向速度 。圆柱坐标下的动量方程随之简化。
压力梯度 是常数。在壁面施加 ,在中心施加 ,然后积分两次。
其中 是管半径, 是到中心的距离。结果很干净。中心线速度恰好是平均速度的两倍。这条抛物线就是Hagen–Poiseuille流动。
压力为何以恒定速率下降 — 摩擦系数
把抛物线在断面上取平均,平均速度就与压力梯度直接挂钩。
梯度是常数,意味着压力沿管道线性下降。把这份损失打包成一个无量纲数,就得到达西摩擦系数 。
层流摩擦系数只由雷诺数决定。管壁粗糙度根本不参与。下面拖动雷诺数,让点沿着摩擦系数曲线移动。
在 区间,点精确地贴着 直线。越过门槛后曲线拐弯,换上另一条规律。
2300这道门槛 — 从层流到湍流#
当 超过约2300,原本顺滑的流动开始破碎。旋涡掺混进来,过渡为湍流。
湍流中入口段长度反而变短。 大致停在10到60之间,与层流的100倍形成对比。代价是摩擦增大。光滑管的一条经验式就是Blasius公式。
指数从 变缓到 。即便提高雷诺数,摩擦也不再像以前那样快速下降。要以更大的压力推动同样的流量。
用Python重现入口段长度与摩擦#
用数字追踪一根小管道吧。
import numpy as np
def entrance_length(Re, D):
# 层流水力入口段长度 [m]
return 0.05 * Re * D
def poiseuille_profile(r, R, u_mean):
# 充分发展的层流速度分布 (Hagen-Poiseuille)
return 2.0 * u_mean * (1.0 - (r / R) ** 2)
def darcy_friction(Re):
# 层流摩擦系数 (Re < 2300)
return 64.0 / Re
D = 0.02 # 管径 [m]
rho, mu = 1000.0, 1e-3
u_mean = 0.08 # 平均速度 [m/s]
Re = rho * u_mean * D / mu
print(f"Re = {Re:.0f}") # Re = 1600
print(f"入口段长度 = {entrance_length(Re, D):.2f} m") # 1.60 m
print(f"中心速度 = {poiseuille_profile(0, D/2, u_mean):.3f} m/s") # 0.160
dpdx = -32 * mu * u_mean / D**2
print(f"压力梯度 = {dpdx:.2f} Pa/m") # -6.40 Pa/m
print(f"摩擦系数 f = {darcy_friction(Re):.4f}") # 0.0400一根直径2 cm的管,入口段长度却有1.6 m,是管径的80倍。实验台上那些短管路,大多处理的是仍在发展中的流动。
下次遇到管内流动时
管内流动的本质是“管壁的信息渗向中心的过程”。记住三点。
- 入口段里速度分布一直在变。入口段长度可伸长到 。
- 充分发展的层流是抛物线。中心速度是平均值的两倍,摩擦系数是 。
- 在 附近过渡。湍流发展快,但摩擦更大。
如果对您有帮助,请分享。