freesteam is an open source implementation of
international-standard IAPWS-IF97 steam
tables from the International Association for the Properties of Water
and
Steam (IAPWS). freesteam lets you compute water and steam properties for a wide range of pressures and temperatures: you can specify the state of the steam in terms of a variety of combinations of 'known' properties, then freesteam will solve and allow you to query to find the values of the 'unknown' properties.
The library includes bindings for the Python language, as well as bindings to allow it to be used from the ASCEND modelling environment. For Windows and Mac and Ubuntu users, convenient binary packages are provided.
New: Freesteam 2.0 released! This is a complete rewrite of freesteam in the C language, for faster, smaller binaries and better compatibility for accessing the DLL/SO from different C++ compilers.
There is a mailing list for freesteam users, which is the preferred support mechansim (it ensures that FAQs are captured for others to re-use). Alternatively, you can email the developer directly on
. The project is currently under active development (as of Jan 2010), and contributions are most welcome!
1. What can I do with it?
Using freesteam, you can set the state of steam using various pairs of know
properties. The following input pairs are implemented:
(p,T)
(p,h)
(p,s)
(p,v)
(T,s)
(T,x)
In C, these states are set using syntax like SteamState S = freesteam_set_ph(p,h). In Python, the syntax is S = steam_ph(p,h). The routines return a 'SteamState' object that can then be queried for any output properties you wish to know, including
p
Pressure
T
Temperature
h
Enthalpy
s
Entropy
cp
Isobaric heat capacity
cv
Isochoric heat capacity
v
Specific volume
rho
Density
u
Internal energy
x
Quality (when saturated)
k
Thermal conductivity
mu
Dynamic viscosity
w
Speed of sound
The above properties are accessed using functions in C, like double p = freesteam_p(S), and using properties in Python, like p = S.p.
Calculation of surface tension is not currently implemented in version 2.0
Saturation curves and the boundary curves used internally by IAPWS-IF97 can
also be accessed, if required.
Freesteam is now able (version 2.x)
to auto-generate a complete set of steam tables suitable for student use, as well as a range of property diagrams, using Python code. Some property diagrams produced using freesteam-0.8.1 are also available.
freesteam is released under
the GNU GPL, which is available online
at
http://www.gnu.org/copyleft/gpl.html.
It is also distributed with the source code distribution for freesteam,
as LICENSE.txt.
Note that under the GPL, you cannot sell or otherwise distribute any code that dynamically or statically links to the freesteam library unless your code is also licensed under the GPL.
3. Bugs
For a complete up-to-date list of bugs and feature requests, visit
the Mantis bug tracker for
the project. We are not using the SourceForge 'tracker' at this stage.
Some of the bugs current at the time of writing:
Mac binary installer does not include the sample Python scripts
There are still some small errors in the (p,h) calculation, of the order of 0.1%.
Our documentation needs to clearly indicate which IAPWS releases are used to provide different functionality.
4. Future directions
Some of the things waiting 'on the drawing board' are as follows. If you can help, please let me know!
High priority
Updated documentation!
Some more example code.
DIY Ideas 4U
We would like to expose freesteam functionality to Excel via the XLW wrapper classes.
Backwards correlations should be iteratively refined by a subsequent Newton solver stage, to reduce errors associated with their use.
An add-in for OpenOffice would be good. Have received some partially-working source code for this from Allan Curtis
Region 5 has not yet been implemented at all, but it's a low priority. Let us know if you'd need it.
Develop a cross-platform GUI version using GTK+ or similar.
University of Applied Sciences Zittau/Görlitz, Germany: FluidEXL
Edward Throm: ASTEM97
G&P Engineering: StmProps
Zittau/Goerlitz University of Applied Sciences: LibIF97
Wagner, Wolfgang, Kretzschmar, Hans-Joachim, International Steam Tables - The
Industrial Standard IAPWS-IF97 for the Thermodynamic Properties and
Supplemetary Equations for Other Properties: Tables, Algorithms,
Diagrams, Software, 2nd ed., 2006 (!),
Springer, Germany.