news 2026/8/24 15:20:27

CoolProp热力学物性计算库:5分钟跑通制冷剂物性查询与制冷循环COP

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CoolProp热力学物性计算库:5分钟跑通制冷剂物性查询与制冷循环COP

CoolProp热力学物性计算库:5分钟跑通制冷剂物性查询与制冷循环COP

【免费下载链接】CoolPropThermophysical properties for the masses项目地址: https://gitcode.com/gh_mirrors/co/CoolProp

周五下班前,客户要把 R134a 制冷循环的 COP 核对稿发过来,你却还卡在物性表上翻找一个饱和焓值——图表插值的误差和翻页的时间都在拖进度。开源库CoolProp把这一步压进一行代码:Helmholtz 自由能方程(基于实验数据回归的高精度状态方程)驱动,100 余种流体与混合物,密度、焓、熵一次查齐。

先判断值不值得用

维度情况
精度主流流体密度、焓误差 0.1% 量级,对标 REFPROP
语言覆盖Python、C++、MATLAB、Fortran、Excel、Julia 等 20 余种封装
许可MIT 协议,商用、教学免费
学习成本安装加首条查询约 5 分钟

安装并验证:一条命令跑通

先装好,再验证,两分钟内可以完成:

python --version # 确认 3.9 及以上 pip install coolprop

随后写三行验证代码。这里选水在 1 个标准大气压下的饱和温度:公式上应当是 100 ℃,任何环境差异都会立刻暴露出来。

import CoolProp.CoolProp as CP print(CP.__version__) # 输出版本号 T_sat = CP.PropsSI('T', 'P', 101325, 'Q', 0, 'Water') print(f"{T_sat - 273.15:.2f} ℃")

预期输出:版本号加99.97 ℃。到这里,查表环节就可以从你的工作流里删掉了。

单点查询:PropsSI 的签名

所有查询走同一个入口,六个参数按位置排好:

CP.PropsSI('输出量', '输入1', 值1, '输入2', 值2, '流体名')

输出量支持TPD(密度)、HS(熵)、C(定压比热)等。纯组分、饱和线(干度Q从 0 到 1)、临界参数(如Tcrit,只需两个参数)都用同一签名,不存在"换物性换函数"。

完整案例:算一个 R134a 循环的 COP

把上面这条签名串成一条链,就是完整的制冷循环计算。先给定蒸发与冷凝温度:

fluid = 'R134a' T_evap = 273.15 + 5 # 蒸发 5℃ T_cond = 273.15 + 40 # 冷凝 40℃ h1 = CP.PropsSI('H', 'T', T_evap, 'Q', 1, fluid) # 蒸发器出口饱和蒸气焓 s1 = CP.PropsSI('S', 'T', T_evap, 'Q', 1, fluid) # 压缩机入口熵 p_cond = CP.PropsSI('P', 'T', T_cond, 'Q', 0, fluid) # 冷凝压力 h2s = CP.PropsSI('H', 'P', p_cond, 'S', s1, fluid) # 等熵压缩出口焓 h3 = CP.PropsSI('H', 'T', T_cond, 'Q', 0, fluid) # 冷凝器出口液态焓 COP = (h1 - h3) / (h2s - h1) # 制冷量/耗功 print(f"COP = {COP:.2f}")

预期输出落在 4.5~5.0 之间,可直接与教材 R134a 理想循环参考值核对。四个状态点在 T-s 图上的位置关系,正好是这张图描述的:红色实线是实际压缩过程、紫色虚线是等熵基准、绿色是考虑了多变效率的修正路径,右上角放大框展示两者压差的细节。

顺手把这个循环画出来,审稿材料就齐了:

import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.plot(s1 / 1000, T_evap, 'o', label='1 蒸发出口') ax.plot(s1 / 1000, (h2s * 0 + CP.PropsSI('T', 'P', p_cond, 'S', s1, fluid)), 'o', label='2s 等熵出口') ax.plot(CP.PropsSI('S', 'T', T_cond, 'Q', 0, fluid) / 1000, T_cond, 'o', label='3 冷凝出口') for h in (h1, h2s, h3): pass ax.set_xlabel('S [kJ/(kg·K)]'); ax.set_ylabel('T [K]') ax.legend(); plt.tight_layout(); plt.savefig('cycle_ts.png', dpi=150)

排障速查

症状ImportError: No module named 'CoolProp'根因:包装进了另一个解释器的环境。修复pip show coolprop核对,与当前解释器不一致就用python -m pip install coolprop重装。

症状unable to solve with given inputs,或算出来是离谱值根因:输入对在两相区失效(如P,T落在饱和线内),或流体名拼错。修复:改用P,QT,Q;流体名以CP.get_global_param_string('fluids_list')输出为准。

