关于 coolprop-db
coolprop-db 是一项通过 CoolProp Python 库查询热力学和传输性质的技能,适用于处理流体的工程师、研究人员和学习者。它涵盖纯流体与拟纯流体、制冷剂及相态行为。
主要功能
- 01查询热力学性质
- 02查询黏度与传输性质
- 03计算饱和与两相性质
- 04查询临界点与三相点性质
- 05覆盖多种流体类型
适用场景
- 01分析制冷剂循环
- 02计算传热或流动性质
- 03评估动力循环中的流体状态
- 04查询低温流体性质
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ soljourner/ claude-engineering-skills --skill coolprop-db安装后在 Claude Code 中输入/coolprop-db确认已加载。
附带文件examples.pyreference.md
详细介绍
CoolProp 数据库技能
使用 CoolProp 开源热物理性质库,查询 100 多种纯流体和类纯流体的热力学与传输性质。
概述
CoolProp 是一个全面的热物理性质数据库,提供:
- 纯流体:水、空气、氨、二氧化碳及其他 100 多种流体
- 制冷剂:R134a、R410A、R32、R404A、R407C、R507A 等
- 工业流体:甲烷、乙烷、丙烷、丁烷、氮气、氧气、氩气
- 传输性质:黏度、热导率、表面张力
- 热力学性质:焓、熵、密度、比热
- 相态信息:饱和性质、两相行为、临界点
CoolProp 使用高精度状态方程(Helmholtz 能量公式),并通过 NIST REFPROP 数据验证。
安装
Python
pip install CoolProp
验证安装
import CoolProp
print(CoolProp.__version__)
print(CoolProp.get_global_param_string("version"))
核心 API 函数
PropsSI - 主要性质查询函数
from CoolProp.CoolProp import PropsSI
# Syntax: PropsSI(output, input1_name, input1_value, input2_name, input2_value, fluid)
value = PropsSI('D', 'T', 298.15, 'P', 101325, 'Water')
Props1SI - 单输入性质
from CoolProp.CoolProp import Props1SI
# For properties requiring only fluid name
T_crit = Props1SI('Tcrit', 'Water') # Critical temperature
P_crit = Props1SI('Pcrit', 'Water') # Critical pressure
性质代码(输入/输出参数)
热力学性质
| 代码 | 性质 | SI 单位 | 描述 |
|---|---|---|---|
T | 温度 | K | 绝对温度 |
P | 压力 | Pa | 绝对压力 |
D | 密度 | kg/m³ | 质量密度 |
H | 焓 | J/kg | 比焓 |
S | 熵 | J/kg/K | 比熵 |
U | 内能 | J/kg | 比内能 |
Q | 干度 | - | 蒸汽质量分数(0-1) |
Dmolar | 摩尔密度 | mol/m³ | 摩尔密度 |
Hmolar | 摩尔焓 | J/mol | 摩尔焓 |
Smolar | 摩尔熵 | J/mol/K | 摩尔熵 |
传输性质
| 代码 | 性质 | SI 单位 | 描述 |
|---|---|---|---|
V | 黏度 | Pa·s | 动力黏度 |
L | 热导率 | W/m/K | 热导率 |
C | 比热(定压) | J/kg/K | 定压比热 Cp |
O | 比热(定容) | J/kg/K | 定容比热 Cv |
PRANDTL | 普朗特数 | - | Pr = μ·Cp/k |
I | 表面张力 | N/m | 液-汽界面 |
相态性质
| 代码 | 性质 | SI 单位 | 描述 |
|---|---|---|---|
Phase | 相态索引 | - | 0=液体,3=超临界,5=气体,6=两相 |
Q | 干度 | - | 0=饱和液体,1=饱和蒸汽 |
临界点/三相点性质(与 Props1SI 搭配使用)
| 代码 | 性质 | SI 单位 | 描述 |
|---|---|---|---|
Tcrit | 临界温度 | K | 临界点温度 |
Pcrit | 临界压力 | Pa | 临界点压力 |
Ttriple | 三相点温度 | K | 三相点温度 |
Ptriple | 三相点压力 | Pa | 三相点压力 |
M | 摩尔质量 | kg/mol | 分子量 |
ACENTRIC | 偏心因子 | - | Pitzer 偏心因子 |
常见流体
水和空气
Water- 纯水(H₂O)Air- 干燥空气(类纯混合物)
常见制冷剂
R134a- HFC,常用于汽车空调R410A- HFC 混合物,用于住宅空调/热泵R32- HFC,较低 GWP 的替代品R404A- HFC 混合物,用于商用制冷R407C- HFC 混合物,用于空调系统R507A- HFC 混合物,用于低温制冷R22- HCFC(正在逐步淘汰)R717- 氨(NH₃)R744- 二氧化碳(CO₂)
碳氢化合物
Methane、Ethane、Propane、n-Butane、IsoButanen-Pentane、Isopentane、n-Hexane、n-Heptane、n-Octanen-Nonane、n-Decane
低温气体
Nitrogen、Oxygen、Argon、Helium、Neon、Hydrogen
工业气体
CO2- 二氧化碳CO- 一氧化碳H2S- 硫化氢SO2- 二氧化硫Ammonia- NH₃
查询示例
示例 1:标准条件下的水性质
from CoolProp.CoolProp import PropsSI
# Water at 25°C (298.15 K) and 1 atm (101325 Pa)
T = 298.15 # K
P = 101325 # Pa
density = PropsSI('D', 'T', T, 'P', P, 'Water') # kg/m³
enthalpy = PropsSI('H', 'T', T, 'P', P, 'Water') # J/kg
entropy = PropsSI('S', 'T', T, 'P', P, 'Water') # J/kg/K
viscosity = PropsSI('V', 'T', T, 'P', P, 'Water') # Pa·s
cp = PropsSI('C', 'T', T, 'P', P, 'Water') # J/kg/K
print(f"Water at {T-273.15}°C and {P/1000:.1f} kPa:")
print(f" Density: {density:.2f} kg/m³")
print(f" Enthalpy: {enthalpy/1000:.2f} kJ/kg")
print(f" Entropy: {entropy/1000:.4f} kJ/kg·K")
print(f" Viscosity: {viscosity*1000:.4f} mPa·s")
print(f" Cp: {cp/1000:.4f} kJ/kg·K")
示例 2:制冷剂饱和性质
from CoolProp.CoolProp import PropsSI
# R134a saturation properties at 25°C
T_sat = 298.15 # K
fluid = 'R134a'
# Get saturation pressure at this temperature
P_sat = PropsSI('P', 'T', T_sat, 'Q', 0, fluid) # Pa
# Saturated liquid properties (Q=0)
rho_liquid = PropsSI('D', 'T', T_sat, 'Q', 0, fluid)
h_liquid = PropsSI('H', 'T', T_sat, 'Q', 0, fluid)
s_liquid = PropsSI('S', 'T', T_sat, 'Q', 0, fluid)
# Saturated vapor properties (Q=1)
rho_vapor = PropsSI('D', 'T', T_sat, 'Q', 1, fluid)
h_vapor = PropsSI('H', 'T', T_sat, 'Q', 1, fluid)
s_vapor = PropsSI('S', 'T', T_sat, 'Q', 1, fluid)
# Latent heat
h_fg = h_vapor - h_liquid
print(f"{fluid} at {T_sat-273.15}°C:")
print(f" Saturation pressure: {P_sat/1000:.2f} kPa")
print(f" Liquid density: {rho_liquid:.2f} kg/m³")
print(f" Vapor density: {rho_vapor:.2f} kg/m³")
print(f" Latent heat: {h_fg/1000:.2f} kJ/kg")
示例 3:压力-焓(P-H)状态点
from CoolProp.CoolProp import PropsSI
# Find temperature at known pressure and enthalpy
P = 500000 # 5 bar = 500 kPa
h = 250000 # 250 kJ/kg
T = PropsSI('T', 'P', P, 'H', h, 'R134a')
Q = PropsSI('Q', 'P', P, 'H', h, 'R134a')
print(f"R134a at {P/1000:.0f} kPa and {h/1000:.0f} kJ/kg:")
print(f" Temperature: {T-273.15:.2f}°C")
print(f" Quality: {Q:.4f} (0=liquid, 1=vapor)")
示例 4:临界点和三相点数据
from CoolProp.CoolProp import Props1SI
fluids = ['Water', 'CO2', 'Nitrogen', 'R134a']
for fluid in fluids:
T_crit = Props1SI('Tcrit', fluid)
P_crit = Props1SI('Pcrit', fluid)
T_triple = Props1SI('Ttriple', fluid)
M = Props1SI('M', fluid)
print(f"\n{fluid}:")
print(f" Critical point: {T_crit-273.15:.2f}°C, {P_crit/1e6:.2f} MPa")
print(f" Triple point: {T_triple-273.15:.2f}°C")
print(f" Molar mass: {M*1000:.2f} g/mol")
示例 5:黏度随温度的变化
from CoolProp.CoolProp import PropsSI
import numpy as np
# Calculate water viscosity from 0°C to 100°C at atmospheric pressure
P = 101325 # Pa
temperatures = np.linspace(273.15, 373.15, 11) # 0 to 100°C
print("Water viscosity vs temperature:")
print("T(°C) μ(mPa·s)")
for T in temperatures:
mu = PropsSI('V', 'T', T, 'P', P, 'Water') * 1000 # Convert to mPa·s
print(f"{T-273.15:5.0f} {mu:.4f}")
示例 6:两相性质
from CoolProp.CoolProp import PropsSI
# R134a at 10 bar with 50% quality
P = 1000000 # 10 bar = 1 MPa
Q = 0.5 # 50% vapor
T = PropsSI('T', 'P', P, 'Q', Q, 'R134a')
h = PropsSI('H', 'P', P, 'Q', Q, 'R134a')
s = PropsSI('S', 'P', P, 'Q', Q, 'R134a')
rho = PropsSI('D', 'P', P, 'Q', Q, 'R134a')
print(f"R134a two-phase at {P/1e6:.1f} MPa, quality = {Q}:")
print(f" Temperature: {T-273.15:.2f}°C")
print(f" Enthalpy: {h/1000:.2f} kJ/kg")
print(f" Entropy: {s/1000:.4f} kJ/kg·K")
print(f" Density: {rho:.2f} kg/m³")
温度和压力的影响
温度范围
- 每种流体都有有效温度范围,介于三相点和最高温度之间
- 典型范围:三相点温度 < T < 2000 K(因流体而异)
- 使用
Props1SI('Tmin', fluid)和Props1SI('Tmax', fluid)检查限值
压力范围
- 每种流体都有有效压力范围
- 典型范围:三相点压力 < P < 1000 MPa(因流体而异)
- 使用
Props1SI('pmin', fluid)和Props1SI('pmax', fluid)检查限值
相区
- 过冷液体:在给定 P 下,T < T_sat;或在给定 T 下,P > P_sat
- 两相区:T = T_sat 且 0 < Q < 1
- 过热蒸气:在给定 P 下,T > T_sat;或在给定 T 下,P < P_sat
- 超临界区:T > T_crit 且 P > P_crit
输入对限制
并非所有输入对在所有区域都有效:
- (T, P):仅在单相区域有效(两相区除外)
- (P, Q):适用于两相区和饱和状态(0 ≤ Q ≤ 1)
- (T, Q):适用于两相区和饱和状态(0 ≤ Q ≤ 1)
- (P, H):适用于所有区域
- (P, S):适用于所有区域
- (H, S):适用于所有区域(适用于等熵过程)
错误处理
常见错误和解决方案
错误:“CoolProp error: [PropsSI] Two saturation inputs are not valid”
- 问题:尝试在两相区使用 (T, P)
- 解决方案:两相状态请使用 (T, Q) 或 (P, Q)
错误:“CoolProp error: Value is outside range”
- 问题:温度或压力超出有效范围
- 解决方案:使用 Props1SI('Tmin', fluid) 等检查流体限值
错误:“CoolProp error: Fluid not found”
- 问题:流体名称或拼写错误
- 解决方案:使用准确的流体名称(区分大小写),并查阅文档
错误:“Unable to match the inputs”
- 问题:输入组合无效或迭代失败
- 解决方案:检查输入值在物理上是否合理
安全查询模式
from CoolProp.CoolProp import PropsSI
def safe_props(output, input1, value1, input2, value2, fluid):
"""Query CoolProp with error handling"""
try:
result = PropsSI(output, input1, value1, input2, value2, fluid)
return result
except ValueError as e:
print(f"Error querying {fluid}: {e}")
return None
except Exception as e:
print(f"Unexpected error: {e}")
return None
# Usage
density = safe_props('D', 'T', 300, 'P', 101325, 'Water')
if density is not None:
print(f"Density: {density:.2f} kg/m³")
工程应用
HVAC 系统设计
- 制冷剂循环分析(蒸发器、冷凝器、压缩机、膨胀装置)
- 换热器计算
- 性能系数(COP)计算
动力循环
- Rankine 循环(蒸汽轮机)
- Brayton 循环(燃气轮机)
- 有机 Rankine 循环(ORC)
过程工程
- 传热计算
- 管道流动和压降
- 相平衡
- 储罐设计
低温系统
- 液化过程
- 储存和处理
- 热漏计算
参考资料
官方文档
- CoolProp 网站:http://www.coolprop.org/
- Python 文档:http://www.coolprop.org/coolprop/HighLevelAPI.html
- 流体性质:http://www.coolprop.org/fluid_properties/PurePseudoPure.html
- 验证数据:http://www.coolprop.org/validation/index.html
重要论文
- Bell, I. H., Wronski, J., Quoilin, S., & Lemort, V. (2014). “纯流体和拟纯流体热物理性质评估及开源热物理性质库 CoolProp。” Industrial & Engineering Chemistry Research, 53(6), 2498-2508.
状态方程参考资料
- Lemmon, E. W., Huber, M. L., & McLinden, M. O. (2013). NIST 标准参考数据库 23:参考流体热力学和输运性质(REFPROP),版本 9.1。美国国家标准与技术研究院。
源代码
最佳实践
- 输入和输出始终使用 SI 单位(K、Pa、J/kg 等)
- 选择输入参数对之前,先检查相区
- 使用 try-except 块妥善处理错误
- 查询前验证取值范围(尤其是温度和压力)
- 两相计算使用干度(Q)
- 多次查询时缓存关键属性
- 流体自身属性(临界点、摩尔质量)使用 Props1SI
- 对于跨所有相区的稳健查询,优先使用 (P, H) 或 (P, S)
快速参考表
| 任务 | 函数 | 示例 |
|---|---|---|
| 两个输入参数的属性 | PropsSI(output, in1, val1, in2, val2, fluid) | PropsSI('D', 'T', 300, 'P', 101325, 'Water') |
| 单个输入参数的属性 | Props1SI(param, fluid) | Props1SI('Tcrit', 'Water') |
| 饱和液体 | 使用 Q=0 | PropsSI('H', 'T', 300, 'Q', 0, 'R134a') |
| 饱和蒸气 | 使用 Q=1 | PropsSI('H', 'T', 300, 'Q', 1, 'R134a') |
| 两相 | 使用 0<Q<1 | PropsSI('D', 'P', 500000, 'Q', 0.5, 'R134a') |
| 列出所有流体 | CoolProp.__fluids__ | import CoolProp; print(CoolProp.__fluids__) |
此技能可访问一个最全面的开源热物性数据库之一,适用于研究、工程设计和教育应用。
评论
支持 Markdown