In September 1997, the International Association for the Properties of Water and Steam (IAPWS) adopted a new formulation for the thermodynamic properties of water and steam for industrial use. This new industrial standard is called "IAPWS Industrial Formulation for the Thermodynamic Properties of Water and Steam" (IAPWSIF97). The formulation IAPWSIF97 replaces the previous industrial standard IFC67.
Based on this new formulation, a new steam table, titled "Properties of Water and Steam" by W. Wagner and A. Kruse, was published by the SpringerVerlag, Berlin  NewYork  Tokyo in April 1998. This steam table, ref. [1] is bilingual (English / German) and contains a complete description of the equations of IAPWSIF97. This reference is the authoritative source of information for this implementation. A mostly identical version has been published by the International Association for the Properties of Water and Steam (IAPWS) with permission granted to republish the information if credit is given to IAPWS. This document is distributed with this library as IF97.pdf. In addition, the equations published by IAPWS for the transport properties dynamic viscosity (standards document: visc.pdf) and thermal conductivity (standards document: thcond.pdf) and equations for the surface tension (standards document: surf.pdf) are also implemented in this library and included for reference.
The functions in BaseIF97.mo are low level functions which should only be used in those exceptions when the standard user level functions in Water.mo do not contain the wanted properties.
Based on IAPWSIF97, Modelica functions are available for calculating the most common thermophysical properties (thermodynamic and transport properties). The implementation requires part of the common medium property infrastructure of the Modelica.Thermal.Properties library in the file Common.mo. There are a few extensions from the version of IF97 as documented in IF97.pdf in order to improve performance for dynamic simulations. Input variables for calculating the properties are only implemented for a limited number of variable pairs which make sense as dynamic states: (p,h), (p,T), (p,s) and (d,T).
The IAPWS Industrial Formulation 1997 consists of a set of equations for different regions which cover the following range of validity:
273,15 K < T < 1073,15 K  p < 100 MPa 
1073,15 K < T < 2273,15 K  p < 10 MPa 
Figure 1 shows the 5 regions into which the entire range of validity of
IAPWSIF97 is divided. The boundaries of the regions can be directly taken
from Fig. 1 except for the boundary between regions 2 and 3; this boundary,
which corresponds approximately to the isentropic line
In addition to these basic equations, socalled backward
equations are provided for regions 1, 2, and 4 in form of
The complete description of the individual equations of the new industrial formulation IAPWSIF97 is given in IF97.pdf. Comprehensive information on IAPWSIF97 (requirements, concept, accuracy, consistency along region boundaries, and the increase of computing speed in comparison with IFC67, etc.) can be taken from IF97.pdf or [2].
Common name 
Abbreviation 
Unit 

1 
Pressure  p 
Pa 
2 
Temperature  T 
K 
3 
Density  d 
kg/m^{3} 
4 
Specific volume  v 
m^{3}/kg 
5 
Specific enthalpy  h 
J/kg 
6 
Specific entropy  s 
J/(kg K) 
7 
Specific internal energy 
u 
J/kg 
8 
Specific isobaric heat capacity  c_{p} 
J/(kg K) 
9 
Specific isochoric heat capacity  c_{v} 
J/(kg K) 
10 
Isentropic exponent, kappa 
kappa ( k) 
1 
11 
Speed of sound 
a 
m/s 
12 
Dryness fraction 
x 
kg/kg 
13 
Specific Helmholtz free energy, f = u  Ts  f 
J/kg 
14 
Specific Gibbs free energy, g = h  Ts  g 
J/kg 
15 
Isenthalpic exponent, 
theta (q) 
1 
16 
Isobaric volume expansion coefficient, alpha = v^{1} (dv/dT)_{p}  alpha (a) 
1/K 
17 
Isochoric pressure coefficient, 
beta (b) 
1/K 
18 
Isothermal compressibility, g 
gamma (g) 
1/Pa 
19 
Dynamic viscosity  eta (h) 
Pa s 
20 
Kinematic viscosity  nu (n) 
m^{2}/s 
21 
Thermal conductivity  lambda (l) 
W/(m K) 
22 
Surface tension  sigma (s) 
N/m 
The properties 111 are calculated by default with the functions for dynamic simulation, 2 of these variables are the dynamic states and are the inputs to calculate all other properties. In addition to these properties of general interest, the entries to the thermodynamic Jacobian matrix which render the mass and energy balances explicit in the input variables to the property calculation are also calculated. For an explanatory example using pressure and specific enthalpy as states, see the Examples subpackage.
The highlevel calls to steam properties are grouped into records comprising both the properties of general interest and the entries to the thermodynamic Jacobian. If additional properties are needed the low level functions in BaseIF97 provide more choice.
Extends from Modelica.Icons.Package (Icon for standard packages).
Name  Description 

