Energie auf höchstem Niveau

Berechnung von Wasser-Dampf-Stoffdaten gemäß IAPWS-IF97 mit FreeSteam

· von David Heinze · Lesedauer etwa 4 Minuten · (812 Wörter)
C Eclipse Freesteam IAPWS-IF97 Linux Ubuntu Windows Stoffdaten Wasser Dampf

IAPWS-IF97 ist der internationale Standard zur Berechnung von Wasser-Dampf-Stoffdaten. Es gibt diverse Software-Implementierungen, unter anderem das Open-Source-Projekt FreeSteam. Da die Dokumentation von FreeSteam recht kurz ausfällt, fasse ich hier kurz zusammen, wie man vorgehen muss, um den Quelltext zu kompilieren und in der Eclipse-IDE zu verwenden. (Hinweis: Für Endanwender, die den Code nicht selbst kompilieren wollen bzw. müssen, genügt i.d.R. die Verwendung des Binary Installers, mit dem sich die Bibliothek bequem unter Windows installieren lässt.)

Inhalt

  1. Linux oder Windows?
  2. Freesteam unter Linux
  3. Freesteam unter Windows
  4. Freesteam mit Eclipse

Linux oder Windows?

Eigentlich wollte ich unter Windows bleiben, da ich nicht extra Linux installieren wollte. Aber nachdem ich zwei Tage benötigt habe, um einen halbwegs (nicht vollständig!) fehlerfreien Build unter Windows durchzuführen, bin ich auf Linux umgestiegen. Inklusive Installation von Ubuntu parallel zu Windows ging der Build dann tatsächlich schneller (und vor allem fehlerfrei!) von statten. Ich rate also auf jeden Fall zu Linux, trotzdem möchte ich im folgenden beide Varianten beschreiben.

Freesteam unter Linux

Zur Installation der Bibliothek unter Linux werden einige weitere Pakete benötigt, die unter Ubuntu wie folgt installiert werden können:

sudo apt-get install build-essential
sudo apt-get install scons
sudo apt-get install swig

Wenn diese Pakete installiert sind, sollte es genügen, den Freesteam-Quellcode in ein beliebiges Verzeichnis zu kopieren und dort den Installer aufzurufen:

cd /path/to/freesteam-lib
sudo scons

Freesteam unter Windows

Wie bereits erwähnt, hat mich die Erstellung der Bibliothek unter Windows 7 viel Zeit gekostet und war bis zum Ende nicht komplett fehlerfrei. Letztendlich bin ich wegen vieler Stolperfallen und Fehlerquellen zu Linux gewechselt. Trotzdem möchte ich kurz die allgemeine Vorgehensweise beschreiben.

Alle nötigen Programme verfügen über einen komfortablen Windows-Installer oder müssen lediglich entpackt werden, so dass nur wenige zusätzliche Einstellungen vorgenommen werden müssen. Sofern nicht anders angegeben, geht die folgende Kurzanleitung im Folgenden immer davon aus, dass die Standard-Installationspfade verwendet wurden.

Minimalanforderungen

Zum Kompilieren von Freesteam als DLL werden folgende Programme benötigt:

  • MinGW/MSYS als Compiler (Hinweis: Microsoft Visual Studio kann nicht verwendet werden, da der Microsoft Compiler auf ANSI C / C89 basiert, FreeSteam aber C99 benötigt.)

    1. Windows-Installer ausführen
    2. PATH-Variable hinzufügen: C:\MinGW\bin;C:\MinGW\msys\1.0\bin
    3. Installation überprüfen, dazu in der Windows-Kommandozeile folgende Befehle eingeben:
    gcc –version
    g++ –version
    make –version
    
  • Python, da SCons (s.u.) über Python-Skripte implementiert wird

    1. Windows-Installer ausführen
    2. PATH-Variable hinzufügen: C:\Python27;C:\Python27\Scripts
    3. Installation überprüfen:
    python –V
    
  • Den aktuellen Production-Release von SCons als Build-Management-Tool

    1. Windows-Installer mit Administrator-Rechten ausführen (Ohne Administratorrechte können keine Informationen zur Deinstallation angelegt werden.)
    2. Installation überprüfen:
    scons –version
    

    Weitere Infos zu SCons finden sich im User Guide. Empfehlenswert ist insbesondere, mit Hilfe des Hello-World-Programms zu testen, ob bis hier alles korrekt eingerichtet wurde.

  • GNU Scientific Library: GSL-1.13 on MinGW

    1. Windows-Installer ausführen, in C:\MinGW installieren (kein Unterverzeichnis anlegen!)

