This is ported from pyXSteam using ChatGPT 4o
The tests were also migrated and pass.
Original Released by Magnus Holmgren for Matlab and Excel: http://xsteam.sourceforge.net and/or http://www.x-eng.com
At this github repository you can find the/a matlab version.
XSteam provides (mostly) accurate steam and water properties from 0 - 1000 bar and from 0 - 2000 °C according to the IAPWS release IF-97. For accuracy of the functions in different regions see IF-97 Page 4
Also includes thermal conductivity and viscosity, which are not part of the IF97 release.
- Thermal Conductivity: (IAPWS 1998) http://www.iapws.org/relguide/ThCond.pdf
- Viscosity: (2003)
Some effort has been made to include the refined function of more recent releases and also functions for calculations on heavy water. This includes:
- IAPWS R4
- IAPWS R14
In chronological order:
- IAPWS
- Magnus Holmgren
- drunsinn
- mohit0749
- gonmolina
- xjtu-blacksmith
- rogerlew
This library requires .NET 6 or later.
To run the unit tests, ensure you have the following NuGet packages installed:
- NUnit
- NUnit3TestAdapter
- Microsoft.NET.Test.SDK
To include this library in your project, add a reference to the compiled DLL or add it as a dependency via your preferred package manager from NuGet (e.g., dotnet add package XSteamNET).
https://www.nuget.org/packages/XSteamNET/
All Functions follow the same naming schema: First the wanted property,
then a underscore _, then the wanted input properties Example:
t_ph is temperature as a function of pressure and enthalpy. For a list
of valid functions se below:
| Property | Description |
|---|---|
| t | Temperature (°C or °F) |
| p | Pressure (bar or psi) |
| h | Enthalpy (kJ/kg or btu/lb) |
| v | Specific volume (m3/kg or ft^3/lb) |
| rho | Density (kg/m3 or lb/ft^3) |
| s | Specific entropy (kJ/(kg °C) or btu/(lb °F)) |
| u | Specific internal energy (kJ/kg or btu/lb) |
| Cp | Specific isobaric heat capacity (kJ/(kg °C) or btu/(lb °F)) |
| Cv | Specific isochoric heat capacity (kJ/(kg °C) or btu/(lb °F)) |
| w | Speed of sound (m/s or ft/s) |
| my | Viscosity (N s/m^2 or lbm/ft/hr) |
| tc | Thermal Conductivity (W/(m °C) or btu/(h ft °F)) |
| st | Surface Tension (N/m or lb/ft) |
| x | Vapor fraction |
| vx | Vapor Volume Fraction |
Simple Example:
from pyXSteam.XSteam import XSteam
steamTable = XSteam(XSteam.UNIT_SYSTEM_MKS)
print(steamTable.hL_p(220.0))
By using the unitSystem Parameter, you can tell XSteam witch Unit System you are using.
steamTable = XSteam(XSteam.UNIT_SYSTEM_MKS) # m/kg/sec/°C/bar/W
steamTable = XSteam(XSteam.UNIT_SYSTEM_FLS) # ft/lb/sec/°F/psi/btu
steamTable = XSteam(XSteam.UNIT_SYSTEM_BARE) # m/kg/sec/K/MPa/W
To enable logging, add the following lines to your code:
import logging
logging.basicConfig(level=logging.INFO)
or alternatively
import logging
logger = logging.getLogger('pyXSteam')
logger.setLevel(logging.DEBUG)
sh = logging.StreamHandler()
sh.setFormatter(logging.Formatter('%(name)s - %(levelname)s - %(message)s'))
logger.addHandler(sh)
| Function | Description |
|---|---|
| tsat_p | Saturation temperature |
| t_ph | Temperature as a function of pressure and enthalpy |
| t_ps | Temperature as a function of pressure and entropy |
| t_hs | Temperature as a function of enthalpy and entropy |
| Function | Description |
|---|---|
| psat_t | Saturation pressure |
| p_hs | Pressure as a function of h and s. |
| p_hrho | Pressure as a function of h and rho. Very inaccurate for solid water region since it's almost incompressible! |
| pmelt_t | Pressure as a function of temperature along the melting curve. Optional parameter to select ice region |
| psubl_t | Pressure as a function of temperature along the sublimation curve. |
| Function | Description |
|---|---|
| hV_p | Saturated vapor enthalpy |
| hL_p | Saturated liquid enthalpy |
| hV_t | Saturated vapor enthalpy |
| hL_t | Saturated liquid enthalpy |
| h_pt | Enthalpy as a function of pressure and temperature |
| h_ps | Enthalpy as a function of pressure and entropy |
| h_px | Enthalpy as a function of pressure and vapor fraction |
| h_prho | Enthalpy as a function of pressure and density. Observe for low temperatures (liquid) this equation has 2 solutions |
| h_tx | Enthalpy as a function of temperature and vapor fraction |
| Function | Description |
|---|---|
| vV_p | Saturated vapor volume |
| vL_p | Saturated liquid volume |
| vV_t | Saturated vapor volume |
| vL_t | Saturated liquid volume |
| v_pt | Specific volume as a function of pressure and temperature |
| v_ph | Specific volume as a function of pressure and enthalpy |
| v_ps | Specific volume as a function of pressure and entropy |
| Function | Description |
|---|---|
| rhoV_p | Saturated vapor density |
| rhoL_p | Saturated liquid density |
| rhoV_t | Saturated vapor density |
| rhoL_t | Saturated liquid density |
| rho_pt | Density as a function of pressure and temperature |
| rho_ph | Density as a function of pressure and enthalpy |
| rho_ps | Density as a function of pressure and entropy |
| Function | Description |
|---|---|
| sV_p | Saturated vapor entropy |
| sL_p | Saturated liquid entropy |
| sV_t | Saturated vapor entropy |
| sL_t | Saturated liquid entropy |
| s_pt | Specific entropy as a function of pressure and temperature (Returns saturated vapor enthalpy if mixture) |
| s_ph | Specific entropy as a function of pressure and enthalpy |
| Function | Description |
|---|---|
| uV_p | Saturated vapor internal energy |
| uL_p | Saturated liquid internal energy |
| uV_t | Saturated vapor internal energy |
| uL_t | Saturated liquid internal energy |
| u_pt | Specific internal energy as a function of pressure and temperature |
| u_ph | Specific internal energy as a function of pressure and enthalpy |
| u_ps | Specific internal energy as a function of pressure and entropy |
| Function | Description |
|---|---|
| CpV_p | Saturated vapor heat capacity |
| CpL_p | Saturated liquid heat capacity |
| CpV_t | Saturated vapor heat capacity |
| CpL_t | Saturated liquid heat capacity |
| Cp_pt | Specific isobaric heat capacity as a function of pressure and temperature |
| Cp_ph | Specific isobaric heat capacity as a function of pressure and enthalpy |
| Cp_ps | Specific isobaric heat capacity as a function of pressure and entropy |
| Function | Description |
|---|---|
| CvV_p | Saturated vapor isochoric heat capacity |
| CvL_p | Saturated liquid isochoric heat capacity |
| CvV_t | Saturated vapor isochoric heat capacity |
| CvL_t | Saturated liquid isochoric heat capacity |
| Cv_pt | Specific isochoric heat capacity as a function of pressure and temperature |
| Cv_ph | Specific isochoric heat capacity as a function of pressure and enthalpy |
| Cv_ps | Specific isochoric heat capacity as a function of pressure and entropy |
| Function | Description |
|---|---|
| wV_p | Saturated vapor speed of sound |
| wL_p | Saturated liquid speed of sound |
| wV_t | Saturated vapor speed of sound |
| wL_t | Saturated liquid speed of sound |
| w_pt | Speed of sound as a function of pressure and temperature |
| w_ph | Speed of sound as a function of pressure and enthalpy |
| w_ps | Speed of sound as a function of pressure and entropy |
| Function | Description |
|---|---|
| my_pt | Viscosity as a function of pressure and temperature |
| my_ph | Viscosity as a function of pressure and enthalpy |
| my_ps | Viscosity as a function of pressure and entropy |
| Function | Description |
|---|---|
| tcL_p | Saturated vapor thermal conductivity |
| tcV_p | Saturated liquid thermal conductivity |
| tcL_t | Saturated vapor thermal conductivity |
| tcV_t | Saturated liquid thermal conductivity |
| tc_pt | Thermal conductivity as a function of pressure and temperature |
| tc_ph | Thermal conductivity as a function of pressure and enthalpy |
| tc_hs | Thermal conductivity as a function of enthalpy and entropy |
| Function | Description |
|---|---|
| st_t | Surface tension for two phase water/steam as a function of T |
| st_p | Surface tension for two phase water/steam as a function of p |
| Function | Description |
|---|---|
| x_ph | vapor fraction as a function of pressure and enthalpy |
| x_ps | vapor fraction as a function of pressure and entropy |
| Function | Description |
|---|---|
| vx_ph | vapor volume fraction as a function of pressure and enthalpy |
| vx_ps | vapor volume fraction as a function of pressure and entropy |
| Function | Description |
|---|---|
| pmelt_t | Pressure along the melting curve as a function of temperature |
| vx_psubl_tps | Pressure along the sublimation curve as a function of temperature |
| Function | Description |
|---|---|
| my_rhoT | Viscosity as a function of density and temperature |
| tc_rhoT | Thermal conductivity as a function of density and temperature |
- pull requests are always wellcome!
- code style is enforced by black