mcpField
C
coolprop-db

coolprop-db

github.com/soljourner其他9544 次安装51 周前更新
代码仓库

关于 coolprop-db

coolprop-db 是一项通过 CoolProp Python 库查询热力学和传输性质的技能,适用于处理流体的工程师、研究人员和学习者。它涵盖纯流体与拟纯流体、制冷剂及相态行为。

主要功能

  1. 01查询热力学性质
  2. 02查询黏度与传输性质
  3. 03计算饱和与两相性质
  4. 04查询临界点与三相点性质
  5. 05覆盖多种流体类型

适用场景

  1. 01分析制冷剂循环
  2. 02计算传热或流动性质
  3. 03评估动力循环中的流体状态
  4. 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、IsoButane
  • n-Pentane、Isopentane、n-Hexane、n-Heptane、n-Octane
  • n-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) 检查限值
相区
  1. 过冷液体:在给定 P 下,T < T_sat;或在给定 T 下,P > P_sat
  2. 两相区:T = T_sat 且 0 < Q < 1
  3. 过热蒸气:在给定 P 下,T > T_sat;或在给定 T 下,P < P_sat
  4. 超临界区: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)
过程工程
  • 传热计算
  • 管道流动和压降
  • 相平衡
  • 储罐设计
低温系统
  • 液化过程
  • 储存和处理
  • 热漏计算

参考资料

官方文档
重要论文
  • 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。美国国家标准与技术研究院。
源代码

最佳实践

  1. 输入和输出始终使用 SI 单位(K、Pa、J/kg 等)
  2. 选择输入参数对之前,先检查相区
  3. 使用 try-except 块妥善处理错误
  4. 查询前验证取值范围(尤其是温度和压力)
  5. 两相计算使用干度(Q)
  6. 多次查询时缓存关键属性
  7. 流体自身属性(临界点、摩尔质量)使用 Props1SI
  8. 对于跨所有相区的稳健查询,优先使用 (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=0PropsSI('H', 'T', 300, 'Q', 0, 'R134a')
饱和蒸气使用 Q=1PropsSI('H', 'T', 300, 'Q', 1, 'R134a')
两相使用 0<Q<1PropsSI('D', 'P', 500000, 'Q', 0.5, 'R134a')
列出所有流体CoolProp.__fluids__import CoolProp; print(CoolProp.__fluids__)

此技能可访问一个最全面的开源热物性数据库之一,适用于研究、工程设计和教育应用。

评论

支持 Markdown