IterationData  constants for iterations internal to some functions 
data  constant IF97 data and region limits 
getTstar  get normalization temperature for region 1, 2 or 5 
getpstar  get normalization pressure for region 1, 2 or 5 
critical  critical point data 
triple  triple point data 
Regions  functions to find the current region for given pairs of input variables 
Basic  Base functions as described in IAWPS/IF97 
IceBoundaries  the melting line and sublimation line curves from IAPWS 
Transport  transport properties for water according to IAPWS/IF97 
Isentropic  functions for calculating the isentropic enthalpy from pressure p and specific entropy s 
Inverses  efficient inverses for selected pairs of variables 
ByRegion  simple explicit functions for one region only 
TwoPhase  steam properties in the twophase rgion and on the phase boundaries 
extraDerivs_ph  function to calculate some extra thermophysical properties in regions 1, 2, 3 and 5 as f(p,h) 
extraDerivs_pT  function to calculate some extra thermophysical properties in regions 1, 2, 3 and 5 as f(p,T) 
record IterationData "constants for iterations internal to some functions" extends Modelica.Icons.Record; constant Integer IMAX=50 "maximum number of iterations for inverse functions"; constant Real DELP=1.0e6 "maximum iteration error in pressure, Pa"; constant Real DELS=1.0e8 "maximum iteration error in specific entropy, J/{kg.K}"; constant Real DELH=1.0e8 "maximum iteration error in specific entthalpy, J/kg"; constant Real DELD=1.0e8 "maximum iteration error in density, kg/m^3"; end IterationData;
Constants needed in the international steam properties IF97. SCRIT and HCRIT are calculated from Helmholtz function for region 3.
Extends from Modelica.Icons.Record (Icon for records).
record data "constant IF97 data and region limits" extends Modelica.Icons.Record; constant SI.SpecificHeatCapacity RH2O=461.526 "specific gas constant of water vapour"; constant SI.MolarMass MH2O=0.01801528 "molar weight of water"; constant SI.Temperature TSTAR1=1386.0 "normalization temperature for region 1 IF97"; constant SI.Pressure PSTAR1=16.53e6 "normalization pressure for region 1 IF97"; constant SI.Temperature TSTAR2=540.0 "normalization temperature for region 2 IF97"; constant SI.Pressure PSTAR2=1.0e6 "normalization pressure for region 2 IF97"; constant SI.Temperature TSTAR5=1000.0 "normalization temperature for region 5 IF97"; constant SI.Pressure PSTAR5=1.0e6 "normalization pressure for region 5 IF97"; constant SI.SpecificEnthalpy HSTAR1=2.5e6 "normalization specific enthalpy for region 1 IF97"; constant Real IPSTAR=1.0e6 "normalization pressure for inverse function in region 2 IF97"; constant Real IHSTAR=5.0e7 "normalization specific enthalpy for inverse function in region 2 IF97"; constant SI.Temperature TLIMIT1=623.15 "temperature limit between regions 1 and 3"; constant SI.Temperature TLIMIT2=1073.15 "temperature limit between regions 2 and 5"; constant SI.Temperature TLIMIT5=2273.15 "upper temperature limit of 5"; constant SI.Pressure PLIMIT1=100.0e6 "upper pressure limit for regions 1, 2 and 3"; constant SI.Pressure PLIMIT4A=16.5292e6 "pressure limit between regions 1 and 2, important for for twophase (region 4)"; constant SI.Pressure PLIMIT5=10.0e6 "upper limit of valid pressure in region 5"; constant SI.Pressure PCRIT=22064000.0 "the critical pressure"; constant SI.Temperature TCRIT=647.096 "the critical temperature"; constant SI.Density DCRIT=322.0 "the critical density"; constant SI.SpecificEntropy SCRIT=4412.02148223476 "the calculated specific entropy at the critical point"; constant SI.SpecificEnthalpy HCRIT=2087546.84511715 "the calculated specific enthalpy at the critical point"; constant Real[5] n=array(0.34805185628969e3, 0.11671859879975e1, 0.10192970039326e2, 0.57254459862746e3, 0.13918839778870e2) "polynomial coefficients for boundary between regions 2 and 3";end data;
Type  Name  Default  Description 

Integer  region  IF 97 region 
Type  Name  Description 

Temperature  Tstar  normalization temperature [K] 
function getTstar "get normalization temperature for region 1, 2 or 5" extends Modelica.Icons.Function; input Integer region "IF 97 region"; output SI.Temperature Tstar "normalization temperature"; algorithm if region == 1 then Tstar := data.TSTAR1; elseif region == 2 then Tstar := data.TSTAR2; else Tstar := data.TSTAR5; end if; end getTstar;
Type  Name  Default  Description 

Integer  region  IF 97 region 
Type  Name  Description 

