Skip to content

Steam Tables (IAPWS-IF97)

Water and steam from the IAPWS Industrial Formulation 1997 (IAPWS-IF97): density, enthalpy, entropy, heat capacities, viscosity and thermal conductivity of liquid water and steam, and the saturation line, for streams of pure water.

DWSIM.Thermodynamics.PropertyPackages.SteamTablesPropertyPackage
Assembly DWSIM.Thermodynamics.dll · Object ← PropertyPackage ← SteamTablesPropertyPackage
Name in the flowsheet Steam Tables (IAPWS-IF97) · FluentAPI PropertyPackages.SteamTables

Scope

The package is for water and steam: boiler feed water, steam headers, turbines, condensers, heating and cooling with steam or water, and any stream where an exact property of water matters. Every property comes from the IAPWS Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam (IAPWS-IF97), the standard that replaced IFC-67 for performance guarantee and design calculations of steam power plants. The enthalpy and entropy are on the IAPWS scale (zero internal energy and entropy for the liquid at the triple point), so the values match a printed steam table.

IAPWS-IF97 divides the thermodynamic surface into regions:

Region State Equation
1 liquid, from low to high pressure Gibbs energy g(T, p)
2 vapor and ideal gas Gibbs energy g(T, p)
3 around the critical point Helmholtz energy f(T, v)
4 saturation line (vapor-liquid equilibrium) saturation-pressure equation
5 above 800 °C, up to 100 bar Gibbs energy g(T, p)

All thermodynamic properties follow from the fundamental equations; the backward equations of the standard give properties from other pairs of variables without iterating. Viscosity and thermal conductivity come from the IAPWS correlations for water and steam.

The package uses a flash of its own: a stream specified by pressure and vapor fraction (or temperature and vapor fraction) is placed on the saturation line, and a stream given by pressure and enthalpy or entropy gets its temperature from the steam tables, and its quality when the state falls on the saturation line. Liquid and vapor densities, enthalpies, entropies, heat capacities, viscosities and thermal conductivities are all IAPWS-IF97 values. The package has no parameters to set.

Limitations

  • Water only. The flowsheet must include the compound Water, and a stream with less than 99 mol % water is rejected. For water with dissolved gases or salts use an equation of state or an activity model (for example Peng-Robinson or NRTL), or one of the electrolyte packages (Electrolyte NRTL).
  • DWSIM implements regions 1 to 4: from 0 to 800 °C and up to 1000 bar. Region 5 (above 800 °C) is not implemented, and a state outside that range stops the calculation with a message.
  • Water in a mixture needs another package; CoolProp also has pure water, from the IAPWS-95 scientific formulation.

Example

This code runs on every build of this site, and the output below is what it printed.

fs = (Flowsheet.Create("SteamTablesExample")
      .WithCompounds("Water")
      .WithPropertyPackage(PropertyPackages.SteamTables))

# saturated liquid and saturated vapor at 10 bar: given the pressure and the vapor
# fraction, the flash finds the saturation temperature
liquid = (fs.AddMaterialStream("Saturated liquid")
          .WithPressure(Q.Bar(10.0)).WithVaporFraction(0.0)
          .SetCompoundMassFlow("Water", 1.0))
vapor = (fs.AddMaterialStream("Saturated vapor")
         .WithPressure(Q.Bar(10.0)).WithVaporFraction(1.0)
         .SetCompoundMassFlow("Water", 1.0))
# superheated steam at 40 bar and 400 C
steam = (fs.AddMaterialStream("Superheated steam")
         .At(Q.Celsius(400.0), Q.Bar(40.0))
         .SetCompoundMassFlow("Water", 1.0))

fs.Solve()

