如何使用 UliEngineering 在 Python 中计算 Kestin 粘度

你可以使用 UliEngineering Python 库轻松计算 Kestin 粘度关联式。Kestin 关联式是一个三参数模型,能够为液体提供精确的粘度预测:

kestin_viscosity.py
from UliEngineering.Physics.Viscosity import kestin_viscosity, CommonLiquids
from UliEngineering.EngineerIO import *

# 计算 20°C 时水的 Kestin 粘度
T = 20 + 273.15  # 转换为开尔文
eta = kestin_viscosity(T, CommonLiquids.Water.kestin)
print(f"20°C 时水的粘度:{format_value(eta, 'Pa·s')}")

# 计算 50°C 时水的 Kestin 粘度
T = 50 + 273.15
eta = kestin_viscosity(T, CommonLiquids.Water.kestin)
print(f"50°C 时水的粘度:{format_value(eta, 'Pa·s')}")

# 使用自定义 Kestin 常数
from UliEngineering.Physics.Viscosity import KestinConstants
custom = KestinConstants(name="Custom liquid", A=1.0e-5, B=300.0, C=150.0)
eta = kestin_viscosity(300.0, custom)
print(f"300K 时自定义液体的粘度:{format_value(eta, 'Pa·s')}")

示例输出

kestin_viscosity_output.txt
20°C 时水的粘度:1.01 mPa·s
50°C 时水的粘度:549 µPa·s
300K 时自定义液体的粘度:1.00 mPa·s

Kestin 粘度图

Kestin 关联式由下式给出:

$$ \eta = A \cdot \exp\left(\frac{B}{T - C}\right) $$

其中 $\eta$ 是动力粘度,$T$ 是以开尔文为单位的绝对温度,$A$、$B$ 和 $C$ 是材料特定的常数。参数 $C$ 表示一个温度偏移量,低于该温度时模型不再有效。

Kestin 关联式在形式上与 VFT 方程类似,但通常用于不同的应用场景,并且对某些流体可能提供更好的精度。它是在对流体性质进行大量研究的基础上发展起来的,特别适用于水和水溶液。

上图展示了水在 0°C 到 100°C 温度范围内的 Kestin 关联式。该模型捕捉到了液体粘度随温度呈指数下降的特性。

UliEngineering 库通过 CommonLiquids.Water.kestin 为水提供了预定义的 Kestin 常数。对于其他流体,可以使用 KestinConstants 数据类来定义自定义常数。

相关文章


绘图生成脚本

plot_kestin_viscosity.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 (
    kestin_viscosity,
    CommonLiquids,
)

# 用于绘图的摄氏温度范围
T_C = np.linspace(0, 100, 200)  # 0 到 100°C
T_K = T_C + 273.15  # 转换为开尔文

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

# 使用 Kestin 关联式绘制水的曲线
eta = kestin_viscosity(T_K, CommonLiquids.Water.kestin) * 1000  # 转换为 mPa·s
plt.plot(T_C, eta, label='Water', color='blue', linewidth=2)

plt.xlabel('Temperature (°C)', fontsize=12)
plt.ylabel('Dynamic Viscosity (mPa·s)', fontsize=12)
plt.title('Kestin Viscosity Correlation for Water', fontsize=14, fontweight='bold')
plt.legend(loc='upper right', fontsize=10)
plt.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('kestin_viscosity_plot.svg', format='svg', dpi=300)
print("图表已保存到 kestin_viscosity_plot.svg")

Check out similar posts by category: Physics, Python