当前位置: 首页>編程日記>正文

用python计算ph_用于水和水蒸汽物性计算的Python模块——iapws

用python计算ph_用于水和水蒸汽物性计算的Python模块——iapws

在进行热力循环分析、流动传热计算时,需获得水和水蒸汽的物性参数。网上主流的水蒸汽物性计算程序是上海成套所的杨宇教授开发的,有Fortran、C、C#、VB等多个语言版本,还有桌面版本,被本专业学生和研究人员广泛使用。可以说杨教授为同行的便利做了很大贡献,本想贴一下他的个人博客的,但发现他的博客链接挂了。

最近打算使用混合编程,写个Python版本的水蒸汽物性计算的接口程序,搞个在线查询的web,然而google后发现已经有了用于水和水蒸汽物性计算的Python模块——iapws,不得不安利给大家。其实工科领域用Python的不多,要是有人用的话希望别重复造轮子。

1、简介

iapws是IAPWS标准的Python实现,包含一下几个模块:

IAPWS-IF97——水蒸汽

IAPWS-95——水蒸汽

IAPWS-06——冰

IAPWS-08——海水

IAPWS-17—— 重水

......

iapws依赖于numpy-scipy科学计算模块。本文主要介绍IAPWS-IF97模块的使用。IAPWS-IF97实现了5个区域的基本方程(下图)。可以看出压力、温度的范围是很宽的,足够满足工程需要。

2、使用

直接在控制台执行:pip install iapws,安装iapws时会自动安装numpy scipy这两个模块。

2.1 IAPWS97类

可以使用该IAPWS97类创建一个特定热力学状态的对象,该类的构造函数的关键字参数包括:

T:温度[K]

P:压力[MPa]

h:比焓[kJ/kg]

s:比熵[kJ/kgK]

x:干度[-]

有效的参数组合有:

T, P: 对两相无效

P, h

P, s

h, s

T, x: 仅适用于两相

P, x: 仅适用于两相

计算的物性参数如下表所示。我将自己认为常用的参数列在前面了。许多参数不知道什么意思,翻译也不知道有没有问题。可参考:http://iapws.readthedocs.io/en/latest/iapws.iapws97.html

P:压力[MPa]

a:亥姆霍兹自由能[kJ / kg]

joule:焦耳 - 汤姆森系数[K / MPa]

T:温度[K]

Z:压缩系数[ - ]

deltat:等温节流系数[kJ / kg·MPa]

v:比容量[m³/ kg]

fi:逸度系数[ - ]

region:地区

rho:密度[kg /m³]

f:逸度[MPa]

v0:理想比容[m³/ kg]

h:比焓[kJ / kg]

γ:等熵指数[ - ]

u0:理想的内能[kJ / kg]

u:特定内能[kJ / kg]

alfav:等压膨胀系数[1 / K]

h0:理想比焓[kJ / kg]

s:比熵[kJ / kg·K]

xkappa:等温压缩率[1 / MPa]

s0:理想比熵[kJ / kg·K]

cp:定压比热[kJ / kg·K]

kappas:绝热可压缩率[1 / MPa]

a0:理想亥姆霍兹自由能[kJ / kg]

cv:定容比热[kJ / kg·K]

alfap:相对压力系数[1 / K]

g0:理想比吉布斯自由能[kJ / kg]

g:比Gibbs自由能[kJ / kg]

betap:等温应力系数[kg /m³]

cp0:理想定压比热[kJ / kg·K]

n:折射率[ - ]

Pr:折算压力[ - ]

cv0:理想定容比热[kJ / kg·K]

Prandt:普朗特数[ - ]

Tr:折算温度[ - ]

Svap:蒸发熵[kJ / kg·K]

μ:动态粘度[Pa·s]

w0:理想音速[m / s]

gamma0:理想等熵指数[ - ]

nu:运动粘度[m²/ s]

k:导热系数[W / m·K]

epsilon:介电常数[ - ]

w:音速[m / s]

alfa:热扩散系数[m²/ s]

Hvap:汽化热[kJ / kg]

sigma:表面张力[N / m]

查看源码发现,使用IAPWS97类进行物性查询时,先执行calculable方法判断输入条件是否可计算,若可以计算则执行calculo方法,判断输入参数确定的物性状态所处的区域,随后计算各物性。下面是示例:

>>> from iapws importIAPWS97#>>>> 常压常温水 <<<<

>>> water=IAPWS97(T=24+273.15,P=0.013)#焓值

