This was copied from the internal Wiki of Hummingbird
TODO: Translate to english, update Links and Info
Gas Turbine Developer (Unixname: gtdev, sprich: "dschitidäf") ist unser selbstentwickeltes Open-Source-Programm zur Erstauslegung von neuen Gasturbinen. Es ist komplett Modular aufgebaut mit dem Ziel die Implementierung neuer Formeln/Komponenten zu erleichtern. Das Programm wird seit Sommer 2009 entwickelt und befindet sich momentan noch in der Alpha-Phase. Validierung der Formeln und Debugging steht noch aus.
Der Gas Turbine Developer wurde plattformunabhängig entwickelt und ist lauffähig unter Linux, Mac und Windows. Um das Programm starten zu können, werden die folgenden Programme und Bibliotheken benötigt:
Python-2.6.6
Numpy-1.5.1
SciPy-0.8.0
Qt-4.7.1
PyQt-4.8.1
argparse-1.1
Matplotlib-1.0.0
Die Versionsangaben beziehen sich auf eine im Dezember 2010 als lauffähig getestete Konfiguration. Andere, insbesondere neuere Versionen sollten prinzipiell ebenso möglich sein, Kompatibilität mit älteren Version muss nicht unbedingt gegeben sein.
Für Ungeduldige:
Sind die notwendigen Abhängigkeiten erfüllt, ist das Programm im Python-Interpreter lauffähig. Das Projekt wird auf [http://sourceforge.net/projects/gtdev/ Sourceforge] gehostet und kann von dort bezogen werden.
Im Hauptverzeichnis kann nun z.B. die GUI durch Starten von gtdev.py erzeugt werden.
In Linux dazu folgenden Befehl in der Konsole aufgerufen:
python gtdev.py
In Windows genügt auch ein Doppelklick auf gtdev.py im Explorer um die GUI zu starten.
Für alle, die es genauer wissen wollen:
Im Folgenden wird die Installation unter Ubuntu Linux, Mac OS 10.6 und Windows beschrieben.
Die folgende Anleitung wurde mit Ubuntu Linux 10.04 getestet.
Die benötigenden Bibliotheken können sehr einfach mittels apt-get installiert werden:
sudo apt-get install python-numpy python-scipy python-qt4 python-argparse python-matplotlib
Danach den [[#Source-Code|Source-Code]] von Sourceforge herunterladen und das Programm in der Konsole starten:
python gtdev.py
Um die neuste Version benutzen zu können, muss man zunächst einige wichtige Dinge installieren. Dabei muss immer darauf geachtet werden, die für Python 2.6 geeigneten Pakete zu installieren:
SVN: [http://tortoisesvn.net/downloads]
Python 2.6: [http://www.python.org/download/releases/2.6.6/]
Numpy und Scipy: [http://www.scipy.org/Download]
PyQt4: [http://www.riverbankcomputing.co.uk/software/pyqt/download]
Matplotlib: [http://sourceforge.net/projects/matplotlib/files/]
Wenn alle Abhängigkeiten erfolgreich installiert wurden, den [[#Source-Code|Source-Code]] von Sourceforge herunterladen und das Programm mit einem Doppelklick auf gtdev.py im Hauptverzeichnis starten.
Die neueste gepackte Version des Programms kann bei [http://sourceforge.net/projects/gtdev/ Sourceforge] heruntergeladen werden. Es empfiehlt sich jedoch i.A. die aktuelle Entwicklungsversion zu verwenden. Diese steht im [https://sourceforge.net/scm/?type=svn&group_id=292970 SVN des SourceForge-Projektes] zur Verfügung.
Für Linux und Mac: Zum Checkout der aktuellsten Version mittels Subversion den folgenden Befehl ausführen. Dieser legt im aktuellen Arbeitsverzeichnis einen Unterordner mit Namen "gtdev" an, in welches der Code vom SVN-Server gespeichert wird.
svn co https://gtdev.svn.sourceforge.net/svnroot/gtdev gtdev
Für Windows:
Ein möglicher SVN-Client für Windows ist TortoiseSVN. Mit diesem kann die aktuellste Version von der Adresse https://gtdev.svn.sourceforge.net/svnroot/gtdev ausgecheckt werden.
Für weitere Erläuterungen im Umgang mit Subversion, siehe dem entsprechenden Eintrag [[SVN]] oder auf der [http://subversion.apache.org/source-code.html Subversion-Homepage]
Das Programm gtdev wurde für die Erstauslegung von Gasturbinen und deren Komponenten entwickelt. Ziel ist es, von intuitiv bzw. konzeptionell zu setzenden Randbedingungen (Grobabmessungen, Schub, T_4 ... ) zu genaueren Informationen über den Kreisprozess und die Aerodynamik der Komponenten zu gelangen.
Da Thermodynamik und Aerodynamik in der ersten Auslegungsphase stark gekoppelt sind, ist es sinnvoll ein Tool wie gtdev zu benutzen. Auf diese Weise sieht man sofort bei der Eingabe Auswirkungen und Grenzen der Parameter auf beide Fachgebiete.
Gtdev soll nicht spezialisierte Auslegungstools wie [[GasTurb]], [[Mittel]] o.Ä. ersetzen, sondern sie sinnvoll ergänzen und eine erste Grobabschätzung über das Gasturbinenkonzept liefern.
gtdev kann auf zwei Weisen benutzt werden: Entweder benutzt man die grafische Benutzeroberfläche (GUI), welche selbsterklärend und intuitiv gestaltet ist, oder man schreibt ein Python-Skript, in dem man die entsprechenden Klassen direkt einbindet und benutzt. Letzteres ist weitaus flexibler und ermöglicht das Skripten von [[Optimierungsalgorithmen]], Berechnungsschleifen oder Veränderung des Berechnungsalgorithmus selbst. Dies erfordert allerdings einige Grundkenntnisse über [[objektorientiertes]] Programmieren mit [[Python]].
[[Datei:gtdevplot.png|600px]]
Das Programm ist komplett in der Programmiersprache [[Python]] geschrieben, was den Vorteil hat, dass es schnell und einfach zu ändern ist und leicht auf jedem System ausgeführt werden kann, auf dem ein Python-Interpreter läuft (sogar auf dem Nokia N900 läuft das Programm ;)). Ferner ist es auch für Programmierneulinge sehr leicht, Python zu lernen, da die Syntax sehr intuitiv ist. Der Nachteil zu C/C++ ist, dass es erst während der Laufzeit kompiliert wird und daher bei großen numerischen Berechnungen deutlich langsamer sein kann.
Gtdev ist so modular aufgebaut, dass die GUI automatisch aus den implementierten Klassen generiert wird. Dadurch können neue Komponenten in das Programm integriert werden, ohne dass man die GUI aufwendig anpassen muss. Dadurch muss jedoch jede Berechnungsklasse im Prinzip gleich aufgebaut sein.
[[Datei:screenshot.jpg|600px]]
Jede Gasturbinenkonfiguration oder Komponente ist in einer speziellen Klasse definiert, in welcher alle Randbedingungs- und Ergebnisparameter initialisiert werden und die thermodynamische und aerodynamische Berechnung durchgeführt wird. Jede dieser Klassen [http://de.wikipedia.org/wiki/Vererbung_%28Programmierung%29 erbt] die Methoden und Eigenschaften der "abstract"-Klasse. Auf diese Weise ist die Architektur jeder Klasse identisch, wodurch die GUI jede Klasse gleich behandeln und somit automatisch einbinden kann.
Die turbofan-Klasse berechnet ein Turbofantriebwerk in der Konfiguration Fan - Radialverdichter - Brennkammer - Hochdruckturbine - Niederdruckturbine - Kalt/Heiß-Schubdüse. Sie initialisiert also Objekte der Subkomponenten aus compressorAxial, compressorRadial, combChamber, turbine und nozzle.
Eingangsparameter sind Schub, Bypassverhältnis und Umgebungszustand, sowie Wirkungsgrade und Druckverluste.
Die Turbofan-Klasse gibt die daraus resultierenden Randbedingungen an die einzelnen Komponenten weiter und verknüpft die einzelnen calcThermo()-Berechnungen,
Da der Schub ein Vorgabeparameter ist, ist der passende Massenstrom vor der Berechnung unbekannt. Daher muss die Kreisprozessrechnung iteriert werden, bis der aus dem Massenstrom resultierende Schub zum Vorgabeschub passt. Dies geschieht über die scipy-Funktion fsolve() welche eine Art von Newton-Raphson-Verfahren durchführt.
Die turbojet-Klasse berechnet ein Turbojettriebwerk in der Konfiguration Radialverdichter - Brennkammer - Hochdruckturbine. Sie initialisiert also Objekte der Subkomponenten aus compressorRadial, combChamber und turbine.
Diese Klasse beschreibt die Auslegung eines Axialverdichters. Eine ausführliche Beschreibung dieser Klasse (Stand: 29.11.2010) wurde in folgendem Paper beschrieben:
Datei: [[Media:axialverdichter.pdf]] Autor: Basti Brehm
Diese Klasse beschreibt einen Radialverdichter.
Diese Klasse beschreibt eine einstufige Axialturbine, bestehend aus einem Stator gefolgt vom Rotor
Diese Klasse beschreibt eine einfache Brennkammer
Diese Klasse beschreibt (momentan noch ausschließlich) die Berechnung einer rein konvergenten Düse.
Flugzeugtriebwerke, Willi G. J. Bräunling, Springerverlag, 2009, (S. 1153 - 1169)
Das aus der Turbine austretende (Ebene 5) Verbrennungsgas strömt durch ein Übergangsstück (Ebene 5 nach Ebene 7) und wird schließlich in der Düse expandiert (Ebene 7 nach Ebene 9).
Der (momentan) implementierten Berechnung liegen folgende Annahmen zu Grunde:
Rein konvergente Düse, d.h. der Endquerschnitt 9 ist zugleich der engste Querschnitt (im Gegensatz zu einer konvergent-divergenten Düse, deren Engstquerschnitt (Ebene 8) nicht mit dem Endquerschnitt (Ebene 9) zusammenfällt).
Ideale Expansion, d.h. es wird auf Umgebungsdruck entspannt (p_9=p_0)
Adiabate Düse, d.h T_{t5}=T_{t7}=T_{t9}
Thermodynamische Konstanten (kappa,c_p) sind über die komplette Düse konstant
Die benötigten Eingabeparameter sind:
Düseneintritt: T_{t5}, p_{t5}
Düsenaustritt: p_{9}=p_{0} (ideale Expansion)
Massenstrom durch die Düse: {m}over{.}
Geometriedaten:r_{h9} (innerer Radius wenn es sich um eine kreisringförmige Düse handeln soll)
*Düseneigenschaften:Pi,eta_n
Die detaillierte Beschreibung der benutzten Formeln und Algorithmen findet sich unter [[Düsenberechnung]]
Die Berechnung über den Schubdüsenwirkungsgrad eta_n={{c_9}^2}/{{c_{9s}}^2} wurde an die Berechnungsweise von Bräunling angelehnt. Dabei ist eta_n eine Art “isentroper Wirkungsgrad vom Totalzustand 9 zum statischen Zustand 9”: eta_n={{c_9}^2}/{{c_{9s}}^2}={h_{t9}-h_9}/{h_{t9}-h_{9s}}={T_{t9}-T_9}/{T_{t9}-T_{9s}}
Vielleicht kann man eta_n über eine CFD-Simulation abschätzen (Düseneintritt: Totaltemperatur und -druck; Düsenaustritt: statischen Druck vorgegeben und dann Totaldruck und statische Temperatur bzw. die sich einstellende Geschwindigkeit am Austritt aus der Simulation verwenden). Eine Alternative wäre, den polytropen Wirkungsgrad vom statischen Zustand nach der Turbine (Ebene 5, da dort die Absolutgeschwindigkeit bekannt ist) zum statischen Zustand am Düsenaustritt (Ebene 9) zu verwenden.
Bei der momentanen Berechungsweise der Düsenradien wird davon ausgegangen, dass die Düse des Heißkreises sowie die Bypassdüse an der gleichen axialen Positionen enden (siehe Radienberechung oben). Für eine genauere Auslegung könnte evtl. der Düsenradius als Funktion der axialen Position festgelegt werden.
Implementierung einer konvergent-divergenten Düse (“Die noch freie” Komponentenvariable 2 kann dann für den Engstquerschnitt (Ebene 8) verwendet werden).