
科学计算【免费下载链接】CoolPropThermophysical properties for the masses项目地址https://gitcode.com/gh_mirrors/co/CoolProp点击查看免费下载导读CoolProp 是一个以 C 为核心的开源热物理性质thermophysical properties数据库覆盖纯流体、伪纯流体、混合物、不可压缩流体/盐水、湿空气与天然气等多种工质的物性计算。本文基于仓库官方文档Web/index.rst及其关联子文档系统梳理 CoolProp 的能力清单、支持环境、PropsSI高阶用法相位强制、偏导数、参考状态、低层AbstractState接口以及 SVDSBTL / TTSE / BICUBIC 表格加速后端与 IF97、湿空气模块的实现细节。读完本文你将掌握 CoolProp 从一行代码查密度到亚微秒级批量物性查询的完整技术路径并能直接对照仓库源码理解其底层原理。一、CoolProp 是什么CoolProp 是一个开源的 C 物性计算库以Thermophysical properties for the masses为定位实现了对纯流体与伪纯流体的高精度亥姆霍兹Helmholtz状态方程与输运性质计算。根据官方门户文档 Web/index.rst其核心能力包括纯流体与伪纯流体状态方程与输运性质覆盖 137 种流体的完整 JSON 数据见 dev/fluids 目录下的 137 个*.json文件详细列表见 纯流体与伪纯流体物性混合物性质基于高精度亥姆霍兹能公式Kunz 与 Lemmon 系列工作见 混合物不可压缩流体与盐水的物性关联式见 不可压缩流体计算高效的表格插值SVDSBTLSVDSBTL 后端或 bicubic/TTSE表格插值最高精度的湿空气psychrometric例程见 湿空气物性对 NIST REFPROP 全功能的友好封装见 REFPROP快速的 IAPWS-IF97 工业公式水/蒸汽计算见 IF97立方型状态方程SRK、PR见 立方型状态方程后端PC-SAFT 状态方程见 PC-SAFT 后端严格的 GERG-2004 / GERG-2008 天然气状态方程见 GERG 后端。从源码结构看这些能力被组织为多个独立后端目录src/Backends包括HelmholtzHEOS纯流体与混合物、IF97、Cubics、PCSAFT、GERG、Incompressible、REFPROP、SVDSBTL、Tabular等每个后端都通过实现统一的AbstractState协议接入库框架这一点在低层接口部分详述。许可与使用方式CoolProp 采用灵活的许可条款商业项目与学术工作均可免费使用具体以仓库根目录的 LICENSE 为准。Python 用户可通过pip install CoolProp安装官方发布版源码构建方式参见 CMake 构建说明 与 开发文档。二、支持的环境CoolProp 的核心是 C 库因此几乎任何能编译 C 的平台都可以运行。编程语言完全功能封装Python2.x 与 3.x基于 CythonPython 封装文档C静态库说明与共享库/DLL说明Modelica通过 ExternalMedia 库、Octave、C#、VB.NET、MathCAD、Java、Android、MATLAB多数基于 SWIG 生成。高层接口封装仅使用PropsSI/HAPropsSI等函数LabVIEW、EES、Microsoft Excel、LibreOffice、JavaScript、PHP、FORTRAN、Maple、Mathematica、Scilab、Delphi Lazarus、Julia。架构与操作系统32 位 / 64 位Windows、Linux、macOSOSX、树莓派Raspberry Pi、VxWorks CompactRIO 等——如文档所述如果你能在它上面编译 CCoolProp 就能运行。完整的封装清单、各目标平台的操作系统支持与备注见 封装列表。无论哪种封装所有PropsSI调用最终都会落到 C 层的同一实现上见 CoolPropLib.h该头文件以 C 风格字符串与double*数组定义了 DLL 导出接口供 Excel、FORTRAN、Julia 等无法直接实例化 C 类的语言调用。三、快速上手High-Level 接口与 PropsSI3.1 一行代码查密度绝大多数用户需要的只是一个PropsSI调用。以氮气为例计算 298 K、101325 Pa 下的密度Dfrom CoolProp.CoolProp import PropsSI rho PropsSI(D, T, 298.15, P, 101325, Nitrogen)参数语义参见 高层接口文档第 1 个参数D是输出物性第 2、4 个参数T、P是指定状态的输入属性对第 3、5 个参数是这两个输入属性的数值第 6 个参数是工质名全部为需要加引号的字符串。再如水的常压饱和温度Q0表示饱和液态T_sat PropsSI(T, P, 101325, Q, 0, Water) # 约 373.124 K仓库中提供了完整的 C 示例与运行输出见 propssi.cxx 与 propssi.cxx.output后者演示了Propane[0.5]Ethane[0.5]在默认 HEOS、显式HEOS::与REFPROP::下得到一致结果 40.8269。更多可运行的PropsSI示例参见 示例页。3.2 输入属性的速度差异状态方程以T和ρ为独立变量因此T, ρ永远是最快的输入P, T稍慢约 3–10 倍既不含T也不含ρ的输入对如P, H要慢得多。若对速度敏感可改用 SVDSBTL SVD 压缩表格后端若只关心水可使用 IF97 工业公式后端。3.3 气相、液相与饱和态若输入对如P, T落在气相区返回气相物性落在液相区则返回液相物性。当输入对落在饱和压力附近 1E-4% 以内时由于饱和曲线上液态和气态同时被定义CoolProp 可能返回错误。要显式获取饱和曲线上的气/液物性请在输入对中给出饱和温度T或压力p与干度QQ1取饱和气相Q0取饱和液相。例如 1 大气压下水的汽化潜热from CoolProp.CoolProp import PropsSI H_V PropsSI(H, P, 101325, Q, 1, Water) # 饱和汽焓J/kg H_L PropsSI(H, P, 101325, Q, 0, Water) # 饱和液焓J/kg latent H_V - H_L # 汽化潜热3.4 相位强制Imposing the Phase每次PropsSI调用都需要根据输入对判定相态并可能需要一次非平凡的闪蒸flash计算来生成求解器的初值。为提升效率CoolProp 允许通过输入键字符串手动强制相态在一个且仅一个输入键后追加|分隔符与相态字符串。相态字符串相区liquidp pcrit 且 T Tcrit饱和线上方gasp pcrit 且 T Tcrit饱和线下方twophasep pcrit 且 T Tcrit液/气混合supercritical_liquidp pcrit 且 T Tcritsupercritical_gasp pcrit 且 T Tcritsupercriticalp pcrit 且 T Tcritnot_imposed默认由 CoolProp 自动判定相态示例# 在 T461.1 K、P5.0e6 Pa 处强制液相求密度 PropsSI(D, T|liquid, 461.1, P, 5e6, Water) # 在 T597.9 K、P5.0e6 Pa 处强制气相求密度 PropsSI(D, T, 597.9, P|gas, 5e6, Water)语法约束每次调用都会重置为not_imposed因此强制相态需要每次调用都显式写以下情况会报错——分隔符不是|、相态字符串不在上表、或对多个输入键同时施加相态。为与低层接口保持一致合法相态字符串还可加phase_或iphase_前缀如phase_liquid。⚠️重要警告强制相态时输入对必须确实落在所指定的相区内。若相态指定错误PropsSI可能抛出意外错误或返回错误结果。若不确定状态点相态最好让 CoolProp 自动判定。3.5 查看版本信息import CoolProp CoolProp.__version__ # 当前版本 CoolProp.__gitrevision__ # 当前 git 修订号 # 或通过全局参数 CP.get_global_param_string(version) CP.get_global_param_string(gitrevision)四、流体信息查询与平凡输入4.1 get_fluid_param_string用get_fluid_param_string获取流体的字符串编码信息以 R125 为例import CoolProp.CoolProp as CP for k in [formula, CAS, aliases, ASHRAE34, REFPROP_name, pure, INCHI, INCHI_Key, CHEMSPIDER_ID]: print(k, --, CP.get_fluid_param_string(R125, k))这些字段分子式、CAS 号、别名、ASHRAE 34 编号、InChI 等均来自 dev/fluids 下的流体 JSON 文件是官方提供的可验证元数据。4.2 平凡输入Trivial Inputs不依赖热力学状态的物性如临界温度无需完整状态确定可用Props1SI直接获取Props1SI(Tcrit, Water)Python 中PropsSI被重载为也接受两个参数或用哑元占位CP.PropsSI(Tcrit, Water) CP.PropsSI(Tcrit, REFPROP::WATER) CP.PropsSI(Tcrit, , 0, , 0, Water) # 所有语言通用写法PropsSI的完整输入/输出参数表见高层接口文档的参数表章节。五、相态查询PhaseSI想知道某个状态点的相态可用高层函数PhaseSIimport CoolProp.CoolProp as CP CP.PhaseSI(P, 101325, Q, 0, Water)也可通过PropsSI(Phase, ...)获得浮点型相态索引并用get_phase_index查询整型索引对应的相态标志CP.PropsSI(Phase, P, 101325, Q, 0, Water) CP.get_phase_index(phase_twophase) # 例如返回 5 CP.get_phase_index(phase_liquid)在 T-p 坐标下绘制给定流体的相区分布液相、气相、超临界、超临界液相/气相、熔化线、饱和线的完整 Python 绘图脚本见 高层接口文档该文档使用AbstractStatekeyed_output与melting_line绘制熔化曲线与饱和曲线可作为相图绘制的可直接运行模板。六、偏导数计算6.1 一阶偏导单相态CoolProp 实现了通用一阶偏导数编码格式为d(OF)/d(WRT)|CONSTANT即数学上的 $\left.\partial OF/\partial WRT\right|_{CONSTANT}$。底层调用 AbstractState::first_partial_deriv见 CoolProp.h 高层函数声明。⚠️ 该导数公式目前仅对均相单相状态有效两相导数未定义且对许多组合无意义。定压比热 $c_p\left.\partial h/\partial T\right|_p$ 的两种求法import CoolProp.CoolProp as CP CP.PropsSI(C, P, 101325, T, 300, Water) # 直接查 C CP.PropsSI(d(Hmass)/d(T)|P, P, 101325, T, 300, Water) # 用导数串6.2 二阶偏导单相态同理可求二阶导数例如 $c_p$ 对定压焓的导数d(d(Hmass)/d(T)|P)/d(Hmass)|P其中内层d(Hmass)/d(T)|P即 $c_p$ 的定义CP.PropsSI(d(d(Hmass)/d(T)|P)/d(Hmass)|P, P, 101325, T, 300, Water)6.3 饱和曲线导数沿饱和曲线的导数同样可用字符串编码例如饱和汽曲线上的焓导数|sigma表示沿饱和线CoolProp.CoolProp.PropsSI(d(Hmolar)/d(T)|sigma, P, 101325, Q, 1, Water)⚠️ 该公式仅对干度为 0 或 1 的饱和态有效。对于性能敏感场景应改用低层接口的first_partial_deriv/second_partial_deriv避免字符串解析开销见下一节。七、低层接口AbstractState7.1 为什么需要低层接口高层PropsSI内部会调用低层接口但低层接口只使用枚举整数与浮点数、不使用字符串省去了昂贵的字符串比较与解析因此快得多。在 C 层代码基于AbstractState抽象基类include/CoolProp/AbstractState.h它定义了各物性后端必须实现的协议因此扩展一个全新物性库如 REFPROP只需让它的接口适配AbstractState结构即可无缝接入。关键使用原则详见 低层接口文档每种流体或混合物只实例化一个后端实例然后反复调用其方法——构造函数有计算开销使用表格后端TTSE、BICUBIC、SVDSBTL时必须尽量少创建AbstractState实例SVDSBTL 每次构造有约 80–140 ms 的表加载开销进程内的内存缓存可缓解见下文在 C 中AbstractState::factory返回裸指针强烈建议用shared_ptr包裹以便自动析构。7.2 最小示例Pythonimport CoolProp HEOS CoolProp.AbstractState(HEOS, Water) HEOS.update(CoolProp.DmolarT_INPUTS, 1e-6, 300) # (ρ, T) 输入极低密度态 print(HEOS.p()) print([HEOS.keyed_output(k) for k in [CoolProp.iP, CoolProp.iHmass, CoolProp.iHmolar]])输入对可用generate_update_pair(iT, 300, iDmolar, 1e-6)由已知两个变量与值但不知顺序的情况生成返回如CoolProp.DmolarT_INPUTSkeyed_output(k)与访问器函数如rhomolar()等价但便于按键迭代。7.3 低层独有功能以下功能仅存在于低层接口源码文档相位指定加速HEOS.specify_phase(CoolProp.iphase_gas)可跳过饱和边界检查、直接求值状态方程视输入对可提速约 10%相态常量相区iphase_liquidp pcrit 且 T Tcrit饱和线上方iphase_gasp pcrit 且 T Tcrit饱和线下方iphase_twophasep pcrit 且 T Tcrit液/气混合iphase_supercritical_liquidp pcrit 且 T Tcritiphase_supercritical_gasp pcrit 且 T Tcritiphase_supercriticalp pcrit 且 T Tcritiphase_not_imposed默认由 CoolProp 自动判定取消指定可用HEOS.specify_phase(CoolProp.iphase_not_imposed)或HEOS.unspecify_phase()相位指定应在调用update()之前进行。混合物露点计算与饱和相组成HEOS CoolProp.AbstractState(HEOS, MethaneEthane) HEOS.set_mole_fractions([0.2, 0.8]) HEOS.update(CoolProp.PQ_INPUTS, 101325, 1) # 露点 HEOS.saturated_liquid_keyed_output(CoolProp.iDmolar) HEOS.saturated_vapor_keyed_output(CoolProp.iDmolar) HEOS.mole_fractions_liquid() HEOS.mole_fractions_vapor() # 应为整体组成低层偏导数比高层导数串快得多HEOS.update(CoolProp.PT_INPUTS, 101325, 300) HEOS.first_partial_deriv(CoolProp.iHmass, CoolProp.iT, CoolProp.iP) # ≈ cpmass HEOS.second_partial_deriv(CoolProp.iSmass, CoolProp.iT, CoolProp.iDmass, CoolProp.iDmass, CoolProp.iT)两相与饱和导数两相导数Thorade 公式在first_two_phase_deriv饱和曲线导数在first_saturation_deriv/second_saturation_deriv。其中干度导数 $d(Q)/d(Hmolar)|P$ 与 $d(Q)/d(P)|Hmolar$ 由杠杆法则 $Q(h-h)/(h-h)$ 直接导出仅限纯流体混合物有温度滑移、伪纯流体泡露线压力不同杠杆法则不成立且在临界点发散。注意表格后端BICUBIC、TTSE不实现这两个导数应请求 HEOS 或 REFPROP 后端。多重饱和根的消歧少数饱和闪蒸输入对如气相侧的HmolarQ_INPUTS/HmassQ_INPUTS水的液相侧DmolarQ_INPUTS在同一输入值下存在两个温度解水的饱和汽焓约在 540 K 达峰、饱和液密度约在 4 °C 达峰。CoolProp 现在对处于多根区域的普通update调用抛出MultipleSolutionsError而非静默选一个要选择特定根用update_with_guesses并通过GuessesStructure.T提供温度提示内部利用切比雪夫超辅助曲线的单调子区间与 TOMS748 求根。首次懒构建量热超辅助曲线约需 10–50 ms之后每次调用约微秒级。7.4 参考状态焓与熵是相对量应始终比较差值而非绝对值。需要时可用set_reference_statePython或set_reference_stateS其他语言设置标准参考状态IIR0 °C 饱和液处 h 200 kJ/kgs 1 kJ/kg/KASHRAE-40 °C 饱和液处 h 0s 0NBP1 大气压饱和液处 h 0s 0DEF恢复流体默认参考状态。示例n-Propaneimport CoolProp.CoolProp as CP CP.set_reference_state(n-Propane, ASHRAE) CP.PropsSI(H, T, 233.15, Q, 0, n-Propane) # 应接近 0 CP.set_reference_state(n-Propane, DEF) # 恢复 CP.PropsSI(H, T, 233.15, Q, 0, n-Propane) # 不再为 0也支持自定义参考状态给定温度与摩尔密度处的 h、s 值Dmolar CP.PropsSI(Dmolar, T, 298.15, P, 101325, NH3) CP.set_reference_state(NH3, 298.15, Dmolar, -60000.12, 314.159) # 流体, T, D(mol/m³), h(J/mol), s(J/mol/K)⚠️ 参考状态的更改应作为程序初始化的一部分不要在计算过程中反复修改低层AbstractState实例在工厂创建后不会感知后续参考状态变更这是有意设计需在创建实例前设置。八、混合物预定义与自定义8.1 预定义混合物CoolProp 内置一批预定义混合物用get_global_param_string(predefined_mixtures)获取逗号分隔列表用.mix后缀按名调用import CoolProp.CoolProp as CP CP.get_global_param_string(predefined_mixtures).split(,)[0:6] CP.PropsSI(D, P, 101325, T, 300, Air.mix)完整预定义混合物清单含组分、摩尔分数与不可用备注见 混合物文档。8.2 用户自定义混合物用连接组分、[...]括起摩尔分数# R410A 组分编码 CP.PropsSI(D, T, 300, P, 101325, HEOS::R32[0.697615]R125[0.302385]) # 三元及以上混合物同理依次追加8.3 混合物 PT 闪蒸与二元交互参数混合物的热力学建模比纯流体复杂得多CoolProp 采用经典的两阶段 Michelsen 方法稳定性分析 相分裂计算实现等温等压PT闪蒸算法选择由配置键MIXTURE_STABILITY_ALGORITHM控制1为 v8.0 起的默认 Michelsen 算法0为 v7.x 及更早的 Gernert 遗产算法详细的两阶段流程、TPD 稳定性判据、Wilson K 因子初始化、Rachford-Rice 方程与 GDEM 加速描述见 混合物文档。其流程结构可参见仓库中的 PT 闪蒸流程图 pt-flash-flowchart.png交互参数估计对缺少交互参数的二元对可用两种估计方案应谨慎使用、只适用于性质相近的流体linear$T_r$、$v_r$ 为两纯流体值随摩尔组成的线性函数Lorentz-Berthelot所有交互参数取 1.0。CP.apply_simple_mixing_rule(Helium, Xenon, linear) CP.PropsSI(Dmass, T, 300, P, 101325, Helium[0.5]Xenon[0.5])自定义交互参数先设置配置布尔量OVERWRITE_BINARY_INTERACTION true默认 false禁止覆盖已有参数再用set_mixture_binary_pair_data按 CAS 号设置betaT、gammaT、betaV、gammaV等低层接口可用AS.set_binary_interaction_double(0, 1, betaT, 0.987)仅对单个实例生效。仓库中所有已发布二元对的参数保存在 dev/mixtures/mixture_binary_pairs.json同一二元对存在多个已发布模型时最后一条记录生效较新的关联式以追加方式排在旧记录之后例如 H2{CH4, N2, CO, CO2} 先列 GERG-2008 参数、后列 Beckmüller 2021 参数。还原参数与超额亥姆霍兹能混合物建模基于还原密度/温度函数Lemmon 的 $1/\rho_r\sum x_i/\rho_{c_i}\sum\sum x_ix_j\zeta_{ij}$ 形式或 GERG-2008 的 $\beta_{T,ij}\gamma_{T,ij}$ 形式与超额亥姆霍兹能 $\alpha^E$具体公式与从 Lemmon 形式到 GERG-2008 形式的转换推导见 混合物文档。九、高速表格后端SVDSBTL、TTSE 与 BICUBIC对压力-焓这类工程常用输入直接求值完整状态方程太慢。CoolProp 提供三个表格后端详见 表格插值文档BICUBIC、TTSE与SVDSBTL。9.1 TTSE 与 BICUBICTTSETabular Taylor Series Extrapolation在规则网格上缓存函数值及其导数用区间二分定位后按泰勒展开插值$$zz_{i,j}\Delta x\left(\frac{\partial z}{\partial x}\right){y}\Delta y\left(\frac{\partial z}{\partial y}\right){x}\frac{1}{2}\Delta x^2\left(\frac{\partial^2 z}{\partial x^2}\right){y}\frac{1}{2}\Delta y^2\left(\frac{\partial^2 z}{\partial y^2}\right){y}\Delta x\Delta y\left(\frac{\partial^2 z}{\partial y\partial x}\right)$$BICUBIC则以单位方格四个角点的函数值与导数拟合双三次曲面与 Wikipedia 所述标准方法一致。表格默认存放在$HOME/.CoolProp/Tables/可用CP.get_global_param_string(HOME)查询或用配置项ALTERNATIVE_TABLES_DIRECTORY换目录默认网格 200×200可用配置项TABULAR_NX/TABULAR_NY或工厂串选项?{grid:{Nx:400,Ny:400}}调高分辨率临界区网格较粗是误差的主要来源。每次流体生成表格约产生 20 MB 数据表格目录默认超过 1 GB 会警告、1.5 GB 会报错可用配置键MAXIMUM_TABLE_DIRECTORY_SIZE_IN_GB调整。9.2 SVDSBTLSVD 压缩表格查找后端SVDSBTL是面向新代码推荐的高吞吐表格后端SVDSBTL 文档由三层构成区域图谱Region atlas把 $(p,h)$ 或 $(p,T)$ 包络划分为 3–7 个不相交区域LIQUID/VAPOR/SUPERIF97 源另有 R1/R3、R2/R3 边界分裂每个区域用两条解析边界曲线归一化到 $[0,1]$逐区域 SVD每个属性ρ, h, s, u, w, η, λ表示为稠密 $N_h\times N_p$ 采样网格默认 200×800、秩 r20的秩-r SVD密度与输运性质用对数变换以适配 SVD 的光滑性假设临界区补丁回退临界点附近的 $\partial\rho/\partial p|_h$ 尖点无法用有限秩表达SVDSBTL 自动标定一个小矩形补丁默认水为 $[0.95,1.05]T_c\times[0.75,1.15]p_c$按流体自动收缩并缓存到 sidecar 文件落在补丁内的查询直接转发给源后端。import CoolProp.CoolProp as CP AS CP.AbstractState(SVDSBTLIF97, Water) # IAPWS G13-15 一致 AS CP.AbstractState(SVDSBTLHEOS, Methane) # 多流体 HEOS AS CP.AbstractState(SVDSBTLREFPROP, Water) # REFPROP 真值支持的源后端为HEOS、REFPROP、IF97仅水不能单独写SVDSBTL无默认真值源。已表格化的输入对HmassP_INPUTS工业主导、PT_INPUTS、PSmass_INPUTS、DmassT_INPUTS摩尔基输入从质量基表乘除摩尔质量得到两相PQ/QT沿饱和线用 SuperAncillary/代理快速路径或源闪蒸解析。三种性能模式源码文档中给出了 Apple Silicon 上的实测数据复用实例 update表加载摊薄到整个工作负载单相区原生 C 约 200 ns/次两相/饱和线约 1–1.5 µs/次fast_evaluate批量路径无实例变更、无逐点封装编组共享定位与 Hermite 基计算4 输出查询约 300–330 ns/探针超临界区每个附加输出边际约 35 ns——CFD 规模每时间步 ≥10 万探针的唯一合理选择PropsSI高层包装默认关闭每次调用都会构造后端、首次需加载 7–14 MB 表约 80–140 ms因此默认通过配置键ALLOW_SVDSBTL_IN_PROPSSI关闭仅适合交互式/脚本用途。进程级线程安全 LRU 内存缓存SVDSBTL_SURFACE_CACHE_MAX_ENTRIES默认 16、SVDSBTL_SURFACE_CACHE_MAX_SIZE_MB默认 512可让同一进程内相同(流体, 源, 输入对, 选项)的二次构造退化为一次哈希查找。表构建可用SVDSBTL_SAMPLING_THREADS并行默认 14 线程约 2.25× 加速REFPROP 源因线程安全自动回退串行。配置键速查ALLOW_SVDSBTL_IN_PROPSSI默认 false、ALTERNATIVE_SVDTABLES_DIRECTORY默认空重定向.svd.bin.z与.critpatch.bin缓存目录、SVDSBTL_SURFACE_CACHE_MAX_ENTRIES、SVDSBTL_SURFACE_CACHE_MAX_SIZE_MB、SVDSBTL_SAMPLING_THREADS。工厂串选项如{grid:{NT:200,NR:800,rank:20}}、{prebuild:true}预构建全部输入对表面不改变表内容、不进入 OptHash与critical_patch覆盖项见 后端选项文档。精度包络据官方文档SVDSBTLIF97::Water的 $T(p,h)$ 在 R1/R2/R5 符合 IAPWS G13-15 预算最大 2.79/8.52/1.81 mK 对 25/10/10 mK 预算SVDSBTLHEOS在亚临界包络上 ρ、h、s 相对误差约 $10^{-3}$极端区域角点峰值约 1%SVDSBTLREFPROP在测试探针上匹配 REFPROP 真值到其数值噪声底。9.3 表格数据格式BICUBIC/TTSE的表格以 zlib 压缩的 msgpack 格式存盘single_phase_logph.bin.z、single_phase_logpT.bin.z、phase_envelope.bin.z文档给出了用 Pythonmsgpackzlib解包查看 T/h/p/ρ 矩阵的完整脚本表格插值文档。十、IF97 水/蒸汽后端IAPWS-IF97 工业公式是压力基而非密度基的水/蒸汽快速公式比 IAPWS-95 亥姆霍兹公式快但精度略低除临界点附近外所有性质不确定度在 1% 内多数区域在 0.1% 内。IF97 后端最初是为湿空气后端开发的快速水性质计算现已成熟为覆盖绝大多数正反向公式的独立后端详见 IF97 文档。分区结构IF97 按构造分段Region 1 压缩液T ≤ 623.15 K逆向 Gibbs $g_1(T,p)$Region 2 过热蒸汽与高温气体至 1073.15 K$g_2(T,p)$Region 3 稠密超临界/近临界T ≥ 623.15 K、p ≥ p_B23(T)是唯一用 $\rho,T$ 参数化的区域$f_3(\rho,T)$Region 4 饱和曲线仅 $p_\mathrm{sat}(T)$Region 5 高温扩展1073.15–2273.15 K至 50 MPa$g_5(T,p)$。区域边界为解析曲线R2/R3 边界 $p_{B23}(T)1.0193\times10^{-3}(T-572.545)^213.919$ MPaT ∈ [623.15, 863.15] KR1/R3 边界为等温线 T 623.15 K。由于各区域基本方程不同$c_p, s, w$ 在边界处有结构性扭结值连续、导数不连续下游插值器必须沿边界切分区域这正是 SVDSBTL 图谱沿 $p_{B23}$ 分裂的原因。使用方式仅支持IF97::Water别名IF97::H2O大小写不敏感。输出键包括T, P, D, C, Cvmass, U, H, S, A, V, L, I, Prandtl及平凡量M, Tmin, Tmax, Pmin, Pmax, Ttriple, Tcrit, ptriple, pcrit。五个已知限制不支持通用偏导数不支持混合物设置参考状态无效参考状态固定为三相点饱和液的 U、S 恒为零不支持固态熔点-升华线不使用T_min 统一限制为 273.15 K。from CoolProp.CoolProp import PropsSI PropsSI(C, T, 500, P, 101325, IF97::Water) # 500 K、1 atm 比热 PropsSI(D, T, 500, P, 101325, IF97::Water) # 密度 PropsSI(P, T, 500, Q, 0, IF97::Water) # 500 K 饱和压力十一、湿空气HAPropsSI湿空气模块湿空气物性文档基于 Hermann 等的论文ASHRAE 研究项目 RP-1485 成果与 ASHRAE Handbook 2009 参考饱和表同源适用压力 0.01 kPa–10 MPa、温度 -143.15–350 °C、湿度比 0–10 kg 水/kg 干空气。湿空气被建模为干空气伪纯气体与水蒸气真实气体的混合物由干球温度 T、总压 p 与水摩尔分数 $\psi_w$ 三个变量固定状态湿度比 W、相对湿度 φ 与露点温度是获取 $\psi_w$ 的三种非迭代途径。摩尔体积用截断维里方程 $p\bar R T/\bar v(1B_m/\bar vC_m/\bar v^2)$增强因子 f 描述空气对水饱和蒸气压的影响。from CoolProp.HumidAirProp import HAPropsSI # 25 °C、1 atm、相对湿度 50% 的焓J/kg 干空气 h HAPropsSI(H, T, 298.15, P, 101325, R, 0.5) # 用该焓反求饱和空气温度——输入顺序无关 T HAPropsSI(T, P, 101325, H, h, R, 1.0)HAPropsSI的输入/输出参数表湿球温度B/Twb/T_wb、露点D/Tdp/DewPoint、焓H/Hda/Enthalpy、湿度比W/Omega/HumRat、相对湿度R/RH/RelHum、水摩尔分数psi_w/Y、比热C/CV/Cha/CVha、熵S/Sha、体积V/Vda/Vha、黏度M/Visc/mu、导热K/k/Conductivity、压缩因子Z等含单位与输入/输出标志完整列于 湿空气文档。注意湿球温度在水的三相点273.16 K处因灯芯由液态水切换为冰而发生不连续跳变位于不可达带的湿球温度输入如HAPropsSI(Tdb,Twb,273.15,RelHum,0.01,P,89000)无物理解CoolProp 会抛出指明三相点的ValueError而非返回误导值。十二、调用 REFPROP安装了 REFPROP 库时可用REFPROP::前缀以与调用 CoolProp 完全相同的方式调用 REFPROPimport CoolProp.CoolProp as CP CP.PropsSI(D, T, 300, P, 101325, HEOS::R32[0.697615]R125[0.302385]) # CoolProp 计算 CP.PropsSI(D, T, 300, P, 101325, REFPROP::R32[0.697615]R125[0.302385]) # REFPROP 计算低层同样支持CoolProp.AbstractState(REFPROP, WATER)。REFPROP 封装的详细说明见 REFPROP 文档。十三、添加流体所有流体以 JSON 格式编译进库源数据保存在 dev/fluids。可运行时读取并回填import CoolProp.CoolProp as CP jj CP.get_fluid_param_string(Water, JSON) # 获取水的 JSON 结构 CP.add_fluids_as_JSON(HEOS, jj) # 已存在会报错 CP.set_config_bool(CP.OVERWRITE_FLUIDS, True) # 允许覆盖 CP.add_fluids_as_JSON(HEOS, jj) # 成功 CP.set_config_bool(CP.OVERWRITE_FLUIDS, False) # 恢复十四、后端选项字符串与配置机制CoolProp 的每个实例级后端配置通过工厂字符串的 JSON 后缀传递后端选项文档SVDSBTLHEOS::Water # 无选项全部使用 schema 默认 SVDSBTLHEOS::Water?{critical_patch:off} # 内联 JSON SVDSBTLHEOS::Water?/path/to/cfg.json # 文件间接引用 HEOS::Water?{} # 空选项无操作解析器在第一个?处分割其后全部视为单个 JSON 值或以开头的文件路径选项可挂在后端半区或流体半区但两半区同时携带选项会抛ValueError。每个支持选项的后端都内置 JSON SchemaDraft 2020-12源码位于 include/CoolProp/schemas未知键、类型不匹配、缺必填键、枚举越界都会在构造时立即抛出。build_options_json()返回实例构造所用的规范化 JSON递归排序键便于字节级复现缓存后端的文件名包含规范化字节的 FNV-1a 64 十六进制前缀。该机制之所以选 JSON 后缀而非 setter/全局配置/构建器 API是因为它能保证缓存键不变性、实例级隔离、零封装代码改动具体决策轨迹见 设计文档。现有 Configuration 全局键如BICUBIC_GRID_NT/NR、TTSE_GRID_NT/NR、ALTERNATIVE_REFPROP_*将逐步迁移为选项键grid.NT/NR、library_path/hmx_path/root_path迁移期间全局键继续可用至少一个发布周期。十五、帮助、支持与社区按官方门户文档 Web/index.rst 的建议一般性讨论请发布到官方 DiscussionsBug 与功能请求请提交到 issue 跟踪器请不要直接给开发者发邮件以便讨论可被检索支持项目可参阅 赞助页。在出版物中引用 CoolProp 时请参照 引用信息页。十六、总结如何选择调用路径需求推荐路径依据一次性的简单物性查询PropsSI/Props1SI/HAPropsSI高层接口文档大量重复计算、需要闪蒸/饱和相组成/低层导数复用AbstractState实例低层接口文档电力循环、制冷、CFD 中的 $(p,h)$ 查询1 万探针/实例SVDSBTL复用实例或fast_evaluateSVDSBTL 文档水/蒸汽工业计算、追求最高速度IF97::Water或SVDSBTLIF97IF97 文档湿空气、HVAC 工况HAPropsSI湿空气文档天然气GERG-2004/2008 严格公式GERG2008::/GERG2004::GERG 后端文档结合本文的源码路径指引src/Backends 各后端实现、include/CoolProp/AbstractState.h 抽象协议、dev/fluids 流体数据、include/CoolProp/CoolPropLib.h DLL 接口读者可以沿高层函数 → 底层协议 → 后端实现 → 数据文件的链路深入理解并复用 CoolProp 的完整技术栈。赞分享科学计算【免费下载链接】CoolPropThermophysical properties for the masses项目地址https://gitcode.com/gh_mirrors/co/CoolProp点击查看免费下载相关推荐Terraboard多提供商配置实战同时管理AWS、GitLab和GCP状态Terraboard多提供商配置实战同时管理AWS、GitLab和GCP状态 Terraboard是一款功能强大的Terraform状态管理工具能够帮助团队CoolProp热力学物性计算开源解决方案CoolProp热力学物性计算开源解决方案 1. 项目概述与核心价值 1.1 解决什么问题 在工程热力学计算领域精确获取流体物性参数是系统设计与仿真的基础。科学计算CoolProp热力学物性计算库的完整使用指南CoolProp热力学物性计算库的完整使用指南 技术价值解析为什么选择CoolProp 在工程热力学计算中精确获取流体物性参数是系统设计与仿真的基础。传统解科学计算上一篇mojs与React结合在组件中集成高性能动画下一篇终极指南3个简单步骤让老款Mac运行最新macOS系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考