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¶
-
User guide
-
Used with
-
Tutorials
-
FluentAPI
API members¶
Public members declared by this class. Inherited members are documented on the base classes.
Constructors¶
SteamTablesPropertyPackage(bool)
| Parameter | Type | Description |
|---|---|---|
comode |
Boolean |
Properties¶
FlashBase: Returns the FlashAlgorithm object instance for this property package.
Returns the FlashAlgorithm object instance for this property package.
MobileCompatible
Methods¶
AddDefaultCompounds(string[])
| Parameter | Type | Description |
|---|---|---|
compnames |
String[] |
AUX_VAPDENS(double, double)
| Parameter | Type | Description |
|---|---|---|
T |
Double |
|
P |
Double |
AUX_Z(double[], double, double, PhaseName)
| Parameter | Type | Description |
|---|---|---|
Vx |
Double[] |
|
T |
Double |
|
P |
Double |
|
state |
PhaseName |
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. |
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. |
DW_CalcCompPartialVolume(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
phase |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcCp_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcCv_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
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. |
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. |
DW_CalcEnergyFlowMistura_ISOL(double, double)
| Parameter | Type | Description |
|---|---|---|
T |
Double |
|
P |
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). |
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). |
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). |
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). |
DW_CalcEquilibrium(FlashSpec, FlashSpec)
| Parameter | Type | Description |
|---|---|---|
spec1 |
FlashSpec |
|
spec2 |
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) |
DW_CalcK_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcMassaEspecifica_ISOL(Phase, double, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
|
pvp |
Double |
DW_CalcMM_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcPhaseProps(Phase)
| Parameter | Type | Description |
|---|---|---|
Phase |
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. |
DW_CalcPVAP_ISOL(double)
| Parameter | Type | Description |
|---|---|---|
T |
Double |
DW_CalcTensaoSuperficial_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcTwoPhaseProps(Phase, Phase)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
Phase2 |
Phase |
DW_CalcViscosidadeDinamica_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
EnthalpyPx(double, object)
| Parameter | Type | Description |
|---|---|---|
x |
Double |
|
otherargs |
Object |
EnthalpyTx(double, object)
| Parameter | Type | Description |
|---|---|---|
x |
Double |
|
otherargs |
Object |
EntropyPx(double, object)
| Parameter | Type | Description |
|---|---|---|
x |
Double |
|
otherargs |
Object |
EntropyTx(double, object)
| Parameter | Type | Description |
|---|---|---|
x |
Double |
|
otherargs |
Object |
RunPostMaterialStreamSetRoutine()
SupportsComponent(ICompoundConstantProperties)
| Parameter | Type | Description |
|---|---|---|
comp |
ICompoundConstantProperties |
Fields¶