水和水蒸气热力学性质的通用计算软件
摘 要:本文基于IAPWS-IF97 公式计算模型,运用C 语言编制了水和水蒸气热力学性质的通用计
算软件,以实现水和水蒸气热物理性质的高精度计算。研究表明,IAPWS-IF97作为一项国际标准
具有计算速度快,精度高等优点。软件的基本功能是计算水和水蒸气的压力、温度、比容、比熵、
比焓、干度并判断水和水蒸气的性质和状态。此外,该软件还兼顾了边界区域的连续性,迭代间
隔和精确度的一致性,如何平衡计算速度与精度的矛盾和提高程序可移植性等关键问题。
关键词:水和水蒸气; 热物理性质; 计算软件; 1997年工业用水和水蒸气性质计算模型
1.引 言
水和水蒸气作为热能动力工程中最常用的一种工质,已被广泛应用于工业领域,了解水和水
蒸气的热力学性质已成为工业生产和科学研究的需要,如何快速而准确地计算它的热力性质十分
重要。为此国际公式化委员会于1997年提出工业用新型水和水蒸气热力学性质计算模型(简称
IAPWS-IF97)。目前国内对IAPWS-IF97的文献报道都偏重介绍其特点和数学模型,而没有全面介
绍关于其数学模型的计算机应用程序[1][2],利用IF97公式制成水和水蒸气热力学性质图表,存在查
图的不准确性和表格的不连续性。因此我将编制一个计算机应用程序用于工业设计和科研工作中。
符号说明见表1。
表1 符号说明
p 压力,MPa x 常量
T 绝对温度,K R 气体常数,kJ/(kg·K)
h 比焓,kJ/kg M 摩尔质量,kg/mol
s 比熵,kJ/(kg·K) m R 摩尔气体常数,J/(mol·K)
v 比容,m3/kg g 吉布斯自由能,J
g 无量纲吉布斯自由能 f 赫尔姆霍茨自由能,J
f 无量纲赫尔姆霍茨自由能 q 温度降低比
t 温度升高比 p 压力降低比
d 比密度,kg/m3 r 质量密度
上标: 下标:
o 理想气体部分 c 临界点
r 剩余部分 max 最大量
' 饱和液态状态 s 饱和状态
" 饱和气态状态 t 三相点
- 2 -
2.IAPWS-IF97 的计算模型
图1 IAPWS-IF97的区域划分和计算模型
IAPWS-IF97的计算区域被划分为五个区域,如图1所示。它们分别是:1-过冷水区,2-过热蒸
气区,3-临界水和临界蒸气区,4-饱和区,5-高温(过热)蒸气区。其中2区可细分为2a,2b,2c三个
子区域,三区可细分为3a,3b两个子区域[3]。
IAPWS-IF97 的计算公式模型:区域2 和区域3 间的边界是由B23 曲线方程式定义。区域1
和2 可由特定的吉布斯自由能g( p,T)的基本方程式来分别描述,区域3 则可由特定的赫尔姆霍茨
自由能f(r,T)的基本方程式来描述,区域4也就是饱和曲线是由饱和压力方程式( ) s p T 来描述。
高温区5 亦适用g(p,T)方程式。在图1中还显示了这五个基本方程式的逆向方程式。
IAPWS-IF97 公式在适用范围、区域划分和计算模型方面对IFC67 公式进行了极大的改善和
优化,更适合工业实际应用和编程计算[4]。IAPWS-IF97公式还给出了水的动力粘度、导热系数、
普朗特数、表面张力、静介电常数、折射率等新的计算公式和表格。对IAPWS-IF97和IFC-67进
行测试,发现在相同条件下,IAPWS-IF97 的计算结果的精度要比IFC-67高出一个数量级[5]。
实验表明:在最为重要的1区、2区和4区,IAPWS-IF97公式计算速度平均比IFC67公式快5.1倍。
在3区IAPWS-IF97公式计算速度比IFC-67公式快3.6倍。IFC-67公式不包括5区,但是沿5区的低温
边界区,它接近于IFC-67的最高温度区,IAPWS-IF97公式计算速度比IFC- 67公式快12.2倍[6][7]。
与IFC-67相比,IAPWS-IF97另一个品质上的飞跃是在子区域边界上计算结果更符合连续性要
求[8]。内部一致性的IAPWS-IF97公式在分区边界上的偏差非常小,远小于IFC-67公式的允许偏差。
例如在2区和3区边界上,IAPWS-IF97公式计算的比焓的最大可能偏差为0.0008%。
3.计算软件的编制
3.1 程序基本内容及适用范围
本水和水蒸气性质的通用计算程序以水和水蒸气性质计算工业标准IAPWS-IF97公式为依据,
运用C语言编程,依靠Microsoft Visual C++ 6.0 开发环境来完成的。软件的输出界面如图2。
图2 水和水蒸气性质计算软件界面输出
本程序可实现在IAPWS-IF97公式区域范围内已知压力p,温度T ,比容v,比焓h,比熵s
中任意两个值,求出该状态参数下所在的区域,并求出水和水蒸气热物性的其他参数值。也可已
知压力p,温度T 中一个值和干度x求出其他状态参数,还可判断出水蒸气的性质和状态。
适用范围:IAPWS-IF97把水和水蒸气分为五个区域,描绘了温度在273.15K£T£1073.15K,
压力在P£ 100MPa 的范围下及高温区温度在1073.15K£T£2273.15K,压力在P£10MPa的范围
下水和水蒸气的性质和状态[9]。本软件能够在工程上,尤其在热能动力、石油、化工、核能、航
天、海洋等设计、制造及运行领域得到广泛应用,还可应用于计算机辅助教学和计算机辅助设计。
3.2 程序软件的功能和特点
⑴ 全区域求解:该程序可实现根据用户输入的热力学参数自动进行区域判断和计算,并能进
行多区域求解,无须确定计算点所在的子区域,这样无论对于熟悉用户还是不熟悉用户均可适用。
⑵ 9种组合:该程序可以在水和水蒸气的整个计算范围内根据压力、温度、比焓、比熵、比
容、湿蒸气干度6个状态参量中两个已知参量求解出其它所有参量。由于已知焓和熵、已知干度和
焓等6种情况下涉及到二元迭代的问题,而且有时非线性方程的根不是唯一的,比如已知温度和焓
或干度和焓时可能会有单解、双解,已知干度和熵时可能会得到单解、双解甚至三解,处理起来
存在较大的困难,基于此目前完成的是15种组合中的9种,并提出另外6种的解决办法。
⑶ 该程序运用了IAPWS-IF97基本公式和多个补充推导公式:T(p,h) (表示由压力、焓求温度,
下类同)、T(p,s)、v(p,h)、v(p,s)等,避免了二次迭代,提高了运行速度和精确度。
⑷ 程序中使用多个限制条件退出不必要的运行,并及时输出结果,最大限度地减少了运
行时间。
⑸ 在该程序中,利用函数的单调性进行迭代,提高精确度。程序精确度的要求见表2。
表2 程序的精确度
单项区 比容 焓 熵 吉布斯自由能
精确度 ±0.05% ±0.2kJ/kg ±0.0002kJ/kg×K ±0.2kJ/kg
饱和区 饱和压力 饱和温度 吉布斯自由能
精确度 ±0.05% ±0.02% ±0.2kJ/kg
3.3 区域的判断
3.3.1 饱和区的判断
饱和区判断方法是在611.213Pa£p£22.064MPa 和273.15K£T£647.096K的范围内,计算
出已知状态下饱和水和饱和蒸气的状态参数,判断已知的h,s,v是否在两者之间,即在饱和
区。例如,已知压力p 、熵s,由p分别求出饱和水和饱和蒸气的s_a、s_b,若s_a<s<s_b
就可判断为饱和区,可用饱和区和一、二区的公式求出四区的状态参数。
3.3.2 非饱和区的判断
根据边界方程B23和饱和线方程( ) s p T 或( ) s T p 以及等温线(T= 623.15K,T=1073.15K)
以及等压线(p= 10MPa)即可判断水和水蒸气的区域。
如果已知温度T 和压力p,可根据温度T 求得边界上的压力p,与输入压力p相比较,即
可判断工质所在区域。如果已知温度T 与其它热力学参数中的任一个,可以由边界方程B23计算
出等温线上的压力p,然后用求来的压力p和输入的温度T 来计算出相应的热力学参数,通过与
输入参数进行比较,即可判定工质所在区域。例如,如果已知温度T 和熵s,首先,通过等温线
与温度T 的比较,得出工质所处的大概区域;其次,将温度T 代入4区的公式,得到对应的饱和
压力p;再次,将温度T 和压力p分别代入1区和2区的计算公式,计算得到对应的s' (饱和水熵)
和s" (饱和汽熵);最后,将已知s和计算而得的s'和s"进行比较,即可判断工质所在的区域。
该程序对区域的判断有两种基本方法:
⑴ 以等压线p为基准,求出在此压力的等压线与各区分界线的交点上的状态参数值,根据
已知值和所求值的关系进行区域判断。程序将p分为p> 16.529MPa和p£16.529MPa两部分,
例如,已知p、s,如果p> 16.529MPa求出压力为p的等压线与1、3,2、3区域分界线交点上
的13 s 、23 s ,若13 s<s 则判断在1区,若13 23 s <s<s 则判断在3区,若23 s>s 则判断在2区。如果
p£16.529MPa求出压力为p 的等压线与饱和线的交点值,若s<s_b则判断在1区,否则判断
在2区。(饱和区前面已经判断)
⑵ 以等温线T 为基准,求出在此温度下的等温线与各区分界线交点上的状态参数值,根据
已知值和所求值的关系判断。程序将T分为273.15K£T£623.15K,623.15K£T£823.15K,
823.15K£T£1273.15K,1273.15K£T£2273.15K四个区域(饱和区前面已经判断)。判断方法
和等压线判断相同。具体的区域判断的方法可由程序图中具体的表现出来。
3.4 计算原理和方法
IAPWS-IF97公式将有效范围分成了5个分区。在1区、2区和5区内使用吉布斯自由能函数
g(p,T),在3区内使用赫尔姆霍茨自由能f(r,T),在4区内使用饱和压力公式。2区和3区的边界
线由公式给出。IAPWS -IF97公式的分区及公式水和水蒸气的性质参数不是互相独立的。如果取压
力p和温度T 为自变量,那么比容v、比焓h和比熵s可以利用下面的正则函数的偏微分得到:
g=g( p,T)式中g——吉布斯自由能函数;如果取密度r 和温度T 为自变量,那么压力p、比焓
h和比熵s可以利用下面的正则函数的偏微分得到: f =f(r,T)式中f ——赫尔姆霍茨自由能。
除基本公式,1区、2区和4区还给出了导出方程,即用于1区和2区的方程T(p,h)、T(p,s)以
及用于4区的方程( ) s T p 。应用导出方程可减少迭代求解的复杂性。如:求T(p,h)和h(p,s)就可
以使用导出方程而不需要迭代求解。对h(p,s)等应用,可通过关联式h(p,T( p,s))求得。
3.5 公式的迭代
3.5.1 迭代方法
计算模型的通用性指对于水和水蒸气的热物性性质参数,可以由任何2个相互独立的状态参
数,确定其它的热力学参数。为了提高计算模型的通用性,从而设计出适用面更广的计算机程序,
我们要有能以多组相互独立的参数作为自变量来确定其他的状态参数的功能,用迭代的方法来实
现这一功能。因此,迭代逻辑和算法就成了计算模型通用性的关键。
迭代求解问题可大概地分为两类:如果自变量组合为已知温度T 与焓h、熵s、比容v中的
任一个参数,则其它热物性性质参数的计算为隐式方程。我们称这类至少知道一个基本参数的自
变量组合形式为第一类问题。如果自变量组合形式为已知焓h、熵s、比容v或压力p (在3区)中
的任2个参数,则其它热力学参数的计算也为隐式方程。我们称这类不含有基本参数的自变量组合
形式为第二类问题。
第一类问题的求解:如果自变量组合形式为已知温度T 与焓h、熵s、比容v中的任一个参
数,则可根据相应的基本公式进行一维迭代求解。例如,已知温度T 和焓h求压力p、熵s、比
容v,可由基本公式h(p,T)建立迭代方程f =h-h(p,T)=0计算压力p ,比容v和熵s可由压力
p与温度T 根据相应的基本公式计算。
第二类问题的求解:如果已知自变量组合形式为已知焓h、熵s、比容v或压力p (在3区)
中的任2个参数,则其它热力学参数的计算需要二维迭代。这类问题中最常见的是已知焓h、熵s
组合,因为在第一类问题中已经解决了已知温度T 、焓h计算熵s的问题,则可以构造由焓h、
熵s迭代温度T ,再根据已知的迭代方法温度T和焓h计算其它的热力学参数。
3.5.2 利用函数的单调性简化迭代过程
对于水和水蒸气的性质,具有明显的函数单调性,在迭代时如果能够充分地利用水和水蒸气
v会减少,若利用到迭代过程中,把p从小到大(或从大到小)地迭代,当v-v(p)30
(v-v(p)£0)时即可得到结果,避免了对v-v(p)=0判断时精确度的取值,结果更准确。对
于水和水蒸气中的一些区域性复杂的单调函数,例如p、h的关系,当温度一定时,水的h是随p
的增大而增加的,水蒸气的h是随p的增大而减少的,利用这个性质在迭代时可以简化迭代的过
程,同时提高了迭代的准确度。本程序正是利用水和水蒸气的单调性进行迭代的。
对已知h、s求解的主要方法是:
⑴ 假设法:假设其所在区域已知,求出结果,再验证计算结果的是否在该区域。(这种方法
计算结果精确,但是计算复杂,计算速度慢。)
⑵ 拟合曲线:由于曲线方程准确度不可靠,程序中拟合的曲线只用来作为辅助判断,以便简
化计算过程,加快计算速度,这种方法误差较大,许多地方要做必要的修正。
⑶ 利用水和水蒸气热力学性质的国际协会在2001 年9月补充发表的关于1997年IAPWS 对
于水和水蒸气热力学性质陈述中压力、焓和熵函数的反推式[10](即p(h,s)和T(h,s))可计算1
区和2 区的压力p和温度T 。从而利用基本方程求出其他参数,如比容v等。
发展反推公式p(h,s)的一个非常重要的目的是:减少从给定的h、s值得到p和T 的计算时
间。在IAPWS-IF97 中,时间要消耗在反复的过程计算中。例如,牛顿二元迭代法。用公式p(h,s)
和IAPWS-IF97 反推式T97 (p,h)联合计算,速度是牛顿二元迭代法的20~30倍。
3.5.3 精确度的一致性
为了符合水和水蒸气的精确度的要求,在迭代过程中注意了精确度的一致性要求。迭代时p
的迭代间隔为0.00001,即每相间0.00001取一个p,v的迭代间隔为0.000005,T 的迭代间隔为0.05。
迭代间隔由IAPWS-IF97公式的精确度要求确定的。
3.6 计算速度与程序精确度的矛盾及解决方案
由于IAPWS-IF97公式精确度要求较高,在进行数据迭代时迭代的间隔很小,这就引起了迭
代的数据的数量很多,有的一个循环要迭代上万个甚至更多的数据,造成计算速度慢。
解决方案:可以先“粗”迭代再“细”迭代,迭代时数据的间隔先取得较大,判断出再要计算值
的取值范围。例如,用压力进行迭代时(必须是该区域单调函数),数据的迭代间隔先取0.1,若
从小到大取值,当迭代到某值p时后再从p -1开始迭代到p,把间隔先取为0.00001,再次满足
条件要求时就计算出了要求的压力。我们计算一下,若一个循环,p从16.529~100取值迭代,若
都取到则要取80多万个,然而,用这种方法取值的个数为835加10000,即一万多个,明显减少了
迭代数目。如果比一万还多,还可用同样的原理进行三步迭代,直到满意为止。
3.7 边界区域的连续性
⑴ 1-3区和2-5区的边界处理。以已知P、h为例,当判断处于1区还是3区时,需计算1-3边界上
的焓值。由于IAPWS-IF97公式没有1-3边界线的计算式,所以我们只能做近似处理,即在边界上
先用1区公式计算,再用3区公式计算,将两结果与标准水和水蒸气表对比取最接近的值。若两结
果都不吻合则取平均值。在处理2、5区边界问题时亦是如此。
⑵ 2-3区的边界处理。以已知T、S为例,B23曲线概略地描述了一条熵值介于5.047kJkg-1K-1
和5.261kJkg-1K-1之间的等熵线;S在此区域亦无计算其他参数的公式,因此先用2区公式迭代,
再用3区公式迭代,取两组值中与标准值最接近的一组;若两组值均不吻合则取平均值。
3.8 计算算例
随机选取九组数据进行测试并计算误差。标准值由水和水蒸气热力性质表给出。结果见表3。
表3 水和水蒸气性质计算软件计算结果算例
输入 区域 P(Mpa) T(K) V(m3/kg) H(kJ/kg) S(kJ·kg-1·K-1) X
PT 1 80.000000 373.150000 0.001008 479.753824 1.250120 —
标准值 — — 0.001008 479.753824 1.250120 —
计算误差 — — 0% 0% 0% —
PV 2 50.000000 992.950000 0.008000 3678.842576 6.283193 —
标准值 — 992.893941 — 3678.823166 6.283173 —
计算误差 — 0.005646% — 0.000528% 0.000318% —
PH 3 90.000000 711. 688233 0.001634 2000.000000 4.087355 —
标准值 — 711.701618 0.001634 — 4.087407 —
计算误差 — 0.001880% 0% — 0.001272% —
PS 5 8.000000 1302.850000 0.074846 4694.660432 8.000000 —
标准值 — 1302.802594 0.074843 4694.539892 — —
计算误差 — 0.003639% 0.004008% 0.002568% — —
PX 4 10.000000 584.149488 0.009743 2066.670034 4.488090 0.5
标准值 — 584.149488 0.009743 2066.670034 4.488090 —
计算误差 — 0% 0% 0% 0% —
TV 5 2.740611 1773.150000 0.300000 5951.250344 9.316389 —
标准值 2.740625 — — 5951.261222 9.316199 —
计算误差 0.000510% — — 0.000183% 0.002039% —
TH 2 24.330611 873.150000 0.014585 3500.000000 6.381909 —
标准值 24.330014 — 0.014589 — 6.382307 —
计算误差 0.002454% — 0.027418% — 0.006236% —
TS 3 50.481871 673.150000 0.001725 1872.419707 4.000000 —
标准值 50.483196 — 0.001725 1872.497603 — —
计算误差 0.002624% — 0% 0.004160% — —
TX 4 1.554672 473.150000 0.064189 1822.227316 4.380549 0.5
标准值 1.554672 — 0.064189 1822.227316 4.380549 —
计算误差 0% — 0% 0% 0% —
部分数据组与标准值存在一定的计算误差,究其原因,主要是由IAPWS-IF97 公式的不连续
性和迭代算法的误差引起的。尽管我们对边界问题进行了有效处理,迭代间隔和精确度保持了一
致,但是理论上讲存在精度误差是在所难免的,并可以控制在允许的范围内。图2 对应显示了软
件部分数据的输出结果。
4.程序流程图
图3 已知PT计算水和水蒸气的热物理性质参数
T≤647.096
Ps(T)
P=Ps
273.15≤T≤2273.15
10≤P≤100
Ps (T) T≤623.15
P>Ps
P<P23
g1 (P,T) g2 (P,T)
T≤863.15
P23(T)
P<Ps
v=0.0013
f3(T,v)
P<P3
v=v+0.000005
T≤1073.15
g2 (P,T) g5 (P,T)
输出结果
饱和区
输入P、T
True
True
False
False
True
False
Exit
True
True True
False
True
True
False
True
False
True False
结 束
图4 已知PH计算水和水蒸气的热物理性质参数
输入P、H
P≤22.064 Ts(P)
g1 (P,Ts) g2 (P,Ts)
h’≤h≤h”
Reg4()
P≤16.529
P≤10
g2 (P,1073.15)
h>h25
g5(P,T)
h5<h
T=T+0.05
T=1073.15
h”≤h≤h25
g2(P,T)
h<h2bc
T2a(p,h)
T1(P,H)
g1(P,T)
P≤100
g1 (P,623.15)
h≤h13
T23(P)
g2(P,T23)
h≥h23
T3(P,H)
V3(P,H)
f3(T,v)
输出结果
结 束
True
True
True
True
True
True
True
True
True
False True
False
False
False False
False
P≥4
h2bc(P)
T2b(p,h)
T2c(p,h)
True
False
False True
True
图5 已知PV计算水和水蒸气的热物理性质参数
输入P、V
P≤22.064 Ts(P)
g1 (P,Ts) g2 (P,Ts)
v’≤v≤v”
Reg4()
P≤16.529
P≤10
g2 (P,1073.15)
v>v25
g5(P,T)
v5<v
T=T+0.05
T=1073.15
v”≤v≤v25
g2(P,T)
v2<v
T=T+0.05
T=Ts(P)
T=273.15
g1(P,T)
v1<v
T=T+0.05
P≤100
T=T+0.05
v≤v13
T23(P)
g2(P,T23
T=623.15
v≥v23
T=623.15
T=T+0.05 f3(T,v)
P≥P1
输出结果
结 束
True
True
True
True
True
True
True
True
True
True
True
True
True
False
False
False
False
False
False
图6 已知PS计算水和水蒸气的热物理性质参数
输入P、S
P≤22.064 Ts(P)
g1 (P,Ts) g2 (P,Ts)
s’≤s≤s”
Reg4()
P≤16.529
P≤10
g2 (P,1073.15)
s>s25
g5(P,T)
s5<s
T=T+0.05
T=1073.15
s”≤s≤s25
g2(P,T)
s≤5.85
T2a(p,s)
T1(P,s)
g1(P,T)
P≤100
g1 (P,623.15)
s≤s13
T23(P)
g2(P,T23)
s≥s23
T3(P,s)
V3(P,s)
f3(T,v)
输出结果
结 束
True
True
True
True True
True
True
True
True
True
False
False
False
False
False
False
P≥4
T2b(p,s)
T2c(p,s)
True
False
False
True True
s<4.412
图7 已知TV计算水和水蒸气的热物理性质参数
输入T、V
T≤647.096
Ps(T)
g1 (Ps,T) g2 (Ps,T)
v’≤v≤v”
Reg4()
T≤623.15
v<v’
P=Ps
v1>v
P=P+0.00001 g1(P,T)
P=0.000611
g2(P,T)
v2>v
P=P+0.00001
T≤863.15
P23(T)
g2 (P23,T)
v>v23
f3 (T,v)
T≤1073.15
T≤2273.15
P=0.000611
g5(P,T)
v5>v
P=P+0.00001
输出结果
结 束
True
True
False
True
True
True
False
True
False True
True
False
False False
True True
True
图8 已知TH计算水和水蒸气的热物理性质参数
输入T、H
T≤647.096
Ps(T)
g1 (Ps,T) g2 (Ps,T)
h’≤h≤h”
Reg4()
T≤623.15
h<h’
P=Ps
h1>h
P=P+0.00001 g1(P,T)
P=0.000611
g2(P,T)
h2>h
P=P+0.00001
T≤863.15
P23(T)
g2 (P23,T)
h>h23
f3 (T,v)
T≤1073.15
T≤2273.15
P=0.000611
g5(P,T)
v5>v
P=P+0.00001
输出结果
结 束
True
True
False
True
True
True
False
True
False True
True
False
False False
True
True
True
v=0.0013
v=v+0.000005
h3<h True
图9 已知TS计算水和水蒸气的热物理性质参数
T≤2273.15
输入T、S
T≤647.096
Ps(T)
g1 (Ps,T) g2 (Ps,T)
s’≤s≤s”
Reg4()
T≤623.15
s<s’
P=Ps
s1>s
P=P+0.00001 g1(P,T)
P=0.000611
g2(P,T)
s2>s
P=P+0.00001
f3 (T,v)
T≤1073.15
P=0.000611
g5(P,T)
s5>s
P=P+0.00001
输出结果
结 束
True
True
False
True
True
True
False
True
False
True
False
True
True
v=0.0013
v=v+0.000005
s3<s True
s>5.261 s<5.047
True True
图10 已知PX 计算水和水蒸气的热物理性质参数 图11 已知TX 计算水和水蒸气的热物理性质参数
5.主程序代码
#include "stdio.h" #include "data.h" #include "function.h"
#include "PH.h" #include "PS.h" #include "PT.h"
#include "PX.h" #include "PV.h" #include "TH.h"
#include "TS.h" #include "TV.h" #include "TX.h"
int showMenu();
void main()
{ int choice=-1;
while(choice!=0){
choice=showMenu();
switch(choice)
{ case 0: break;
case 1: PH(); break;
case 2: PS(); break;
case 3: PT(); break;
case 4: PX(); break;
case 5: PV(); break;
输入P,X
0.000611≤P≤22.064
0≤x≤1
g1 (P,Ts) g2 (P,Ts)
v’ h’ s’ v” h” s”
输出结果
结 束
Ts(P)
True
输入T,X
273.15≤T≤647.096
0≤x≤1
g1 (Ps,T) g2 (Ps,T)
v’ h’ s’ v” h” s”
输出结果
结 束
Ps(T)
True
False
Exit
False
Exit
case 6: TH(); break;
case 7: TS(); break;
case 8: TV(); break;
case 9: TX(); break;
default:printf("Sorry, your input is wrong!\n"); break;}}
getchar(); scanf("%d",&choice); }
int showMenu(){
int choice;
printf("\n"); printf("\n1.PH\n"); printf("2.PS\n");
printf("3.PT\n"); printf("4.PX\n"); printf("5.PV\n");
printf("6.TH\n"); printf("7.TS\n"); printf("8.TV\n");
printf("9.TX\n"); printf("0.Exit.\n");
printf("Please input your choice:");
scanf("%d",&choice);
return choice; }
6.函数功能表
使用下面函数时应包含此头文件: #include"function.H";
表4 函数功能表
函数名 函数原型 功能 返回值 区域
GammaReg1 double GammaReg1
(double Tau,double pi)
已知PT 求γ γ 1
SetaReg1PH double SetaReg1PH
(double Eta , double Pi)
已知PH求T T 1
SetaReg1PS double SetaReg1PS
(double Fai , double Pi)
已知PS 求T T 1
output1v double output1v
(double Tau,double pi)
已知PT 求v v 1
output1h double output1h
(double Tau,double pi)
已知PT 求h h 1
output1s double output1s
(double Tau,double pi)
已知PT 求s s 1
Gamma0Reg2 double Gamma0Reg2
(double Tau , double pi)
已知PT 求理想气体部分γ0 γ0 2
GammarReg2 double GammarReg2
(double Tau , double pi)
已知PT 求剩余气体部分γ γ 2
SetaReg2aPH double SetaReg2aPH
(double Eta , double Pi)
已知PH求2a区T T 2
SetaReg2bPH double SetaReg2bPH
(double Eta , double Pi)
已知PH求2b区T T 2
SetaReg2cPH double SetaReg2cPH
(double Eta , double Pi)
已知PH求2c区T T 2
SetaReg2aPS double SetaReg2aPS
(double Fai , double Pi)
已知PS求2a区T T 2
SetaReg2bPS double SetaReg2bPS
(double Fai , double Pi)
已知PS求2b区T T 2
SetaReg2cPS double SetaReg2cPS
(double Fai , double Pi)
已知PS求2c区T T 2
output2v double output2v
(double Tau,double pi)
已知PT 求v v 2
output2h double output2h
(double Tau,double pi)
已知PT 求h h 2
output2s double output2s
(double Tau,double pi)
已知PT 求s s 2
FiReg3 double FiReg3
(double Tau ,double Delta )
已知Tδ求Ф Ф 3
PS2TReg3a double PS2TReg3a(double
Pressure ,double Entropy)
已知PS求3a区T T 3
PS2TReg3b double PS2TReg3b(double
Pressure ,double Entropy)
已知PS求3b区T T 3
PS2VReg3a double PS2VReg3a(double
Pressure ,double Entropy)
已知PS求3a区v v 3
PS2VReg3b double PS2VReg3b(double
Pressure ,double Entropy)
已知PS求3b区v v 3
output3v double output3v
(double Tau,double Delta)
已知Tδ求v v 3
output3p double output3p
(double Tau,double Delta)
已知Tδ求P P 3
output3h double output3h
(double Tau,double Delta)
已知Tδ求h h 3
output3s double output3s
(double Tau,double Delta)
已知Tδ求s s 3
TD2PReg3 double TD2PReg3 (double
Temperature , double Density )
已知Tδ求P P 3
TV2PReg3 double TV2PReg3 (double
Temperature, double Volume)
已知TV求P P 3
PH2VReg3a double PH2VReg3a(double
Pressure ,double Enthalpy)
已知PH求3a区v v 3
PH2VReg3b double PH2VReg3b(double
Pressure ,double Enthalpy)
已知PH求3b区v v 3
PH2TReg3a double PH2TReg3a(double
Pressure ,double Enthalpy)
已知PH求3a区T T 3
PH2TReg3b double PH2TReg3b(double 已知PH求3b区T T 3
Pressure ,double Enthalpy)
Gamma0Reg5 double Gamma0Reg5
(double Tau , double pi )
已知PT 求理想气体部分的γ0 γ0 5
GammarReg5 double GammarReg5
(double Tau , double pi )
已知PT 求剩余气体部分的γ γ 5
output5v double output5v
(double Tau,double pi)
已知PT 求v
v 5
output5h double output5h
(double Tau,double pi)
已知PT 求h h 5
output5s double output5s
(double Tau,double pi)
已知PT 求s s 5
P2T double P2T (double Pressure ) 已知P求饱和线上的T T 4
P2TBound23 double P2TBound23
(double Pressure)
已知P求B23 曲线上的T T 边界
P2HBound2bc double P2HBound2bc
(double Pressure )
已知P求2bc曲线上的h h 2
P2H3AB double P2H3AB
(double Pressure )
已知P求3a和3b区
分界线上的h
h 3
T2P double T2P (double Temperature) 已知T求饱和线上的P P 4
T2PBound23 double T2PBound23
(double Temperature)
已知T 求B23 曲线上的P P 边界
7.总 结
⑴ 基于IAPWS-IF97公式的新型水和水蒸气性质的计算模型,比IFC-67具有计算模型简化,
精度高,运算快,适用范围广,数据的一致性,计算分区更加合理化,分区的边界区域少减少了
误差等优越性。
⑵ 迭代逻辑和算法是计算模型通用性的关键,并保证了迭代间隔与精确度要求的一致性。
⑶ 采用边界两侧分别求解取近似值或平均值的办法,实现边界区域的连续性。
⑷ 运用先粗迭代后细迭代的方法,较好地折中了计算速度与计算精度间的矛盾。实现了运算
速度快,精度高的特点。
⑸ 所编软件可以提供API程序开发接口,以Microsoft Windows 95/98/NT动态链接库、DLL
形式提供,可以支持C、C++、VB、Excel或Delphi调用,供开发人员使用,也可以直接用作可执
行文件,实现了程序的可移植性。
⑹ 在IAPWS-IF97公式计算模型的基础上,该程序实现了已知温度、压力、比容、比熵、比
焓、干度六个参数的任意两个(9种组合)便可以求出其他参数值的功能。程序中采用了等温线法
和等压线法进行分区判断并采用迭代算法,验证了IAPWS-IF97计算速度快,精度高的特点。
参考文献
[1] 贾俊颖,王培红. 水和水蒸气性质通用计算软件的算法研究[J]. 热能动力工程,2000,15(6):666~669.
[2] 王培红,贾俊颖,程懋华. 水和水蒸气性质的IAPWS-IF97 计算模型[J]. 动力工程,2000,20(6):988~991.
[3] Parry W.T, Bellows J.C. Asme international steam tables for industrial use[J]. ASME PRESS ISBN 0-7918-01543,
2002.
[4] 祁海涛,胡念苏,陈波水. 水和水蒸气热力学性质IAPWS-IF97 公式及通用计算模型[J]. 热力学透平,2003,
32(4):240~244.
[5] Koichi, Watanabe. Supplementary Release on Backward Equations for the Functions T(p,h), v(p,h) and T(p,s), v(p,s)
for Region 3 of the IAPWS[C]. Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam.
The International Association for the Properties of Water and Steam, 2003.
[6] 于永杰,高建强,曹文亮,等. IAPWS-IF97 及其基本数学模型[J]. 安徽电力职工大学学报,2001,6(4):78~
84.
[7] 李春曦. 工业用水和水蒸气热力性质计算公式[J]. 锅炉技术,2002,33(6):15-19.
[8] 冉鹏,张树芳,肖淼. 基于IAPWS-IF97 的水和水蒸气热力学性质计算模型及实现[J]. 电力科学与工程,2005,
(2):41~43.8 王培红. 热能转换过程中水和水蒸气性质计算模型[J]. 汽轮机技术,1993,(3).
[9] Wagner W, Cooper J.R, Dittmann A, et al. The IAPWS Industrial Formulation 1997 for the Thermodynamic
Properties of Water and Steam. Journal of Engineering for Gas Turbine and Power [J].2000,122(1):150~182.
[10] Bert Rukes. Supplementary Release on Backward Equations for Pressure as a Function of Enthalpy and Entropy
p(h,s) to the IAPWS[C]. Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam. The
International Association for the Properties of Water and Steam, 2001.
High Precision Computation of the Thermodynamic Properties
of Water and Steam
Wang Li,Guo Jimin
College of Energy and Power Engineering, Huazhong University of Sci. and Tech., Wuhan,
PRC (430074)
Abstract
In this paper, it is mainly presented the software for the calculation of the thermodynamic properties of water
and steam based on the IAPWS-IF97 formulation using C language to write the formulation of IAPWS-IF97
into computer code procedure,in order to achieve High Precision Computation of the Thermodynamic
Properties of Water and Steam. Various research indicates that IAPWS-IF97 formulation which has been
established as the new international standard has many advantages, like fast calculation and high precision.,
The function of the software is to judge the status and calculate the thermodynamic properties of water and
steam: Pressure、Temperature、specific volume、specific entropy、specific enthalpy and dryness fraction. In
addition, some pivotal problems such as the boundary continuity, the consistency of iterative interval and
precision, improving the portability of programme, how to split the difference between calculational speed
and precision were taken into account especially.
Keywords: water and steam; thermophysical properties; calculation software; IAPWS-IF97