sl, sv, sh = (b.Object.Phases[0].Properties for b in (liquid, vapor, steam))
print(f"Saturation temperature at 10 bar = {sl.temperature - 273.15:.2f} C")
print(f"Saturated liquid / vapor h       = {sl.enthalpy:.1f} / {sv.enthalpy:.1f} kJ/kg")
print(f"Latent heat at 10 bar            = {sv.enthalpy - sl.enthalpy:.1f} kJ/kg")
print(f"Saturated liquid / vapor density = {sl.density:.1f} / {sv.density:.3f} kg/m3")
print(f"Steam at 40 bar, 400 C           : h = {sh.enthalpy:.1f} kJ/kg, s = {sh.entropy:.4f} kJ/(kg K), "
      f"density = {sh.density:.2f} kg/m3")

Output

Saturation temperature at 10 bar = 179.89 C
Saturated liquid / vapor h       = 762.7 / 2777.1 kJ/kg
Latent heat at 10 bar            = 2014.4 kJ/kg
Saturated liquid / vapor density = 887.1 / 5.145 kg/m3
Steam at 40 bar, 400 C           : h = 3214.4 kJ/kg, s = 6.7712 kJ/(kg K), density = 13.62 kg/m3

DWSIM 10.2.11.0, generated 2026-10-08.

Property methods

How the package calculates each property, as it reports it in PropertyMethodsInfo (the property package editor shows the same list).

Property Method
Vapor fugacity Ideal
Liquid fugacity Vapor Pressure / Henry's Constant
Vapor enthalpy, entropy, Cp/Cv IAPWS-IF97 Steam Tables
Liquid enthalpy, entropy, Cp/Cv IAPWS-IF97 Steam Tables
Vapor density IAPWS-IF97 Steam Tables
Liquid density IAPWS-IF97 Steam Tables
Vapor viscosity IAPWS-IF97 Steam Tables
Liquid viscosity IAPWS-IF97 Steam Tables
Vapor thermal conductivity IAPWS-IF97 Steam Tables
Liquid thermal conductivity IAPWS-IF97 Steam Tables
Surface tension Experimental / Brock-Bird
Solid density Experimental Data / User-Defined
Solid enthalpy, entropy, Cp/Cv Experimental Solid Cp / From Liquid Phase Enthalpy + Enthalpy of Fusion

Default flash algorithm: SteamTables.

Configuration saved with the flowsheet

The package writes its settings to the simulation file (SaveData) and reads them back on load (LoadData). The elements below are the ones this package adds to those of every property package, as written for the example.

This package adds no elements of its own.

Settings common to every property package, as saved for the example
Element Value
Type 64 characters
ComponentName Steam Tables (IAPWS-IF97)
ComponentDescription
Tag Steam Tables (IAPWS-IF97)
UseHenryConstants true
AutoEstimateMissingNRTLUNIQUACParameters true
UseImmiscibleListForLiquid2InitialEstimates true
SingleCompoundCheckThreshold 0.99999
OverrideKvalFugCoeff false
OverrideEnthalpyCalculation false
OverrideEntropyCalculation false
LiquidDensityCalculationMode_Subcritical Rackett_and_ExpData
LiquidDensityCalculationMode_Supercritical Rackett_and_ExpData
LiquidDensity_CorrectExpDataForPressure true
LiquidDensity_UsePenelouxVolumeTranslation true
LiquidViscosityCalculationMode_Subcritical ExpData
LiquidViscosityCalculationMode_Supercritical Letsou_Stiel
LiquidViscosity_CorrectExpDataForPressure true
LiquidViscosity_MixingRule MoleAverage
VaporPhaseFugacityCalculationMode Ideal
SolidPhaseFugacityCalculationMethod FromLiquidFugacity
SolidPhaseFugacity_UseIdealLiquidPhaseFugacity false
SolidPhaseEnthalpy_UsesCp false
EnthalpyEntropyCpCvCalculationMode LeeKesler
LiquidEnthalpyEntropyCpCvCalculationMode_EOS EOS
LiquidFugacity_UsePoyntingCorrectionFactor true
ActivityCoefficientModels_IgnoreMissingInteractionParameters false
IgnoreVaporFractionLimit false
IgnoreSalinityLimit false
CalculateAdditionalMaterialStreamProperties true
FlashCalculationApproach NestedLoops
DisplayMissingCompoundPropertiesWarning false
ForcedSolids []
PropertyOverrides {}
FlashSettings 36 Setting entries

