IF97 Steam/Water Properties

General Introduction

Steam/Water properties are of critical importance in industry and specifically the power industry. The standard for water properties is maintained by the International Association for the Properties of Water and Steam (IAPWS). The most recent formulation for thermodynamic properties is the Helmholtz formulation in IAPWS-95, which is exactly what the CoolProp HEOS backend uses when specifying the fluid as Water or HEOS::Water. The Helmholtz equations of state are based on \(T\) and \(\rho\) as state variables, so \(T, \rho\) will always be the fastest inputs, while \(p,T\) will be a bit slower (3-10 times). Inputs where neither \(T\) nor \(\rho\) are given, like \(P,H\), will be much slower.

Realizing the need for fast numerical computation of water properties, the IAPWS created a committee to develop a faster formulation for the steam power industry. In 1997, the IAPWS release the “IAPWS Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam” or IAPWS-IF97. This formulation replaced the older IFC-67 formulation. It is pressure based (rather than density based), and uses fundamental equations for the Gibbs free energy and its derivatives. While IAPWS-IF97 is faster, it is less accurate than the IAPWS-95 formulation, but within 1% uncertainty for all properties (and in many areas within 0.1%) except very near the critical point. Details of this formulation can be found in IAPWS-IF97, released in 2007 and updated in 2012.

The IF97 backend in CoolProp is based on the latest IAPWS Releases for thermodynamic and transport properties. It was originally coded as a fast water property calculation for the Humid Air backend. It has matured to include most of the forward and backward formulations in all fluid phase regions as released by the IAPWS and can provide a much faster calculation of water properties than the default HEOS backend (or the REFPROP backend, which is also based on IAPWS-95).

IF97 Backend

The IF97 backend can be accessed the same way as the other backends, by prefixing the fluid name in calls to PropsSI and Props1SI. However, Water is the only fluid name that can be specified, as IF97::Water. Most output variables and input pairs are accepted as of CoolProp 6.1.1, with a few exceptions:

  1. Generic Partial Derivatives are not yet supported.

  2. Mixtures are obviously not supported since this is a Water-only backend.

  3. The Reference State cannot be modified for the IF97 formulation. The reference state is fixed such that the specific internal energy, \(U\) , and the specific entropy, \(S\) , of the saturated liquid at the triple point are identically zero.

  4. Solid properties are not supported in any of the ICE regions.

  5. The melting-sublimation curve is not used; rather, the property equations are limited uniformly at \(T_{min}=273.15K\).

IF97 Range of Validity

Although IF97 is generally faster than the other backends, it is only applicable over a much smaller range of temperatures and pressures than the HEOS or REFPROP Water formulations. The IF97 properties are divided into several regions. The valid range of these regions is shown in the following plot. Attempts to retrieve properties outside of these regions will result in an “Out of Range” error.

(Source code, png, .pdf)

../_images/IF97-1.png

IF97 Water Property Examples

A call to the top-level function PropsSI can provide: temperature, pressure, density, specific heat, internal energy, enthalpy, entropy, speed of sound, viscosity, thermal conductivity, surface tension, and Prandtl Number. Hence, the available output keys are: T, P, D, C, Cvmass, U, H, S, A, V, L, I, and Prandtl. Molar quantities can also be returned, but IF97 is mass based. Trivial outputs, such as M, Tmin, Tmax, Pmin, Pmax, Ttriple, Tcrit, ptriple, and pcrit, are also available.

In [1]: from CoolProp.CoolProp import PropsSI

#Specific heat capacity of Water at 500 K and 1 atm
In [2]: PropsSI('C','T',500,'P',101325,'IF97::Water')
Out[2]: 1981.5422965970472

#Density of Water at 500 K and 1 atm.
In [3]: PropsSI('D','T',500,'P',101325,'IF97::Water')
Out[3]: 0.4409206435977277

#Round trip in thermodynamic properties
In [4]: T_init = 500.0

In [5]: P_init = 101325

In [6]: S_init = PropsSI('S','T',T_init,'P',P_init,'IF97::Water')

In [7]: H_init = PropsSI('H','S',S_init,'P',P_init,'IF97::Water')

In [8]: T_final = PropsSI('T','H',H_init,'P',P_init,'IF97::Water')

#Round trip complete.  T_final should match T_init
In [9]: T_final
Out[9]: 499.99805290471727

#Saturation pressure of Water at 500 K (Q can be 0 or 1)
In [10]: PropsSI('P','T',500,'Q',0,'IF97::Water')
Out[10]: 2638897.7562732217

#Saturated LIQUID enthalpy of Water at 500 K (Q = 0)
In [11]: H_L = PropsSI('H','T',500,'Q',0,'IF97::Water'); print(H_L)
975464.7957611252

#Saturated VAPOR enthalpy of Water at 500 K (Q = 1)
In [12]: H_V = PropsSI('H','T',500,'Q',1,'IF97::Water'); print(H_V)
2802589.909643574

#Latent heat of vaporization of Water at 500 K
In [13]: H_V - H_L
Out[13]: 1827125.113882449

#Critical temperature for Water
In [14]: PropsSI('Tcrit','T',0,'P',0,'IF97::Water')
Out[14]: 647.096

#Triple Point pressure for Water
In [15]: PropsSI('ptriple','T',0,'P',0,'IF97::Water')
Out[15]: 611.6560000000001