Kompletter Build

Weitere, optionale Komponenten für einen kompletten Build:

  • SWIG als Schnittstelle zu Python
    1. SWIG in einen beliebigen Ordner (z.B. C:\swigwin) entpacken. (Hinweis: Ab Version 2.0 behauptet das SConstruct-Skript von Freesteam, SWIG sei zu alt. So lange dieser Bug nicht behoben ist, sollte eine frühere Version – z.B. swigwin- 1.3.40 – verwendet werden.)
    2. PATH-Variable hinzufügen: C:\swigwin
  • PyWin32 (Python Extensions for Windows)
    1. Windows-Installer ausführen

Leider habe ich es nicht geschafft, den Build für ASCEND durchzuführen. Anscheinend gibt es hier Kompatibilitäts-Probleme, die ich nicht beheben konnte. Auch die Erzeugung eines Installers mittels NSIS war nicht erfolgreich.

FreeSteam mit Eclipse

Sollen Dinge am Quelltext verändert werden, ist u.U. eine grafische Entwicklungsoberfläche sinnvoll/wünschenswert. Hier bietet sich aufgrund der guten Kompatibilität zu SCons Eclipse an.

Kompilieren der Freesteam-Bibliothek

  1. Eclipse einrichten
  2. SConsolidator als Schnittstelle zu SCons in Eclipse installieren:
    1. Eclipse starten
    2. Im Menü Help den Punkt Install New Software… auswählen
    3. http://www.sconsolidator.com/update als Quelle eingeben
    4. Plug-In für SCons installieren
    5. Nach Neustart von Eclipse evtl. den Pfad zu SCons (/usr/bin/scons unter Linux, C:\Python27\Scripts\scons.bat unter Windows) angeben
  3. Das komplette tar.bz-Archiv von FreeSteam in einen beliebigen Ordner im Projektverzeichnis von Eclipse entpacken.
  4. In Eclipse im Menü File > New > New SCons project from existing source anwählen und den soeben verwendeten Ordner angeben.
  5. Jetzt sollte der Build in Eclipse ohne Fehler funktionieren (STRG + B).

Sollte die Installation von SConsolidator nicht klappen, muss u.U. erst das allgemeine Update-Verzeichnis hinzugefügt werden. Dieses lautet http://download.eclipse.org/releases/indigo/, wobei “Indigo” für den Namen der installierten Version von Eclipse steht – weitere Informationen im User Guide von Eclipse.

Weitere Infos zu SConsolidator finden sich auf der Getting Started-Seite. Es empfiehlt sich, mittels “Hello World!” zu testen, ob SConsolidator korrekt in Eclipse integriert wurde (siehe Abschnitt “Create new SCons based C/C++ Managed Project”).

Einbindung der Freesteam-Bibliothek im eigenen Code

Zur Einbindung der so kompilierten Freesteam-Bibliothek in ein eigenes C/C++-Projekt müssen unter Eclipse folgende Einstellungen vorgenommen werden:

  1. Rechtsklick auf das Projekt im “Project Explorer” > Properties
  2. Im nun öffnenden Fenster links den Abschnitt C/C++ Build > Settings öffnen
  3. Unter GCC C Linker > Libraries über das grüne “+”-Symbol die Library freesteam hinzufügen.

Wenn es das Projekt kompiliert, aber nicht ausgeführt werden kann, hilft u.U. folgende Lösung aus dem Freesteam-Forum weiter:

cd /etc/ld.so.conf.d
sudo echo "/usr/local/lib" > local-libraries.conf
sudo ldconfig

Kommentare