mcpField
N
nist-refprop

nist-refprop

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

关于 nist-refprop

这份技能指南介绍如何通过 Python 封装调用 NIST REFPROP,查询热力学和输运性质。面向需要参考级流体及混合物计算的工程师和研究人员;REFPROP 需商业授权。

主要功能

  1. 01热力学性质查询
  2. 02输运性质计算
  3. 03支持纯流体与混合物
  4. 04气液与液液平衡计算
  5. 05支持多种输入性质对
  6. 06通过 `ctREFPROP` 使用 Python 接口

适用场景

  1. 01查询指定流体状态的焓和密度
  2. 02评估制冷剂混合物的温度滑移
  3. 03计算混合物相平衡
  4. 04为工程设计或研究获取物性数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/soljourner/claude-engineering-skills --skill nist-refprop

安装后在 Claude Code 中输入/nist-refprop确认已加载。

附带文件examples.pyreference.md

详细介绍

NIST REFPROP 数据库技能

使用 NIST REFPROP(Reference Fluid Thermodynamic and Transport Properties)数据库查询高精度热力学和传输性质——它是热物性计算的黄金标准。

概述

NIST REFPROP 是由美国国家标准与技术研究院(NIST)开发的商业级热物性数据库。它提供:

  • 纯流体:147 种以上纯流体,精度为当前最高水平
  • 混合物:预定义和自定义混合物,并支持高级混合规则
  • 制冷剂混合物:涵盖所有常见制冷剂混合物,并考虑温度滑移
  • 传输性质:黏度、热导率、表面张力
  • 热力学性质:焓、熵、密度、比热容
  • 相平衡:针对混合物进行 VLE、LLE、VLLE 计算
  • 最高精度:参考级数据,并经实验测量验证

REFPROP 是以下领域的行业和研究标准:

  • 要求最高精度的关键工程设计
  • 验证其他性质数据库(CoolProp 经 REFPROP 验证)
  • 具有复杂相态行为的混合物计算
  • 考虑温度滑移的制冷剂混合物应用
  • 研究和出版级数据

许可

需要商业许可证

NIST REFPROP 不是免费或开源软件。必须向 NIST 购买许可证:

许可证包含:

  • REFPROP 软件(Windows GUI)
  • 流体数据库文件
  • Excel 加载项
  • FORTRAN/DLL 库
  • Python 封装兼容性

重要说明:

  • 许可证按用户授权,永久有效(一次性费用)
  • 约 5 年内提供更新和新流体文件
  • 商业应用必须获得许可证
  • 不得重新分发

安装

第 1 步:购买并安装 REFPROP
  1. 从 NIST 购买 REFPROP 许可证:https://www.nist.gov/srd/refprop
  2. 下载并安装 REFPROP(通常安装到 C:\Program Files (x86)\REFPROP\)
  3. 记下安装目录路径
第 2 步:安装 Python 封装
pip install ctREFPROP

ctREFPROP 包使用 ctypes 提供 REFPROP 的 Python 接口。

第 3 步:设置 RPPREFIX 环境变量

Python 封装需要知道 REFPROP 的安装位置:

Windows:

# PowerShell
$env:RPPREFIX = "C:\Program Files (x86)\REFPROP\"

# Or set permanently via System Properties > Environment Variables

Linux/Mac:

export RPPREFIX="/path/to/REFPROP/"

Python(替代方法):

import os
os.environ['RPPREFIX'] = r'C:\Program Files (x86)\REFPROP'
第 4 步:验证安装
from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary

# Initialize REFPROP
RP = REFPROPFunctionLibrary(os.environ['RPPREFIX'])
RP.SETPATHdll(os.environ['RPPREFIX'])

# Test query
print(RP.RPVersion())

可用流体

REFPROP 包含 147 种以上纯流体,按类别整理如下:

常见工业流体
  • 水(H₂O)- IAPWS-95 公式
  • 空气 - 干空气混合物
  • 二氧化碳(CO₂)
  • 氮气(N₂)
  • 氧气(O₂)
  • 氩气(Ar)
  • 氦气(He)
  • 氢气(H₂)
烃类(40 种以上流体)
  • 烷烃:甲烷、乙烷、丙烷、丁烷、戊烷、己烷、庚烷、辛烷、壬烷、癸烷(及其异构体)
  • 烯烃:乙烯、丙烯、丁烯
  • 芳香烃:苯、甲苯、二甲苯
  • 环烃:环己烷、环戊烷
制冷剂(60 种以上流体)
  • CFC:R11、R12、R13、R113、R114、R115
  • HCFC:R22、R123、R124、R141b、R142b
  • HFC:R23、R32、R125、R134a、R143a、R152a、R227ea、R236fa、R245fa、R365mfc
  • HFO:R1234yf、R1234ze(E)、R1233zd(E)、R1336mzz(Z)
  • 天然制冷剂:R717(氨)、R744(CO₂)、R290(丙烷)、R600a(异丁烷)
  • 混合物:R404A、R407C、R410A、R507A、R407F、R448A、R449A、R450A、R513A