Learn more

API members

Public members declared by this class. Inherited members are documented on the base classes.

Constructors

SteamTablesPropertyPackage()
public SteamTablesPropertyPackage()
Public Sub New()

SteamTablesPropertyPackage(bool)
Parameter Type Description
comode Boolean
public SteamTablesPropertyPackage(bool comode)
Public Sub New(comode As Boolean)

Properties

FlashBase: Returns the FlashAlgorithm object instance for this property package.

Returns the FlashAlgorithm object instance for this property package.

public override FlashAlgorithm FlashBase { get; }
Public Overrides ReadOnly Property FlashBase As FlashAlgorithm

MobileCompatible
public override bool MobileCompatible { get; }
Public Overrides ReadOnly Property MobileCompatible As Boolean

Popular
public override bool Popular { get; }
Public Overrides ReadOnly Property Popular As Boolean

Methods

AddDefaultCompounds(string[])
Parameter Type Description
compnames String[]
public override void AddDefaultCompounds(string[] compnames)
Public Overrides Sub AddDefaultCompounds(compnames As String())

AUX_VAPDENS(double, double)
Parameter Type Description
T Double
P Double
public override double AUX_VAPDENS(double T, double P)
Public Overrides Function AUX_VAPDENS(T As Double, P As Double) As Double

AUX_Z(double[], double, double, PhaseName)
Parameter Type Description
Vx Double[]
T Double
P Double
state PhaseName
public override double AUX_Z(double[] Vx, double T, double P, PhaseName state)
Public Overrides Function AUX_Z(Vx As Double(), T As Double, P As Double, state As PhaseName) As Double

DW_CalcBubP(Array, double, double, Array, bool): Does a Bubble Pressure calculation for the specified liquid composition at the specified temperature.

Does a Bubble Pressure calculation for the specified liquid composition at the specified temperature.

Parameter Type Description
Vx Array Vector of doubles containing liquid phase molar composition for each component in the mixture.
T Double Temperature in K
Pref Double Initial estimate for Pressure, in Pa
K Array Vector with initial estimates for K-values
ReuseK Boolean Boolean indicating wether to use the initial estimates for K-values or not.
public override object DW_CalcBubP(Array Vx, double T, double Pref = 0, Array K = null, bool ReuseK = false)
Public Overrides Function DW_CalcBubP(Vx As Array, T As Double, Pref As Double = 0, K As Array = Nothing, ReuseK As Boolean = False) As Object

DW_CalcBubT(Array, double, double, Array, bool): Does a Bubble Temperature calculation for the specified liquid composition at the specified pressure.

Does a Bubble Temperature calculation for the specified liquid composition at the specified pressure.

Parameter Type Description
Vx Array Vector of doubles containing liquid phase molar composition for each component in the mixture.
P Double
Tref Double
K Array Vector with initial estimates for K-values
ReuseK Boolean Boolean indicating wether to use the initial estimates for K-values or not.
public override object DW_CalcBubT(Array Vx, double P, double Tref = 0, Array K = null, bool ReuseK = false)
Public Overrides Function DW_CalcBubT(Vx As Array, P As Double, Tref As Double = 0, K As Array = Nothing, ReuseK As Boolean = False) As Object

DW_CalcCompPartialVolume(Phase, double, double)
Parameter Type Description
phase Phase
T Double
P Double
public override void DW_CalcCompPartialVolume(Phase phase, double T, double P)
Public Overrides Sub DW_CalcCompPartialVolume(phase As Phase, T As Double, P As Double)

