Tutorial Rakete.exe: Die Raketendaten
Eigentlich wollte ich heute was über das zweite Buch über Raumsonden schreiben, das ich letzte Woche in den Druck gegeben habe. Aber obwohl ich inzwischen die Rechnung bekommen habe und auch die Nachricht, dass die drei bestellten Exemplare verschickt sind (für mich und die beiden Korrekturleser), aber offiziell ist es noch nicht erschienen. Daher als Füller wieder ein Blog über mein Programm, der für sich alleine etwas sinnlos erscheint, aber ich habe mir vorgenommen, das Programm nachdem ich seit mindestens 15 Jahren unter Windows (wenn man Vorgängerversionen unter anderen Betriebssystemen hinzunimmt, sogar über 30 Jahre) werkele zu dokumentieren und die Blogs werden dann mal zusammengefasst. Nebenbei gehe ich dazu systematisch alle Dialoge durch und schaue, wo man was verbessern kann. Derzeit bin ich bei den Bahnberechnungen fast durch, es fehlen noch Swing-By und ΔV-Manöver bei Swing-By. Als Folge denke ich wird das Programm für Benutzer auch besser nutzbar. Letztendlich soll aus den Blogs dann die Hilfe entstehen, die es derzeit noch nicht gibt.
Beim heutigen Tutorial geht es um die Raketendaten selbst. Das Programm besteht ja aus zwei weitestgehend unabhängigen Teilen: der Berechnung von Nutzlasten und Bahnen von Raketen und allgemeinen himmelsmechanischen Berechnungen. Die Verknüpfung geht über die nach der Bahnberechnung feststehende Zielgeschwindigkeit.
Es gibt mindestens 250 Subvarianten von Raketen, alleine die USA haben die Hälfte davon gestellt. Andere Nationen sind da sparsamer. Indien kam bisher mit 7 Subversionen aus. Sie alle in eine Datei zu packen wäre unübersichtlich. Wenn ihr das Programmarchiv entpackt, seht ihr eine Menge an .rakdat Dateien. Das wird weniger werden, weil ich für die Aufstiegssimulation viele Raketen rausschmeißen werde. Für Letztere braucht man erheblich mehr Daten, als wie für die einfache Simulation, die ich schon besprochen habe. Daher entfallen viele hypothetische Raketen. Noch sind auch nicht alle Dateien soweit vervollständigt. Daten über Aufstiegssimulationen gibt es bei Atlas, Delta, Titan, Europa, China und teilweise bei Saturn. Schlussendlich will ich nur noch wenige thematisch geordnete Dateien haben. Es wird noch die restlichen US-Träger geben und dann noch Dateien für Indien, Japan, China, Europa, Russland und alle anderen existenten Träger.
Die Dateien sind Textdateien im Windows INI-Format, dass heißt man kann sie in einem Texteditor öffnen. Die Systematik ist recht einfach. Jeder Eintrag hat die Form „Schlüsselname=Wert“. Es gibt am Anfang die Sektion [Basisdaten], die die Anzahl der Raketen enthält. Jede Rakete enthält dann eine Sektion mit dem Namen [Rakete(n)}, wobei n von 1 bis Anzahl geht und die Daten jeder Rakete. Gibt es im Record ein Array, wie z.B. bei den Stufenmassen, so sind die Felder durchnummeriert, wie „leermasse6=1902“.
Wer die Daten selbst parst, sollte darauf vorbereitet sein, dass neue Felder hinzukommen können, dazu noch später mehr. Wenn es jemanden interessiert, dem kann ich auch die Typdeklaration und Lese/Schreibroutinen in Pascal zukommen lassen, das ist relativ einfach auf andere Sprachen übertragbar.
Im Dateimenü kann man die Daten dann bearbeiten. Dazu gehört das Laden und Speichern. Letzteres sollte man nicht vergessen, wenn man z.B. bei der Aufstiegssimulation was verändert hat. Dann kann man das Programm aber auch nicht so einfach beenden, sondern muss eine Rückfrage zum Speichern beantworten.
Unter dem Programmpunkt „Beenden“ findet ihr eine Liste der letzten bearbeiteten Daten und zwei Punkte um die ganze Liste oder nur obsolete Einträge zu löschen obsolete Einträge sind Einträge bei denen die dazugehörige Datei nicht mehr existiert. Wenn ihr auf einen der Einträge klickt, dann könnt ihr ihn öffnen. Beim Programmstart trägt sich Rakete auch als Eigentümer von .rakdat Dateien ein, sodass ihr durch Doppelklick auf eine rakdat Datei das Programm im Explorer mit dieser Datei als Vorgabe starten könnt. Es ist nur immer eine Datei zur Laufzeit aktiv.
Wenn man dann mehrere Dateien hat, kommt oft der Wunsch auf Raketen zwischen ihnen auszutauschen. Dazu gibt es folgende Programmpunkte:
Raketen in eine andere Datei kopieren
Kopiert Raketen in eine neue Datei oder hängt sie an eine existierende Datei an. Die Raketen sind dann in beiden Dateien vorhanden. Es erscheint zuerst ein Auswahlfeld, indem man in einer Checkliste alle Raketen anwählen kann, dann ein Öffnendialog, bei dem ihr die Datei angeben müsst, in dem die Raketen landen (neue oder existierende Datei). Die Raketen werden dann dorthin kopiert. Das Ergebnis seht ihr erst, wenn ihr die Datei öffnet, weil die Operation die aktuell geöffnete Datei nicht verändert.
Raketen aus einer Datei importieren.
Ergänzt die aktuelle Datei um Raketen, die es in einer anderen Datei gibt. Auch hier gibt man zuerst die Datei an aus der man die Raketen importieren will. Sie muss natürlich existieren. In der Auswahlbox sieht man dann alle Träger, die es in dieser Datei gibt, und kann die anwählen, die man hinzufügen will. Danach hat man eine aktualisierte Datei mit mehr Trägern, die man natürlich speichern muss. Die Raketen werden aus der Ursprungsdatei nicht gelöscht.
Die beiden Punkte machen also dasselbe. Der einzige Unterschied ist, dass man einmal die gerade geöffnete Datei bearbeitet und einmal eine Datei, die nicht gerade offen ist.
Raketen in eine andere Datei verschieben.
Bei diesem Punkt sieht es anders aus. Die Vorgehensweise ist die gleiche wie beim Kopieren, nur werden die Raketen dann aus der aktuellen Datei gelöscht, sind dann also nur noch in der zweiten Datei vorhanden.
Raketen löschen
Raketen kann man noch in den beiden Bearbeitungsdialogen löschen, aber hier an zentraler Stelle geht es genauso. Auch hier: in der Checkliste alle Raketen markieren die gelöscht werden sollen (nicht die, die man behalten will) und auf OK clicken.
HTML Ausgabe
Die Daten muss man natürlich auch in leserlicher Form ausgeben können. Im Dateimenü gibt es nur eine Gesamtübersicht mit den wesentlichen Daten. In der Aufstiegssimulation kann man für jede Rakete eine viel ausführlichere Übersicht mit Diagrammen generieren. HTML habe ich genommen, weil ich es so einfach in meine Webseiten und Blogs integrieren kann.
Die Formatierung kann man durch ein im HEAD der HTML-Seite eingebettetes CSS beeinflussen. Bei Einstellungen → CSS Editor kann man das Vorgabe CSS des Programms verändern. Im Prinzip bestehen die Einträge fast nur aus Tabellen, sodass die Tabellentags wie table, th,td und tr wichtig sind. Ihr könnt in dem Editor mit Syntax-Hervorhebung das CSS editieren, von woanders einfügen oder Speichern/laden. Der jeweils letzte Stand des Editors ist die Vorgabe für erzeugte HTML-Seiten, das heißt, wenn ihr nur ein Stylesheet verwendet reicht es dieses zu editieren. Ansonsten muss man das jeweilige CSS laden, bevor man eine HTML-Ausgabe startet. Die gibt es auch bei der Raketenkonstruktion und dem Tabellenexport. Wie ein Eintrag mit dem aktuellen Style aussieht, verrät die Vorschau. Sie öffnet ein Listing der ersten Rakete im Browser.
Damit wäre ich mit dem Besprechen des Datei Menüs durch, nun nun zu something completely same …
Die Aufstiegssimulation reloaded
Wer nun einen Ausflug in die Aufstiegssimulation macht, um z. B. das 15 km Turm Szenario durchzurechnen (nein ich rechne nix mehr durch, ihr habt nun das gleiche Werkzeug wie ich in der Hand) sieht einige kleine Änderungen. Die ganzen Startbedingungen habe ich nun in einen eigenen Dialog Bearbeiten → Starteinstellungen ausgegliedert.
Dort findet ihr auch den Button „Körper“. Der öffnet den Dialog, um den Himmelskörper für die Berechnung zu wählen. Dieser Dialog wird euch noch öfters im Programm begegnen, da das Programm universell ist. In der Aufstiegssimulation, die aber normalerweise nur für die Erde benutzt wird, gibt es aber eine Änderung: Die Auswahl hier ist nur temporär. Das heißt, sobald man eine andere Rakete auswählt oder den Dialog der Aufstiegssimulation zumacht, wird wieder die Erde als Vorgabe gesetzt.
Damit kann man nun auch Aufstiegsbahnen von allen acht Planeten und rund 80 Monden des Sonnensystems simulieren. Für vier Körper: Erde, Venus, Mars und Titan gibt es auch eine Modellatmosphäre (ich habe für die Riesenplaneten auf eine Atmosphäre verzichtet, da diese keine feste Referenzoberfläche haben). Sie ist immer einfach modelliert und gehorcht dem hydrostatischen Gleichgewicht, das heißt, die Dichte nimmt mit einer festen Skalenhöhe um den Faktor e (2,71…) ab. Bei der Erde beträgt die Skalenhähe 8,4 km. Die Dichte wird jeweils auf die mittlere Oberfläche bezogen.
Um zu testen ob das funktioniert, habe ich zuerst die Apollo Aufstiegsstufe modelliert. Die Daten habe ich dem Apollo 11 Presskit genommen. Wie im Presskit komme ich auf eine Brennschlusshöhe von nur 20 km. Das liegt an der extrem geringen Beschleunigung von rund 1 m/s. Bei einem 20 x 100 km Transferorbit bleibt eine Restmasse von 270 kg unverbrauchtem Treibstoff, das entspricht in etwa einer Zusatzmasse von derselben Größe (Astronauten, Ausrüstung, Bodenproben).
Das Nächste war die Frage, welches dV eine Marsbodenprobenentnahme hat. Zwei Stufen mit 4 / 0,4 und 2 / 1 t Masse und spezifischem Impuls von jeweils 3200 m/s können 450 kg in eine 140 x 500 km elliptische Umlaufbahn befördern. Die zwei Stufen sind nötig, weil ich relativ schnell starte (mit 10 m/s, davon bleiben noch 5,8 m/s netto übrig, wenn man die Gravitation abzieht) und man sonst nicht auf die richtige Höhe kommt, daher habe ich eine zweite Stufe mit geringerem Schub (2,5 m/s Beschleunigung) modelliert um die Höhe zu erreichen. Der Luftwiderstand ist mit 27 m/s etwa um den Faktor 4-8 kleiner als bei einer irdischen Rakete. Die Aufstiegsverluste betragen hier nur 400 m/s, sodass man auch langsamer starten könnte, mit nur einer Stufe.
Ganz interessant war es bei Titan. Titan ist eine Herausforderung. Die Atmosphäre ist am Boden dreimal dichter als auf der Erde. Vor allem aber hat er eine Skalenhöhe von 21 km. Das bedeutet: Wenn wir annehmen, dass die Atmosphäre auf der Erde in 120 km Höhe keine Rolle mehr spielt, dann würde man dasselbe Dichtenvieau (wichtig für den Luftwiderstand) auf Titan erst in 335 km Höhe erreichen, denselben Drcuk sogar erst in 357 km Höhe (ist unterschiedlich, weil die Temperatur unterschiedlich ist). Huygens hing in 155 km Höhe schon am Fallschirm. Die Atmosphäre erstreckt sich bis in 950 km Höhe – zumindest Cassini musste diesen Abstand einhalten bei den Vorbeiflügen. Ich nahm dieselbe Aufstiegsstufe wie bei Mars und musste mehrfach optimieren so die zweite Stufe im Gewicht reduzieren und den spezifischen Impuls auf 3400 / 3500 m/s erhöhen, damit ich schließlich einen 1000 x 1200 km Orbit erreichte. Mit Ach und Krach gelangen 200 kg in einen Orbit, weniger als beim Mars, obwohl die Orbitalgeschwindigkeit viel kleiner ist. Die Aufstiegsverluste sind enorm. Die addierten Luftwiderstandsverluste laufen auf über 8000 m/s auf, doch die Zahl ist etwas irreführend, weil sie aus einer Energie berechnet wurde. Macht man eine Rechnung nach der Ziolkowskigleichung, so sind es immerhin noch 3,6 km/s Verluste durch Gravitation und vor allem Luftwiderstand – die zu erreichende Orbitalgeschwindigkeit beträgt nur 2,13 km/s. Beim Mars mit 3,4 km Orbitalgeschwindigkeit sind es nur 0,4 km/s.
Wenn ihr anfangt, mit dem Punkt zu spielen so müsst ihr noch eins beachten: Ich habe die Simulation nur leicht angepasst. Nach wie vor sind die Einträge für Bodenschub und Vakuumschub auf das Bodenniveau bezogen, nicht das 1-bar-Niveau. Das bedeutet: Beim Mars (Start bei 6-10 mb Bodendruck, entsprechend einem Druck in 30 km Höhe) sind die Werte für Boden- und Vakuumschub fast gleich hoch. Bei Titan müsste man den Bodenwert stark absenken, denn hier beträgt der Außendruck 14,67 bar. Doch das muss man nun individuell mit FCEA berechnen. Ebenso habe ich deswegen keinen Aufstieg von der Venus modelliert: bei 92 Bar Außendruck ist der Außendruck höher als bei den meisten Raketentriebwerken in der Brennkammer, zudem ist die Atmosphäre um den Faktor 25 dichter als bei Titan, man würde nie einen Orbit erreichen.
Nun nochmals zurück zur Apollo-Aufstiegsstufe. Mich interessiert natürlich für eine zukünftige Mission, ob man hier nicht was optimieren kann. Die Startbeschleunigung ist ja klein. Ich habe das Triebwerk mal einfach durch ein (schon damals existierendes) AJ-10 ausgetauscht, das mit 36 kN den doppelten Schub hat. Die Startbeschleunigung ist dann immer noch unter einem G. Bei unverändertem spezifischen Impuls (das AJ.10 hätte einen etwas besseren Impuls) erhält man nur 90 kg Nutzlast trotz stark reduzierter Brennzeit. Woran liegts? Nun an den Nebenbedingungen der Simulation. Ausgerichtet auf die Simulation auf der Erde erlaube maximal eine drehung um 1,2 Grad/s. Um von 90 auf 0 Grad zu kommen, braucht man so schon 75 s, das ist bei 200 s Gesamtbrennzeit eine lange Zeit in der viel Energie in die Höhenarbeit gesteckt wird, die dann bei der horizontalen Beschleunigung fällt. Lässt man diese Einschränkung weg, so kommt man auf 187 kg Nutzlast, aber immer noch weniger als bei der originalen Aufstiegsstufe.