如何使用 UliEngineering 在 Python 中计算泊肃叶流量

你可以使用 UliEngineering Python 库,借助泊肃叶定律轻松计算圆柱管道中层流的体积流量:

poiseuille_flow_rate.py
from UliEngineering.Physics.Viscosity import poiseuille_flow_rate
from UliEngineering.EngineerIO import *

# 计算半径为 5mm 的管道的流量
radius = 0.005  # 5mm,单位为米
pressure_drop = 1000.0  # Pa
length = 1.0  # m
viscosity = 0.001  # Pa·s(水)

Q = poiseuille_flow_rate(radius, pressure_drop, length, viscosity)
print(f"Flow rate: {format_value(Q, 'm³/s')}")

# 计算半径为 10mm 的管道的流量
radius = 0.01
Q = poiseuille_flow_rate(radius, pressure_drop, length, viscosity)
print(f"Flow rate (10mm pipe): {format_value(Q, 'm³/s')}")

# 计算更高压降下的流量
pressure_drop = 5000.0
Q = poiseuille_flow_rate(0.005, pressure_drop, length, viscosity)
print(f"Flow rate (5kPa drop): {format_value(Q, 'm³/s')}")

示例输出

poiseuille_flow_rate_output.txt
Flow rate: 4.91 mL/s
Flow rate (10mm pipe): 78.5 mL/s
Flow rate (5kPa drop): 24.5 mL/s

泊肃叶流量图

泊肃叶定律的表达式为:

$$ Q = \frac{\pi \cdot r^4 \cdot \Delta P}{8 \cdot \eta \cdot L} $$

其中 $Q$ 是体积流量,$r$ 是管道半径,$\Delta P$ 是沿管道的压降,$\eta$ 是动力粘度,$L$ 是管道长度。

泊肃叶定律描述了圆柱管道中的层流,适用于雷诺数低于约 2300 的情况。由于流量与半径的四次方密切相关,管道半径加倍会使流量增加 16 倍。

上图展示了在固定压降、长度和粘度下,流量随管道半径的变化情况。可以看到,随着半径增大,流量急剧上升,遵循 $r^4$ 的关系。

该定律是流体动力学的基础,广泛应用于从血流分析到管道设计和微流控等领域。

相关文章


绘图生成脚本

plot_poiseuille.py
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import numpy as np
import sys
sys.path.insert(0, '/home/uli/dev/UliEngineering')

from UliEngineering.Physics.Viscosity import poiseuille_flow_rate

# 用于绘图的管道半径范围
r = np.linspace(0.001, 0.01, 100)  # 1mm 到 10mm

# 创建图形
plt.figure(figsize=(10, 6))

# 固定参数
pressure_drop = 1000.0  # Pa
length = 1.0  # m
viscosity = 0.001  # Pa·s(类似水)

# 计算流量
Q = poiseuille_flow_rate(r, pressure_drop, length, viscosity) * 1e6  # 转换为 mL/s

plt.plot(r * 1000, Q, color='blue', linewidth=2)
plt.xlabel('Pipe Radius (mm)', fontsize=12)
plt.ylabel('Flow Rate (mL/s)', fontsize=12)
plt.title('Poiseuille Flow Rate vs Pipe Radius', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('poiseuille_plot.svg', format='svg', dpi=300)
print("Plot saved to poiseuille_plot.svg")

Check out similar posts by category: Physics, Python