DW_CalcCp_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcCp_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcCp_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcCv_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcCv_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcCv_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcDewP(Array, double, double, Array, bool): Does a Dew Pressure calculation for the specified vapor phase composition at the specified temperature.

Does a Dew Pressure calculation for the specified vapor phase composition at the specified temperature.

Parameter Type Description
Vx Array Vector of doubles containing vapor phase molar composition for each component in the mixture.
T Double Temperature in K
Pref Double Initial estimate for Pressure, in Pa
K Array Vector with initial estimates for K-values
ReuseK Boolean Boolean indicating wether to use the initial estimates for K-values or not.
public override object DW_CalcDewP(Array Vx, double T, double Pref = 0, Array K = null, bool ReuseK = false)
Public Overrides Function DW_CalcDewP(Vx As Array, T As Double, Pref As Double = 0, K As Array = Nothing, ReuseK As Boolean = False) As Object

DW_CalcDewT(Array, double, double, Array, bool): Does a Dew Temperature calculation for the specified vapor composition at the specified pressure.

Does a Dew Temperature calculation for the specified vapor composition at the specified pressure.

Parameter Type Description
Vx Array Vector of doubles containing vapor phase molar composition for each component in the mixture.
P Double
Tref Double
K Array Vector with initial estimates for K-values
ReuseK Boolean Boolean indicating wether to use the initial estimates for K-values or not.
public override object DW_CalcDewT(Array Vx, double P, double Tref = 0, Array K = null, bool ReuseK = false)
Public Overrides Function DW_CalcDewT(Vx As Array, P As Double, Tref As Double = 0, K As Array = Nothing, ReuseK As Boolean = False) As Object

DW_CalcEnergyFlowMistura_ISOL(double, double)
Parameter Type Description
T Double
P Double
public override double DW_CalcEnergyFlowMistura_ISOL(double T, double P)
Public Overrides Function DW_CalcEnergyFlowMistura_ISOL(T As Double, P As Double) As Double

DW_CalcEnthalpy(Array, double, double, State): Calculates the enthalpy of a mixture.