低温流体
  • 氦、氖、氩、氪、氙
  • 氢、氘、仲氢
  • 氮、氧、氟
  • 甲烷、乙烷(LNG 组分)
特种流体
  • 硅氧烷:D4、D5、D6、MD2M、MD3M、MD4M、MDM、MM(ORC 应用)
  • 醇类:甲醇、乙醇、丙醇、丁醇
  • 其他有机物:丙酮、苯、甲苯
  • 无机物:氨、二氧化硫、硫化氢

完整流体列表请参阅 reference.md。

性质查询

核心功能

REFPROP 使用的函数调用与 CoolProp 不同:

from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary
import os

# Initialize
RP = REFPROPFunctionLibrary(os.environ['RPPREFIX'])
RP.SETPATHdll(os.environ['RPPREFIX'])

# Define fluid
MOLAR_BASE_SI = RP.GETENUMdll(0, "MOLAR BASE SI").iEnum
fluid = "WATER"

# Single component
r = RP.REFPROPdll(fluid, "TP", "D;H;S;CP;CV;W;VIS;TCX", MOLAR_BASE_SI, 0, 0, 298.15, 101.325, [1.0])

# Access results
density = r.Output[0]      # kg/m³
enthalpy = r.Output[1]     # J/kg
entropy = r.Output[2]      # J/kg/K
cp = r.Output[3]           # J/kg/K
cv = r.Output[4]           # J/kg/K
sound_speed = r.Output[5]  # m/s
viscosity = r.Output[6]    # Pa·s
conductivity = r.Output[7] # W/m/K
输入规格
代码属性单位
TP温度、压力K、kPa
TH温度、焓K、J/kg
TS温度、熵K、J/kg/K
TD温度、密度K、kg/m³
PH压力、焓kPa、J/kg
PS压力、熵kPa、J/kg/K
PD压力、密度kPa、kg/m³
TQ温度、干度K、-
PQ压力、干度kPa、-
输出属性
代码属性单位
D密度kg/m³
H焓J/kg
S熵J/kg/K
U内能J/kg
CP热容(定压)J/kg/K
CV热容(定容)J/kg/K
W声速m/s
VIS黏度Pa·s
TCX热导率W/m/K
KV运动黏度m²/s
PRANDTL普朗特数-
STN表面张力N/m
P压力kPa
T温度K
Q干度(蒸气分数)-

一次调用可以请求多个属性,使用分号分隔:"D;H;S;CP;VIS;TCX"

混合物计算

REFPROP 的一项关键优势是具备复杂的混合物处理能力:

# Define mixture by components and mole fractions
fluid = "METHANE;ETHANE;PROPANE"
z = [0.9, 0.07, 0.03]  # Mole fractions (must sum to 1.0)

# Query mixture properties
r = RP.REFPROPdll(fluid, "TP", "D;H;S", MOLAR_BASE_SI, 0, 0, 250.0, 5000.0, z)

混合物特性:

  • 混合物最多可包含 20 个组分
  • 高级混合规则(GERG-2008、Kunz-Wagner 等)
  • 计算非共沸混合物的温度滑移
  • 气液平衡(VLE)计算
  • 某些体系的液液平衡(LLE)计算

相较于 CoolProp 的优势

CoolProp 非常出色且免费,而 REFPROP 还提供:

1. 更高的精度
  • REFPROP 是其他库进行验证时采用的参考标准
  • 状态方程更精确,尤其是在临界点附近
  • 输运性质关联式更准确
  • 典型精度:密度为 0.01%,而 CoolProp 为 0.1%
2. 更多流体
  • 147 种以上的纯流体,而 CoolProp 中约有 120 种
  • 包含所有最新制冷剂(HFO:R1234yf、R1234ze、R1233zd 等)
  • 更多工业和特种化学品
  • 经常更新,加入新流体
3. 更完善的混合物处理
  • 更优的混合规则(GERG-2008、高级模型)
  • 可处理复杂的非理想混合物
  • 可计算非共沸制冷剂混合物的温度滑移
  • VLE/LLE 计算
  • 最多支持 20 个组分,而 CoolProp 对混合物的支持有限
4. 更广的属性范围
  • 在更宽的温度和压力范围内有效
  • 外推表现更佳
  • 在极端条件下更可靠
5. 其他能力
  • 湿度计算(湿空气学)
  • 闪蒸计算(PT、PH、PS 等)
  • 带雅可比矩阵的饱和性质
  • 辅助方程
  • 伪纯流体近似
6. 官方支持
  • 由 NIST(美国国家标准与技术研究院)维护
  • 提供技术支持
  • 定期更新,纳入最新研究成果
  • 结果符合出版要求
何时使用 REFPROP,何时使用 CoolProp

