Introduction

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 john.pye@anu.removethisrubbish.edu.au (spam protection) . The project is currently under active development (as of Jan 2010), and contributions are most welcome!

1. What can I do with it?

(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.

Please check out the example code

2. License

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.

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.

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.

5. Related sites