Pressure  pstar  normalization pressure [Pa] 
function getpstar "get normalization pressure for region 1, 2 or 5" extends Modelica.Icons.Function; input Integer region "IF 97 region"; output SI.Pressure pstar "normalization pressure"; algorithm if region == 1 then pstar := data.PSTAR1; elseif region == 2 then pstar := data.PSTAR2; else pstar := data.PSTAR5; end if; end getpstar;
Critical point data for IF97 steam properties. SCRIT and HCRIT are calculated from helmholtz function for region 3
Extends from Modelica.Icons.Record (Icon for records).
record critical "critical point data" extends Modelica.Icons.Record; constant SI.Pressure PCRIT=22064000.0 "the critical pressure"; constant SI.Temperature TCRIT=647.096 "the critical temperature"; constant SI.Density DCRIT=322.0 "the critical density"; constant SI.SpecificEnthalpy HCRIT=2087546.84511715 "the calculated specific enthalpy at the critical point"; constant SI.SpecificEntropy SCRIT=4412.02148223476 "the calculated specific entropy at the critical point";end critical;
Vapour/liquid/ice triple point data for IF97 steam properties.
Extends from Modelica.Icons.Record (Icon for records).
record triple "triple point data" extends Modelica.Icons.Record; constant SI.Temperature Ttriple=273.16 "the triple point temperature"; constant SI.Pressure ptriple=611.657 "the triple point temperature"; constant SI.Density dltriple=999.792520031617642 "the triple point liquid density"; constant SI.Density dvtriple=0.485457572477861372e2 "the triple point vapour density";end triple;
Type  Name  Default  Description 

Pressure  p  pressure [Pa]  
SpecificEnthalpy  h  specific enthalpy [J/kg]  
Integer  phase  0  phase: 2 for twophase, 1 for one phase, 0 if unknown 
Type  Name  Description 

ExtraDerivatives  dpro  thermodynamic property collection 
function extraDerivs_ph "function to calculate some extra thermophysical properties in regions 1, 2, 3 and 5 as f(p,h)" extends Modelica.Icons.Function; input SI.Pressure p "pressure"; input SI.SpecificEnthalpy h "specific enthalpy"; input Integer phase= 0 "phase: 2 for twophase, 1 for one phase, 0 if unknown"; output Modelica.Media.Common.ExtraDerivatives dpro "thermodynamic property collection"; protected SI.Density d "density"; SI.Temperature T "temperature"; Integer region "IF97 region"; Integer error "error flag"; Modelica.Media.Common.HelmholtzDerivs f "dimensionless Helmholtz function and dervatives w.r.t. delta and tau"; Modelica.Media.Common.GibbsDerivs g "dimensionless Gibbs funcion and dervatives w.r.t. pi and tau"; algorithm assert(phase ==1, "extraDerivs_ph: properties are not implemented in 2 phase region"); region := Regions.region_ph(p=p,h= h,phase= phase); if region == 1 then T := Basic.tph1(p, h); g := Basic.g1(p, T); dpro := Modelica.Media.Common.gibbsToExtraDerivs(g); elseif region == 2 then T := Basic.tph2(p, h); g := Basic.g2(p, T); dpro := Modelica.Media.Common.gibbsToExtraDerivs(g); elseif region == 3 then (d,T,error) := Inverses.dtofph3(p=p,h= h,delp= 1.0e7,delh= 1.0e6); f := Basic.f3(d, T); dpro := Modelica.Media.Common.helmholtzToExtraDerivs(f); elseif region == 5 then // region assumed to be 5 (T,error) := Inverses.tofph5(p=p,h= h,reldh= 1.0e7); g := Basic.g5(p, T); dpro := Modelica.Media.Common.gibbsToExtraDerivs(g); end if; end extraDerivs_ph;
Type  Name  Default  Description 

Pressure  p  pressure [Pa]  
Temperature  T  temperature [K] 
Type  Name  Description 

ExtraDerivatives  dpro  thermodynamic property collection 
function extraDerivs_pT "function to calculate some extra thermophysical properties in regions 1, 2, 3 and 5 as f(p,T)" extends Modelica.Icons.Function; input SI.Pressure p "pressure"; input SI.Temperature T "temperature"; output Modelica.Media.Common.ExtraDerivatives dpro "thermodynamic property collection"; protected SI.Density d "density"; Integer region "IF97 region"; Integer error "error flag"; Modelica.Media.Common.HelmholtzDerivs f "dimensionless Helmholtz function and dervatives w.r.t. delta and tau"; Modelica.Media.Common.GibbsDerivs g "dimensionless Gibbs funcion and dervatives w.r.t. pi and tau"; algorithm region := Regions.region_pT(p=p,T= T); if region == 1 then g := Basic.g1(p, T); dpro := Modelica.Media.Common.gibbsToExtraDerivs(g); elseif region == 2 then g := Basic.g2(p, T); dpro := Modelica.Media.Common.gibbsToExtraDerivs(g); elseif region == 3 then (d,error) := Inverses.dofpt3(p=p,T= T,delp= 1.0e7); f := Basic.f3(d, T); dpro := Modelica.Media.Common.helmholtzToExtraDerivs(f); elseif region == 5 then // region assumed to be 5 g := Basic.g5(p, T); dpro := Modelica.Media.Common.gibbsToExtraDerivs(g); end if; end extraDerivs_pT;