Calculates the enthalpy of a mixture.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature (K)
P Double Pressure (Pa)
st State State enum indicating the state of the mixture (liquid or vapor).
public override double DW_CalcEnthalpy(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcEnthalpy(Vx As Array, T As Double, P As Double, st As State) As Double

DW_CalcEnthalpyDeparture(Array, double, double, State): Calculates the enthalpy departure of a mixture.

Calculates the enthalpy departure of a mixture.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature (K)
P Double Pressure (Pa)
st State State enum indicating the state of the mixture (liquid or vapor).
public override double DW_CalcEnthalpyDeparture(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcEnthalpyDeparture(Vx As Array, T As Double, P As Double, st As State) As Double

DW_CalcEntropy(Array, double, double, State): Calculates the entropy of a mixture.

Calculates the entropy of a mixture.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature (K)
P Double Pressure (Pa)
st State State enum indicating the state of the mixture (liquid or vapor).
public override double DW_CalcEntropy(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcEntropy(Vx As Array, T As Double, P As Double, st As State) As Double

DW_CalcEntropyDeparture(Array, double, double, State): Calculates the entropy departure of a mixture.

Calculates the entropy departure of a mixture.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature (K)
P Double Pressure (Pa)
st State State enum indicating the state of the mixture (liquid or vapor).
public override double DW_CalcEntropyDeparture(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcEntropyDeparture(Vx As Array, T As Double, P As Double, st As State) As Double

DW_CalcEquilibrium(FlashSpec, FlashSpec)
Parameter Type Description
spec1 FlashSpec
spec2 FlashSpec
public override void DW_CalcEquilibrium(FlashSpec spec1, FlashSpec spec2)
Public Overrides Sub DW_CalcEquilibrium(spec1 As FlashSpec, spec2 As FlashSpec)

DW_CalcFugCoeff(Array, double, double, State): Calculates fugacity coefficients for the specified composition at the specified conditions.

Calculates fugacity coefficients for the specified composition at the specified conditions.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature in K
P Double Pressure in Pa
st State Mixture state (Liquid or Vapor)
public override double[] DW_CalcFugCoeff(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcFugCoeff(Vx As Array, T As Double, P As Double, st As State) As Double()

DW_CalcK_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcK_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcK_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcMassaEspecifica_ISOL(Phase, double, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
pvp Double
public override double DW_CalcMassaEspecifica_ISOL(Phase Phase1, double T, double P, double pvp = 0)
Public Overrides Function DW_CalcMassaEspecifica_ISOL(Phase1 As Phase, T As Double, P As Double, pvp As Double = 0) As Double

DW_CalcMM_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcMM_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcMM_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcPhaseProps(Phase)
Parameter Type Description
Phase Phase
public override void DW_CalcPhaseProps(Phase Phase)
Public Overrides Sub DW_CalcPhaseProps(Phase As Phase)

DW_CalcProp(string, Phase): Provides a wrapper function for CAPE-OPEN CalcProp/CalcSingleProp functions.

Provides a wrapper function for CAPE-OPEN CalcProp/CalcSingleProp functions.

Parameter Type Description
property String The property to be calculated.
phase Phase The phase where the property must be calculated for.
public override void DW_CalcProp(string property, Phase phase)
Public Overrides Sub DW_CalcProp([property] As String, phase As Phase)

DW_CalcPVAP_ISOL(double)
Parameter Type Description
T Double
public override double DW_CalcPVAP_ISOL(double T)
Public Overrides Function DW_CalcPVAP_ISOL(T As Double) As Double

DW_CalcTensaoSuperficial_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcTensaoSuperficial_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcTensaoSuperficial_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcTwoPhaseProps(Phase, Phase)
Parameter Type Description
Phase1 Phase
Phase2 Phase
public override void DW_CalcTwoPhaseProps(Phase Phase1, Phase Phase2)
Public Overrides Sub DW_CalcTwoPhaseProps(Phase1 As Phase, Phase2 As Phase)

DW_CalcViscosidadeDinamica_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcViscosidadeDinamica_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcViscosidadeDinamica_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

EnthalpyPx(double, object)
Parameter Type Description
x Double
otherargs Object
public double EnthalpyPx(double x, object otherargs)
Public Function EnthalpyPx(x As Double, otherargs As Object) As Double

EnthalpyTx(double, object)
Parameter Type Description
x Double
otherargs Object
public double EnthalpyTx(double x, object otherargs)
Public Function EnthalpyTx(x As Double, otherargs As Object) As Double

EntropyPx(double, object)
Parameter Type Description
x Double
otherargs Object
public double EntropyPx(double x, object otherargs)
Public Function EntropyPx(x As Double, otherargs As Object) As Double

EntropyTx(double, object)
Parameter Type Description
x Double
otherargs Object
public double EntropyTx(double x, object otherargs)
Public Function EntropyTx(x As Double, otherargs As Object) As Double

GetModel()
public override object GetModel()
Public Overrides Function GetModel() As Object

RunPostMaterialStreamSetRoutine()
public override void RunPostMaterialStreamSetRoutine()
Public Overrides Sub RunPostMaterialStreamSetRoutine()

SupportsComponent(ICompoundConstantProperties)
Parameter Type Description
comp ICompoundConstantProperties
public override bool SupportsComponent(ICompoundConstantProperties comp)
Public Overrides Function SupportsComponent(comp As ICompoundConstantProperties) As Boolean

Fields

ClassId
public const string ClassId = "170D6E8A-8880-4bf9-B7A0-E4A3FDBFD589"
Public Const ClassId As String = "170D6E8A-8880-4bf9-B7A0-E4A3FDBFD589"