在以下情况下使用 REFPROP:

  • 需要最高精度(±0.01%)
  • 处理复杂混合物
  • 需要最新制冷剂数据(HFO)
  • 用于出版或关键设计工作
  • 预算允许购买商业许可证
  • 处理非共沸混合物(温度滑移)

在以下情况下使用 CoolProp:

  • 预算有限(免费/开源)
  • 只需基本属性(可接受 ±0.1% 精度)
  • 仅使用纯流体
  • 需要开源许可证
  • 快速原型开发

**验证说明:**CoolProp 已通过 REFPROP 验证,确认 REFPROP 是参考标准。

常见工作流示例

from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary
import os

# Setup
os.environ['RPPREFIX'] = r'C:\Program Files (x86)\REFPROP'
RP = REFPROPFunctionLibrary(os.environ['RPPREFIX'])
RP.SETPATHdll(os.environ['RPPREFIX'])

MOLAR_BASE_SI = RP.GETENUMdll(0, "MOLAR BASE SI").iEnum

# Query water at 25°C, 1 bar
fluid = "WATER"
T = 298.15  # K
P = 100.0   # kPa

r = RP.REFPROPdll(fluid, "TP", "D;H;S;CP;VIS;TCX", MOLAR_BASE_SI, 0, 0, T, P, [1.0])

print(f"Water at {T} K, {P} kPa:")
print(f"  Density: {r.Output[0]:.4f} kg/m³")
print(f"  Enthalpy: {r.Output[1]:.2f} J/kg")
print(f"  Entropy: {r.Output[2]:.2f} J/kg/K")
print(f"  Cp: {r.Output[3]:.2f} J/kg/K")
print(f"  Viscosity: {r.Output[4]*1000:.4f} mPa·s")
print(f"  Conductivity: {r.Output[5]:.4f} W/m/K")

错误处理

REFPROP 会返回错误代码和消息:

r = RP.REFPROPdll(fluid, "TP", "D", MOLAR_BASE_SI, 0, 0, T, P, z)

if r.ierr > 0:
    print(f"Error {r.ierr}: {r.herr}")
elif r.ierr < 0:
    print(f"Warning {r.ierr}: {r.herr}")
else:
    print(f"Success: {r.Output[0]}")

单位

REFPROP 使用的单位约定与 CoolProp 不同:

默认单位(使用 MOLAR BASE SI):

  • 温度:K(开尔文)
  • 压力:kPa(千帕)——注意:CoolProp 使用 Pa
  • 密度:kg/m³
  • 焓:J/kg
  • 熵:J/kg/K
  • 黏度:Pa·s
  • 热导率:W/m/K

可用的单位制:

  • SI 摩尔单位制
  • SI 质量单位制(上方所示的默认单位制)
  • 英制单位
  • 自定义单位

最佳实践

  1. 导入 ctREFPROP 前务必设置 RPPREFIX
  2. 每次调用后检查 ierr 是否报错
  3. 使用准确的流体名称(区分大小写,名称来自 FLUIDS 目录)
  4. 预先计算混合物的组分(总和必须为 1.0)
  5. 缓存 RP 实例——不要反复重新初始化
  6. 针对各相区使用合适的输入参数对
  7. 最初将结果与已知值进行验证
  8. 阅读错误消息——REFPROP 会提供详细的诊断信息

参考资料

官方资源
  1. NIST REFPROP 网站

  2. REFPROP 文档

    • 随安装程序提供
    • 安装目录中的 REFPROP.pdf
  3. ctREFPROP 文档

重要出版物
  • Lemmon, E.W., Bell, I.H., Huber, M.L., McLinden, M.O.(2018)。《NIST Standard Reference Database 23: Reference Fluid Thermodynamic and Transport Properties-REFPROP, Version 10.0》,美国国家标准与技术研究院。
支持

快速参考

# Initialize
from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary
RP = REFPROPFunctionLibrary(os.environ['RPPREFIX'])
RP.SETPATHdll(os.environ['RPPREFIX'])
MOLAR_BASE_SI = RP.GETENUMdll(0, "MOLAR BASE SI").iEnum

# Pure fluid
r = RP.REFPROPdll("WATER", "TP", "D;H;S", MOLAR_BASE_SI, 0, 0, 300.0, 101.325, [1.0])

# Mixture
r = RP.REFPROPdll("METHANE;ETHANE", "TP", "D;H;S", MOLAR_BASE_SI, 0, 0, 200.0, 5000.0, [0.9, 0.1])

# Check for errors
if r.ierr != 0:
    print(f"Error/Warning: {r.herr}")

NIST REFPROP 是热物性领域的黄金标准。虽然需要商业许可证,但对于要求最高精度、混合物计算或可用于发表的结果的应用而言,这笔投入是值得的。有关开源替代方案,请参阅 coolprop-db 技能。

评论

支持 Markdown