>>>water.h100.66509664191254

#密度

>>>water.rho997.2595184928771

#>>>> 高压蒸汽 <<<<

>>> vapor = IAPWS97(P=15.5, x=1.0)#温度

>>>vapor.T617.9415516035506

#饱和汽焓

>>>vapor.h2596.2167214338015

#饱和水焓

>>> IAPWS97(P=15.5, x=0).h1629.8502994294881

当输入无效的参数组合时,实例会正常产生但不进行物性计算,实例的calculable方法返回空字符串;当输入有效的参数组合时,若可查询则calculable方法返回查询组合,若超出查询范围则抛出异常。

#>>>> 无效的输入 <<<<

>>> test1 = IAPWS97(h=2000.0, T=300.0)#未绑定属性h

>>>test1.h

Traceback (most recent call last):

File"", line 1, in AttributeError:'IAPWS97' object has no attribute 'h'

#calculable返回空字符串

>>>test1.calculable''

#>>>> 有效的输入 <<<<

>>> vapor = IAPWS97(P=15.5, x=1.0)#calculable返回输入的组合

>>>vapor.calculable'Px'

#>>>> 超出查询范围的输入 <<<<

>>> test2 = IAPWS97(P=100.0, T=45.0)

Traceback (most recent call last):

...

NotImplementedError: Incoming out of bound

IAPWS97类提供了丰富的物性计算,若仅是为了查询物性,直接使用该类就行了。但在瞬态计算或其他需要频繁计算物性的场合下,通过IAPWS97类计算物性是不够明智的。因为一般情况下仅仅需要输出一个物性参数就足够了,如根据压力、焓值计算温度,而IAPWS97类计算了许多我们不需要的参数,这会拖慢程序的运行效率。本来程序具有超实时的运行能力,由于物性查询方法的错误使用,程序可能变得巨慢。物性查询成为程序的性能瓶颈,这显然是不合理的。

iapws.iapws97模块提供了一系列的基本方程(fundamental equations)和向后方程(backward equation),用于特定场合下的物性计算。

2.2 基本方程

iapws.iapws97模块提供了如下基本方程,用于不同区域内的物性计算。形如_Regionr()的函数,根据输入的参数,确定区域r内的状态,返回一个字典;_TSat_P、_PSat_T这两个函数计算饱和线上的物性。

_Region1(T, P)

_Region2(T, P)

_Region3(rho, T)

_Region4(P, x)

_Region5(s)

_TSat_P(P)

_PSat_T(s)

_Region1和_Region2的输入均是T、P,那么在使用时要预先判断T、P所指示的区域:

from iapws importiapws97#>>>> 区域1计算示例 <<<

>>> iapws97._Bound_TP(300,3)1

#获得比容

>>> iapws97._Region1(300,3)['v']0.0010021516796866943

#获得比焓

>>> iapws97._Region1(300,3)['h']115.3312730214384

#>>>> 区域2计算示例 <<<

>>> iapws97._Bound_TP(700,3)2

#获得比容

>>> iapws97._Region1(300,3)['v']0.0010021516796866943

#获得比熵

>>> iapws97._Region1(300,3)['s']0.39229479240262427

饱和线上的物性计算:

#计算饱和温度

>>> iapws97._TSat_P(15.5)617.9415516035506

#计算饱和压力

>>> iapws97._PSat_T(100+273.15)0.10141797792131013

>>>

2.3 向后方程

向后方程指形如_Backwardr_x_yz的方程,其中r为物性区域,yz为输入参数,x为返回参数。

_Backward1_T_Ph

_Backward1_T_Ps

_Backward1_P_hs

_Backward2_T_Ph

...

需要注意,和基本方程一样,向后方程也不进行区域判断。当选择错误的函数时,将输出离奇的计算结果:

>>> from iapws importiapws97#错误的使用示例

>>> iapws97._Backward2_T_Ph(3,500)4.1313215739117547e+21

#错误的使用示例

>>> iapws97._Backward3_T_Ph(3,500)-1637746.3600011615

#判断区域

>>> iapws97._Bound_Ph(3,500)1

#正确的使用示例

>>> iapws97._Backward1_T_Ph(3,500)391.7985087624256


https://www.fengoutiyan.com/post/14723.html

相关文章:

  • python为什么叫爬虫
  • python温度转换
  • python web
  • python程序
  • python换算温度
  • 温度转换python编程
  • python温度转换函数
  • 用python转换温度
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機