症状:几千个状态点算到怀疑人生根因:逐点调用PropsSI,每次调用都隐含建对象、求解、销毁的开销。修复:换用AbstractState循环外建一次(写法见下文批量算点一节)。

如果你还想更进一步

混合物闪蒸:两相区不用自己写求解器

制冷剂替代方案比选、油气闪蒸都绕不开混合物。AbstractState加一行摩尔分数设定,就能拿到任意比例物系的状态:

mix = CP.AbstractState("HEOS", "Water&R134a") mix.set_mole_fractions([0.5, 0.5]) mix.update(CP.PT_INPUTS, 3e5, 300) print(f"h = {mix.hmass():.1f} J/kg, s = {mix.smass():.2f} J/(kg·K)")

落在两相区时不用自己写相平衡:内部先做稳定性分析(判断单相还是分相),再做相分裂计算解出气液分配,最后才返回结果。这套两步逻辑就是下面这张流程图的内容。

批量算点提速:同一个对象跑一万个点

循环里逐点调PropsSI会反复初始化,一万个点就是三次万倍的开销。把状态对象提到循环外,只更新输入对即可:

st = CP.AbstractState("HEOS", "R134a") p = CP.PropsSI('P', 'T', 300, 'Q', 0, "R134a") h = [] for T in (250 + i) for i in range(10000): # 伪代码,实际用 range(250, 260) 步长 0.001 st.update(CP.TDmolarT_INPUTS, T, 1200) # T,Dmolar 对免闪蒸、最快 h.append(st.hmass())

同样的点表,速度通常能提一个量级;对表格化场景,仓库里dev/TTSE/目录还有基于表格插值的状态后端源码可供参考。

强制相态:跳过自动判断

点明明在液相区却报相态歧义,多半是闪蒸判断多绕了弯路。输入键加|liquid|gas直接锁定相区,一次调用即可省掉探测开销:

rho = CP.PropsSI('D', 'T|liquid', 300, 'P', 1e5, 'Water') # ≈ 996.6 kg/m³

注意:只有确认点确实在所锁相区内才能用,点跨进另一相区时强锁相态反而会拿到错值。


周五那版 COP 核对稿,现在用一段脚本就能复现、画图、归档。下一步建议:拿你手头真实的工况参数跑一遍上面的循环,把结果与设备铭牌对比。系统学习看仓库文档(Web/coolprop/目录)、遇到问题去项目 issue 区提问、找现成案例翻dev/scripts/examples/目录即可。

【免费下载链接】CoolPropThermophysical properties for the masses项目地址: https://gitcode.com/gh_mirrors/co/CoolProp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 15:19:35

Unity 编辑器之 EditorTool、EditorToolBar、Overlay属性

Unity面板栏EditorTool注意全局工具,默认收纳在全局工具的图标内组件工具,按照组件类型,在全局工具图标后边,依次排列全局工具示例// 放在 Assets/Editor/ 下 using UnityEngine; using UnityEditor; using UnityEditor.EditorToo…

作者头像 李华
网站建设 2026/8/24 15:19:04

单片机毕设选题推荐:基于 STM32 单片机的阈值可调智能快递柜软硬件设计 基于 STM32 的短信验证码存取件快递柜控制系统研究(017104)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/24 15:17:02

Rapier.js 物理引擎快速上手指南

Rapier.js 物理引擎快速上手指南 【免费下载链接】rapier.js Official JavaScript bindings for the Rapier physics engine ⚠️ MIGRATED TO https://github.com/dimforge/rapier/tree/master/typescript ⚠️ 项目地址: https://gitcode.com/gh_mirrors/ra/rapier.js …

作者头像 李华
网站建设 2026/8/24 15:15:37

搭建elk环境并接入frostmourne,实现监控报警效果(五)

#修改权限目录,id 1000的账号chown -R meng.meng data*chmod -R 777 data*#docker-compose.yamlversion: 3.8 services:filebeat:# 镜像名称image: docker.elastic.co/beats/filebeat:8.6.0# 容器名称hostname: filebeatcontainer_name: filebeat#ports:# - 5044:5044volumes:…

作者头像 李华
网站建设 2026/8/24 15:07:13

小程序面试指南

一、为什么会出现小程序? App太重,H5网页太糙 小程序是 App 和 H5 网页之间的“黄金平衡点”。它既保留了 App 流畅的体验和强大的功能,又拥有了 H5 网页无需下载、极其轻便的优势。 App、H5、小程序对比 对比维度原生AppH5网页小程序获取…

作者头像 李华