python物性库能调用哪些物质_Python获取热物性(2)使用ctREFPROP调用refprop
前面一篇文章介紹了通過python-refprop和coolprop調用refprop。不過前者需要使用32位Python,后者我之前嘗試遇到了bug暫時沒法用。這里提供另一個python包ctREFPROP的使用。
1.安裝
可以直接下載github上的源文件使用,github地址usnistgov/REFPROP-wrappers?github.com
這里包括了各種程序語言的封裝,如Python、Matlab等。
另外發現昨天(2018.03.16)作者已經提交到pypi了,也就是可以直接pip安裝,地址:Python Package Index?pypi.python.org
2.簡單使用
作為Python小白,不大懂Python調用dll之類的機制,多虧作者(Ian H. Bell)的幫助,現在才略微能在腳本中調用了。這里大概總結下常用的物性獲取辦法。
2.1獲取單質物性
# Standard library imports
import os, sys
# 加載模塊
import ctREFPROP.ctREFPROP as ct
# 加載64位的refprop dll文件
# r = ct.REFPROPFunctionLibrary(os.environ['RPPREFIX'],'dll') #自動加載,需要配置環境變量RPPREFIX
r = ct.REFPROPFunctionLibrary('C:\\Program Files (x86)\\REFPROP\\REFPRP64.DLL', 'dll') #需要有64位dll文件
r.SETPATHdll(os.environ['RPPREFIX'])
# 組分,溫度,壓力等
z = [1]
T = 200 # K
p = 101.325 # kPa
# 指定fulid,配置組分
r.SETUPdll(1, 'NITROGEN.FLD', 'HMX.BNC', 'DEF')
r.SETREFdll("DEF",1,z,0,0,0,0)
#通過T,p,z獲取其他物性并存儲
D, Dl, Dv, x, y, q, e, h, s, Cv, Cp, w, ierr, herr = r.TPFLSHdll(T,p,z)
'''輸出結果:TPFLSHdlloutput(D=0.061065454702255176, Dl=0.061065454702255176, Dv=0.061065454702255176, x=[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], y=[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], q=998.0, e=4139.41341698618, h=5798.698531525056, s=179.8247944121532, Cv=20.814883344842936, Cp=29.232131360298638, w=288.10310108866116, ierr=0, herr='')'''
#通過T,D獲取傳輸物性
eta, tcx, ierr, herr = r.TRNPRPdll(T,D,x)
# 摩爾質量
wm = r.WMOLdll(z)
print('wm',wm,'kg/kmol')
print('D', D*wm, 'kg/m^3') #kg/kmol*mol/L=kg/kL=kg/m^3
print('cv', Cv/wm, 'kJ/(kg.K)') #J/(mol.K)/(kg/kmol)=kJ/(kg.K)
print('cp', Cp/wm, 'kJ/(kg.K)') #J/(mol.K)/(kg/kmol)=kJ/(kg.K)
print('eta--viscosity',eta,'uPa.s')
print('tcx--thermal conductivity',tcx,'W/m.K')
print('h',h/wm,'kJ/kg')
print('s',s,'J/(mol*K)')
print('s',s/wm,'kJ/(kg*K)')
'''輸出結果wm 32.812376 kg/kmolD 2.010561102331068 kg/m^3cv 0.6668078838560344 kJ/(kg.K)cp 0.9269061085452485 kJ/(kg.K)eta--viscosity(uPa.s) 12.084726157464596 uPa.stcx--thermal conductivity 0.015634933459660685 W/m.Kh 295.7634557720844 kJ/kgs 162.89959614095946 J/(mol*K)s 4.964577881862607 kJ/(kg*K)'''
2.1自定義混合物
大致步驟一樣,除了定義部分不一樣。
如二元混合物
z = [0.5,0.5]
r.SETUPdll(2, 'CO2.FLD|NITROGEN.FLD', 'HMX.BNC', 'DEF')
r.SETREFdll("DEF",1,x,0,0,0,0)
多元混合物
z = [0.788840469789739, 0.209691770450437, 0.001467759759824] + [0]*17
r.SETUPdll(3, 'NITROGEN.FLD|OXYGEN.FLD|WATER.FLD', 'HMX.BNC', 'DEF')
r.SETREFdll("DEF",1,z,0,0,0,0)
3.其他實際上還有很多函數可以使用,詳細可參見源代碼及官方說明
使用時注意默認的單位,如下所示
"""
An example of calling the legacy API of REFPROP
By Ian Bell, NIST, 2018, ian.bell@nist.gov
temperature K
pressure, fugacity kPa
density mol/L
composition(組分) mole fraction
quality(干度) mole basis (moles vapor/total moles)
enthalpy, internal energy J/mol
Gibbs, Helmholtz free energy J/mol
entropy, heat capacity J/(mol.K)
speed of sound m/s
Joule-Thomson coefficient K/kPa
d(p)/d(rho) kPa.L/mol
d2(p)/d(rho)2 kPa.(L/mol)^2
viscosity microPa.s (10^-6 Pa.s)
thermal conductivity W/(m.K)
dipole moment debye
surface tension N/m
"""
總結
以上是生活随笔為你收集整理的python物性库能调用哪些物质_Python获取热物性(2)使用ctREFPROP调用refprop的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存融合:数据处理新利器
- 下一篇: 固态硬盘:电脑性能提升利器