如何使用 UliEngineering 在 Python 中计算雷诺数

你可以使用 UliEngineering Python 库轻松计算雷诺数。雷诺数是一个无量纲量,用于预测流体动力学中的流动模式:

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

# 计算管道中水流的雷诺数
density = 998.2  # kg/m³(水)
velocity = 1.0  # m/s
characteristic_length = 0.01  # 1 cm(管道直径)
viscosity = 0.001  # Pa·s(水)

Re = reynolds_number(density, velocity, characteristic_length, viscosity)
print(f"Reynolds number: {Re:.0f}")

# 计算气流的雷诺数
density = 1.225  # kg/m³(空气)
velocity = 10.0  # m/s
characteristic_length = 0.1  # 10 cm
viscosity = 1.8e-5  # Pa·s(空气)

Re = reynolds_number(density, velocity, characteristic_length, viscosity)
print(f"Air Reynolds number: {Re:.0f}")

# 计算甘油流动的雷诺数
density = 1261.0  # kg/m³(甘油)
velocity = 0.1  # m/s
characteristic_length = 0.01  # 1 cm
viscosity = 1.412  # Pa·s(甘油)

Re = reynolds_number(density, velocity, characteristic_length, viscosity)
print(f"Glycerol Reynolds number: {Re:.0f}")

示例输出

reynolds_number_output.txt
Reynolds number: 9982
Air Reynolds number: 68083
Glycerol Reynolds number: 9

雷诺数图

雷诺数的表达式为:

$$ Re = \frac{\rho v L}{\eta} $$

其中 $Re$ 是雷诺数,$\rho$ 是流体密度,$v$ 是流速,$L$ 是特征长度(例如管道直径),$\eta$ 是动力粘度。

雷诺数可用于判断流动是层流还是湍流:

上图展示了水在直径 1 cm 的管道中流动时,雷诺数随流速的变化情况。Re = 2300 处的绿色虚线标记了从层流向过渡流转变的临界点,而 Re = 4000 处的红色虚线标记了湍流的起始点。

雷诺数是流体力学的基础,广泛应用于管道流动分析、空气动力学、传热学等众多工程领域。它表示流体中惯性力与粘性力的比值。

相关文章


绘图生成脚本

plot_reynolds.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 reynolds_number

# 用于绘图的流速范围
v = np.linspace(0.001, 10, 100)  # 0.001 到 10 m/s

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

# 固定参数(管道中类似水的流动)
density = 1000.0  # kg/m³
characteristic_length = 0.01  # 1 cm(管道直径)
viscosity = 0.001  # Pa·s

# 计算雷诺数
Re = reynolds_number(density, v, characteristic_length, viscosity)

plt.plot(v, Re, color='blue', linewidth=2)
plt.xlabel('Velocity (m/s)', fontsize=12)
plt.ylabel('Reynolds Number', fontsize=12)
plt.title('Reynolds Number vs Velocity (Water in 1cm Pipe)', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)

# 添加层流/湍流转变线
plt.axhline(y=2300, color='green', linestyle='--', linewidth=2, label='Laminar limit (2300)')
plt.axhline(y=4000, color='red', linestyle='--', linewidth=2, label='Turbulent onset (4000)')
plt.legend(loc='upper left', fontsize=10)

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

Check out similar posts by category: Physics, Python