Orbit-Matrix — welche Rakete erreicht welchen Orbit von welcher Rampe

Die dritte Seite des Trios: Startplätze liefert das Wo, Trägerraketen das Womit — hier werden beide gegen die Zielbahn gerechnet. Die Frage lautet: welche Kombination aus Rampe, Träger und Zielorbit geht, und was kostet sie?

Wie auf den beiden anderen Seiten gilt: alle Zahlen sind gerechnet, das Programm in Abschnitt 5 erzeugt sie aus std.astro.launch und std.astro.orbit.

Bahntypen · Startplätze · Trägerraketen · std.astro.launch · std.astro.orbit


1. Zwei Fragen, nicht eine

„Kann Rakete X von Rampe Y in Orbit Z„ zerfällt in zwei getrennte Prüfungen, und nur die erste hat eine harte Antwort:

  1. Geometrie. Eine Bahn mit einer Neigung kleiner als die Breite des Startplatzes ist vom Start weg nicht erreichbar — die Bahnebene muss den Startpunkt enthalten. AInclinationReachable beantwortet das mit ja oder nein, unabhängig von jeder Rakete. Wer die Bahn trotzdem will, muss die Ebene nachträglich drehen, und das ist teuer.
  2. Energie. Was die Bahn an Geschwindigkeitsbedarf kostet, gegen das, was der Träger liefern kann. Hier gibt es kein Ja/Nein, sondern eine Nutzlastkurve.

Die vier Zielbahnen dieser Seite:

Kürzel Bahn Wofür Quelle
LEO 28.5 400 km Kreisbahn, 28.5° Neigung klassische niedrige Bahn, Referenzfall der Herstellerangaben
ISS 51.6 400 km Kreisbahn, 51.6° Versorgung der Raumstation
Tiangong 387 km Kreisbahn, 41.47° chinesische Raumstation, Shenzhou und Tianzhou Umlaufzeit 92.3 min
Hubble 510 km Kreisbahn, 28.4687° Wartungs- und Anflugbahn des Weltraumteleskops Q2513
SSO 97.5 700 km Kreisbahn, 97.5° rückläufig Erdbeobachtung, sonnensynchron Rundwert, siehe unten
GEO 35 786 km Kreisbahn, 0° Kommunikation, geostationär

Die beiden neuen Ziele sind über verschiedene Größen belegt, und die Bibliothek rechnet die jeweils andere daraus:

  • Tiangong ist über die Umlaufzeit dokumentiert (92.3 min). ASemiMajorFromPeriod macht daraus eine Bahnhöhe von 387.3 km.
  • Hubble ist über die Höhe dokumentiert (510.2 km, Wikidata Q2513). APeriod macht daraus 94.83 min — Wikidata gibt 94.87 min an. Die Abweichung von 0.04 Minuten ist die Gegenprobe auf beide Rechnungen.
 
Die 97.5° für die SSO-Spalte sind gerundet. ASunSyncInclination liefert für 700 km Bahnhöhe 98.188° (Bahntypen). Für den Energiebedarf, den diese Seite rechnet, macht die Differenz wenige m/s aus; für eine Missionsauslegung wäre sie erheblich.

2. Der Geschwindigkeitsbedarf je Rampe

Ab Boden, mit 1500 m/s Aufstiegsverlusten. GEO über eine Hohmann-Bahn aus dem 400-km-Parkorbit mit anschließendem Ebenenwechsel im Apogäum:

Rampe Breite LEO 28.5 ISS 51.6 Tiangong Hubble SSO 97.5 GEO
Kourou 5.2° 8991 9111 9044 9053 9625 13070
Sriharikota 13.72° 8991 9111 9044 9053 9625 13536
Wenchang 19.61° 8991 9111 9044 9053 9625 13863
Starbase 26.00° 8991 9111 9044 9053 9625 14219
Xichang 28.25° 8991 9111 9044 9053 9625 14345
SLC-40 28.56° (9000) 9111 9044 (9065) 9625 14362
LC-39A 28.61° (9006) 9111 9044 (9072) 9625 14365
Tanegashima 30.40° (9253) 9111 9044 (9317) 9625 14465
Uchinoura 31.25° (9371) 9111 9044 (9433) 9625 14513
SLC-4E 34.63° (9838) 9111 9044 (9897) 9625 14702
Taiyuan 38.85° (10421) 9111 9044 (10476) 9625 14937
Jiuquan 40.97° (10714) 9111 9044 (10766) 9625 15055
Baikonur 45.60° (11355) 9111 (9621) (11402) 9625 15311
Wostotschny 51.88° (12221) (9151) (10499) (12262) 9625 15657
Plessezk 62.92° (13726) (10700) (12037) (13755) 9625 16251
Andøya 69.29° (14581) (11594) (12919) (14603) 9625 16585

Werte in Klammern: die Zielneigung liegt unter der Startbreite — geometrisch nicht direkt erreichbar. Die Zahl enthält den nachträglichen Ebenenwechsel als Näherung und ist als Preisschild für einen Umweg zu lesen, nicht als Flugplan.

Werte in Klammern: die Zielneigung liegt unter der Startbreite — geometrisch nicht direkt erreichbar. Der Aufstieg geht dann auf die kleinste erreichbare Neigung, und AAzimuthPenalty schlägt den nachträglichen Ebenenwechsel auf. Diese Zahlen sind ein Preisschild für einen Umweg, kein Flugplan.

Das Auffällige an dieser Tabelle sind die Spalten ohne Streuung:

  • Wo eine Bahn erreichbar ist, kostet sie überall gleich viel. Für die ISS-Bahn stehen in jeder Zeile 9111 m/s, für Tiangong 9044, für die SSO 9625 — von Kourou bis Andøya. Das ist kein Rechenfehler, sondern folgt aus der Geometrie: der Drehgewinn beim Direktaufstieg ist ω·R·cos(i) und hängt damit nur an der Zielneigung, nicht an der Startbreite. Wer geradewegs in die Zielebene steigt, nimmt denselben Anteil der Erddrehung mit, egal wo er startet.
  • Die Startbreite entscheidet über das Ob, nicht über das Wieviel. Ihr ganzer Einfluss steckt in den Klammern: eine Bahn unterhalb der eigenen Breite kostet extra, und zwar schnell mehr als der Rest des Aufstiegs. Von Andøya kostet eine 28.5-Grad-Bahn 14 581 m/s gegenüber 8991 direkt — die Differenz ist der Ebenenwechsel.
  • Die GEO-Spalte ist die einzige, die durchgehend streut, von 13 070 (Kourou) bis 16 585 m/s (Andøya). Dort muss die Bahn am Ende auf 0 Grad, und dieser Ebenenwechsel wächst mit der Startbreite. Der Ebenenwechsel von 28.5° im GEO kostet 1513.7 m/s; bei 69° wird er erdrückend. Kourou ist nicht zufällig der GEO-Startplatz Europas.
  • Die SSO ist teurer als jede prograde Bahn (9625 gegen 8991 m/s), weil der Drehgewinn bei 97.5° negativ wird: ARotationGainForInclination liefert dort −60.7 m/s. Die Erddrehung arbeitet gegen die Rakete.

3. Die Matrix: Nutzlast je Träger und Ziel

Jeder Träger startet von seiner tatsächlichen Rampe. Die veröffentlichte LEO-Nutzlast gilt als Referenzpunkt bei der Bahn mit der kleinsten von dort erreichbaren Neigung; für jede andere Bahn wird der Mehrbedarf über die Raketengleichung auf die Nutzlast umgelegt — mit der Austrittsgeschwindigkeit der jeweiligen Oberstufe.

Träger @ Rampe Oberstufe (Isp) LEO 28.5 ISS 51.6 Tiangong Hubble SSO 97.5 GEO
Spectrum @ Andøya ~320 s 0.2 t 0.5 t 0.3 t 0.2 t 0.9 t 0.10 t
Falcon 9 @ SLC-40 Merlin Vacuum, 348 s 22.7 t 22.0 t 22.5 t 22.3 t 18.9 t 4.73 t
Ariane 64 @ Kourou Vinci, 457 s 21.3 t 20.8 t 21.1 t 21.0 t 18.5 t 8.59 t
Angara A5 @ Wostotschny RD-0124A, 359 s 10.1 t 24.2 t 16.5 t 10.0 t 21.2 t 3.82 t
Long March 5B @ Wenchang YF-75D, 442 s 24.8 t 24.2 t 24.5 t 24.5 t 21.5 t 8.07 t

Was die Matrix zeigt:

  • Angara verliert die LEO-28.5-Spalte, nicht wegen der Rakete. 24.5 t Auslegungsnutzlast, aber von Wostotschny (51.88° N) bleiben rechnerisch 10.1 t für eine 28.5-Grad-Bahn übrig. Die Rakete ist nicht schwächer geworden — der Startplatz erlaubt die Bahn nicht direkt. Dasselbe System auf 51.6° liefert 24.2 t.
  • Ariane 64 und Long March 5 führen bei GEO (8.59 und 8.07 t) und Falcon 9 fällt auf 4.73 t zurück. Der Grund steht in der zweiten Spalte: Vinci und YF-75D sind Wasserstoff-Oberstufen mit 457 bzw. 442 s, Merlin Vacuum liegt bei 348 s. Bei einer Bahn, die 5400 m/s über der Referenz liegt, entscheidet der Isp der Oberstufe, nicht der Startschub.
  • Tiangong und Hubble zeigen die Rampenlogik im Kleinen. Die Station fliegt bei 41.47°, und Jiuquan liegt bei 40.97° — 0.5 Grad darunter. Von dort ist sie direkt erreichbar (9042 m/s), von Baikonur mit 45.6° nicht mehr. Dass die Shenzhou-Starts in Jiuquan stattfinden, steht damit in der Tabelle. Hubble umgekehrt: 28.4687° liegt knapp unter der Breite von SLC-40 und LC-39A, das Modell setzt beide Spalten in Klammern — real ist Hubble genau von dort gestartet. Die Bahnneigung wurde beim Aufstieg um wenige Hundertstel Grad unter die Rampenbreite gedrückt, was die Näherung dieser Seite nicht abbildet. Ein sauberes Beispiel dafür, wo ein Modell an seiner Auflösung endet.
  • Spectrum ist auf seiner Bahn konkurrenzfähig und sonst nicht. 0.9 t im SSO gegen 0.2 t im LEO 28.5 — der Microlauncher an einem Polarstartplatz ist genau für die eine Spalte gebaut. Die anderen drei sind für ihn keine Zielbahnen, sondern Rechenbeispiele.
 
Diese Nutzlastzahlen sind ein Modell, keine Herstellerangaben. Sie entstehen aus einer einzigen veröffentlichten Referenznutzlast, die über die Raketengleichung auf andere Bahnen verschoben wird. Nicht enthalten: Verkleidungsgrenzen, Struktur- und Bergungsreserven, reale Stufungspunkte, Startfenster, Sicherheitskorridore, Drosselung. Die Spalten sind untereinander vergleichbar; gegen ein Datenblatt sind sie es nicht.

Probe: Für Ariane 64 liefert das Modell 8.59 t GEO gegenüber 11.5 t GTO im Datenblatt — GEO liegt hinter GTO, die Größenordnung passt also. Für Falcon 9 stehen 4.73 t GEO gegen 8.3 t GTO. Wo das Modell danebenliegt, liegt es zu niedrig.

4. Die kurze Antwort

Ziel geht von Kosten ab Boden was den Ausschlag gibt
LEO 28.5 jeder Rampe bis 28.5° Breite 8991 m/s darüber nur mit Ebenenwechsel
ISS 51.6 jeder Rampe bis 51.6° 9111 m/s Plessezk und Andøya fallen heraus
Tiangong 41.47 jeder Rampe bis 41.47° 9044 m/s Jiuquan liegt 0.5 Grad darunter — deshalb starten die Shenzhou-Flüge dort
Hubble 28.47 jeder Rampe bis 28.47° 9053 m/s Cape liegt knapp darüber; siehe unten
SSO 97.5 jeder Rampe 9625 m/s rückläufig, deshalb überall gleich und überall teurer
GEO am besten Kourou 13 070…16 585 m/s die einzige Zielbahn, bei der die Startbreite den Preis bestimmt

Die Rampenwahl ist eine Ja/Nein-Frage, keine Preisfrage — mit einer Ausnahme. Für jede Bahn, deren Neigung über der Startbreite liegt, kostet der Aufstieg überall dasselbe. Erst beim GEO, wo am Ende auf 0 Grad gedreht wird, zahlt sich eine äquatornahe Rampe in Geschwindigkeit aus.

Und die Kombinationen, die nicht gehen: 28.5-Grad-Bahnen von Wostotschny, Plessezk oder Andøya; die ISS-Bahn von Plessezk oder Andøya; die Tiangong-Bahn von Baikonur aufwärts; die Hubble-Bahn von allem oberhalb von Xichang. Nicht „teuer“, sondern von der Geometrie ausgeschlossen — der Startpunkt liegt außerhalb der Bahnebene.

5. Die Programme

Teil A — der dv-Bedarf aus Abschnitt 2:

unit main;
import std.astro.launch;
import std.astro.orbit;
import std.math;
import std.io;
import std.string;

fn Grad(g: f64): f64 { return g * Pi() / 180.0; }
fn f(v: f64, d: int64): pchar { return FloatToStr(v, d); }

// dv ab Boden bis Kreisbahn. retro = true dreht den Drehgewinn um.
// Aufstieg auf die Zielhoehe ueber eine 200-km-Parkbahn (ADvAscentToOrbit),
// Drehgewinn aus der ZIELNEIGUNG (ARotationGainForInclination).
fn dvBoden(breiteGrad: f64, hoehe: f64, zielGrad: f64): f64 {
    var breite: f64 := Grad(breiteGrad);
    var ziel:   f64 := Grad(zielGrad);
    var rPark:  f64 := ARadiusEarth() + 200000.0;
    var r:      f64 := ARadiusEarth() + hoehe;
    // Liegt die Zielneigung unter der Startbreite, ist sie direkt nicht
    // erreichbar: dann rechnet der Aufstieg auf die kleinste erreichbare
    // Neigung, und AAzimuthPenalty schlaegt den Ebenenwechsel auf.
    var iAuf:   f64 := ziel;
    if !AInclinationReachable(breite, ziel) { iAuf := breite; }
    var gewinn: f64 := ARotationGainForInclination(AEarthRotation(), ARadiusEarth(), breite, iAuf);
    var dv:     f64 := ADvAscentToOrbit(AMuEarth(), rPark, r, 1500.0, gewinn);
    var strafe: f64 := AAzimuthPenalty(ACircularSpeed(AMuEarth(), r), breite, ziel);
    return dv + strafe;
}

fn spalte(breite: f64, zielGrad: f64, hoehe: f64): void {
    Print(" | ");
    if AInclinationReachable(Grad(breite), Grad(zielGrad)) {
        Print(f(dvBoden(breite, hoehe, zielGrad), 0));
    } else {
        Print(StrConcat("(", StrConcat(f(dvBoden(breite, hoehe, zielGrad), 0), ")")));
    }
}

// Hoehe aus der Umlaufzeit: Tiangong ist ueber die Periode belegt, nicht ueber die Hoehe
fn hoeheAusPeriode(minuten: f64): f64 {
    return ASemiMajorFromPeriod(AMuEarth(), minuten * 60.0) - ARadiusEarth();
}

fn zeile(name: pchar, breite: f64): void {
    var rLeo:   f64 := ARadiusEarth() + 400000.0;
    var rGeo:   f64 := 42164000.0;
    var leoMin: f64 := dvBoden(breite, 400000.0, breite);
    var hoh:    f64 := AHohmannDv(AMuEarth(), rLeo, rGeo);
    var plane:  f64 := APlaneChangeDv(ACircularSpeed(AMuEarth(), rGeo), Grad(breite));
    Print(name);
    spalte(breite, 28.5, 400000.0);   // LEO 400 km, 28.5 Grad
    spalte(breite, 51.6, 400000.0);   // ISS
    spalte(breite, 41.47, hoeheAusPeriode(92.3));  // Tiangong
    spalte(breite, 28.4687, 510200.0);             // Hubble
    spalte(breite, 97.5, 700000.0);    // SSO 700 km, rueckl.
    Print(" | "); PrintLn(f(leoMin + hoh + plane, 0));
}

fn main(): int64 {
    PrintLn("Rampe         | LEO 28.5 | ISS 51.6 | Tiangong | Hubble | SSO 97.5 | GEO   (m/s ab Boden)");
    zeile("Kourou        ",  5.2);
    zeile("Sriharikota   ", 13.7172);
    zeile("Wenchang      ", 19.6145);
    zeile("Starbase      ", 25.997);
    zeile("Xichang       ", 28.2456);
    zeile("SLC-40        ", 28.5619);
    zeile("LC-39A        ", 28.6083);
    zeile("Tanegashima   ", 30.4);
    zeile("Uchinoura     ", 31.2519);
    zeile("SLC-4E        ", 34.633);
    zeile("Taiyuan       ", 38.8491);
    zeile("Jiuquan       ", 40.9675);
    zeile("Baikonur      ", 45.6);
    zeile("Wostotschny   ", 51.8846);
    zeile("Plessezk      ", 62.9167);
    zeile("Andoya        ", 69.294167);
    PrintLn("");
    PrintLn("() = Inklination kleiner als Startbreite: nicht direkt erreichbar,");
    PrintLn("     Wert enthaelt den Ebenenwechsel als Naeherung.");
    PrintLn(StrConcat("Tiangong-Hoehe aus 92.3 min Periode: ", StrConcat(f(hoeheAusPeriode(92.3) / 1000.0, 1), " km")));
    PrintLn(StrConcat("Hubble-Periode aus 510.2 km Hoehe:  ", StrConcat(f(APeriod(AMuEarth(), ARadiusEarth() + 510200.0) / 60.0, 2), " min")));
    PrintLn(StrConcat("Hohmann LEO(400 km) -> GEO: ", f(AHohmannDv(AMuEarth(), ARadiusEarth()+400000.0, 42164000.0), 1)));
    PrintLn(StrConcat("Ebenenwechsel 28.5 Grad im GEO: ", f(APlaneChangeDv(ACircularSpeed(AMuEarth(), 42164000.0), Grad(28.5)), 1)));
    return 0;
}

Ausgabe:

Rampe         | LEO 28.5 | ISS 51.6 | Tiangong | Hubble | SSO 97.5 | GEO   (m/s ab Boden)
Kourou         | 8991 | 9111 | 9044 | 9053 | 9625 | 13070
Sriharikota    | 8991 | 9111 | 9044 | 9053 | 9625 | 13536
Wenchang       | 8991 | 9111 | 9044 | 9053 | 9625 | 13863
Starbase       | 8991 | 9111 | 9044 | 9053 | 9625 | 14219
Xichang        | 8991 | 9111 | 9044 | 9053 | 9625 | 14345
SLC-40         | (9000) | 9111 | 9044 | (9065) | 9625 | 14362
LC-39A         | (9006) | 9111 | 9044 | (9072) | 9625 | 14365
Tanegashima    | (9253) | 9111 | 9044 | (9317) | 9625 | 14465
Uchinoura      | (9371) | 9111 | 9044 | (9433) | 9625 | 14513
SLC-4E         | (9838) | 9111 | 9044 | (9897) | 9625 | 14702
Taiyuan        | (10421) | 9111 | 9044 | (10476) | 9625 | 14937
Jiuquan        | (10714) | 9111 | 9044 | (10766) | 9625 | 15055
Baikonur       | (11355) | 9111 | (9621) | (11402) | 9625 | 15311
Wostotschny    | (12221) | (9151) | (10499) | (12262) | 9625 | 15657
Plessezk       | (13726) | (10700) | (12037) | (13755) | 9625 | 16251
Andoya         | (14581) | (11594) | (12919) | (14603) | 9625 | 16585

() = Inklination kleiner als Startbreite: nicht direkt erreichbar,
     Wert enthaelt den Ebenenwechsel als Naeherung.
Tiangong-Hoehe aus 92.3 min Periode: 387.3 km
Hubble-Periode aus 510.2 km Hoehe:  94.83 min
Hohmann LEO(400 km) -> GEO: 3854.0
Ebenenwechsel 28.5 Grad im GEO: 1513.7

Teil B — die Nutzlastmatrix aus Abschnitt 3:

unit main;
import std.astro.launch;
import std.astro.orbit;
import std.math;
import std.io;
import std.string;

fn Grad(g: f64): f64 { return g * Pi() / 180.0; }
fn f(v: f64, d: int64): pchar { return FloatToStr(v, d); }

// Aufstieg auf die Zielhoehe ueber eine 200-km-Parkbahn (ADvAscentToOrbit),
// Drehgewinn aus der ZIELNEIGUNG (ARotationGainForInclination).
fn dvBoden(breiteGrad: f64, hoehe: f64, zielGrad: f64): f64 {
    var breite: f64 := Grad(breiteGrad);
    var ziel:   f64 := Grad(zielGrad);
    var rPark:  f64 := ARadiusEarth() + 200000.0;
    var r:      f64 := ARadiusEarth() + hoehe;
    // Liegt die Zielneigung unter der Startbreite, ist sie direkt nicht
    // erreichbar: dann rechnet der Aufstieg auf die kleinste erreichbare
    // Neigung, und AAzimuthPenalty schlaegt den Ebenenwechsel auf.
    var iAuf:   f64 := ziel;
    if !AInclinationReachable(breite, ziel) { iAuf := breite; }
    var gewinn: f64 := ARotationGainForInclination(AEarthRotation(), ARadiusEarth(), breite, iAuf);
    return ADvAscentToOrbit(AMuEarth(), rPark, r, 1500.0, gewinn)
         + AAzimuthPenalty(ACircularSpeed(AMuEarth(), r), breite, ziel);
}

fn dvGeo(breiteGrad: f64): f64 {
    return dvBoden(breiteGrad, 400000.0, breiteGrad)
         + AHohmannDv(AMuEarth(), ARadiusEarth() + 400000.0, 42164000.0)
         + APlaneChangeDv(ACircularSpeed(AMuEarth(), 42164000.0), Grad(breiteGrad));
}

// Nutzlast bei Mehrbedarf: Tsiolkovsky rueckwaerts auf die Nutzlast angewandt
fn nutzlast(mRefT: f64, dvRef: f64, dvZiel: f64, ispOben: f64): f64 {
    return mRefT * ExpF64(0.0 - (dvZiel - dvRef) / AExhaustSpeed(ispOben));
}

// Hoehe aus der Umlaufzeit
fn hoeheAusPeriode(minuten: f64): f64 {
    return ASemiMajorFromPeriod(AMuEarth(), minuten * 60.0) - ARadiusEarth();
}

fn rakete(name: pchar, breite: f64, mRefT: f64, ispOben: f64): void {
    var dvRef: f64 := dvBoden(breite, 400000.0, breite);
    Print(name);
    Print(" | ");  Print(f(nutzlast(mRefT, dvRef, dvBoden(breite, 400000.0, 28.5), ispOben), 1));
    Print(" | ");  Print(f(nutzlast(mRefT, dvRef, dvBoden(breite, 400000.0, 51.6), ispOben), 1));
    Print(" | ");  Print(f(nutzlast(mRefT, dvRef, dvBoden(breite, hoeheAusPeriode(92.3), 41.47), ispOben), 1));
    Print(" | ");  Print(f(nutzlast(mRefT, dvRef, dvBoden(breite, 510200.0, 28.4687), ispOben), 1));
    Print(" | ");  Print(f(nutzlast(mRefT, dvRef, dvBoden(breite, 700000.0, 97.5),  ispOben), 1));
    Print(" | ");  PrintLn(f(nutzlast(mRefT, dvRef, dvGeo(breite), ispOben), 2));
}

fn main(): int64 {
    PrintLn("Rakete/Rampe            | LEO 28.5 | ISS 51.6 | Tiangong | Hubble | SSO 97.5 |  GEO   (t)");
    rakete("Spectrum @ Andoya       ", 69.294167,  1.0, 320.0);
    rakete("Falcon 9 @ SLC-40       ", 28.5619,   22.8, 348.0);
    rakete("Ariane 64 @ Kourou      ",  5.2,      21.6, 457.0);
    rakete("Angara A5 @ Wostotschny ", 51.8846,   24.5, 359.0);
    rakete("Long March 5B @ Wenchang", 19.6145,   25.0, 442.0);
    PrintLn("");
    PrintLn(StrConcat("Referenz-dv Falcon 9 (i = Rampenbreite): ", f(dvBoden(28.5619, 400000.0, 28.5619), 0)));
    PrintLn(StrConcat("Austrittsgeschwindigkeit Merlin Vacuum:  ", f(AExhaustSpeed(348.0), 0)));
    return 0;
}

Ausgabe:

Rakete/Rampe            | LEO 28.5 | ISS 51.6 | Tiangong | Hubble | SSO 97.5 |  GEO   (t)
Spectrum @ Andoya        | 0.2 | 0.5 | 0.3 | 0.2 | 0.9 | 0.10
Falcon 9 @ SLC-40        | 22.7 | 22.0 | 22.5 | 22.3 | 18.9 | 4.73
Ariane 64 @ Kourou       | 21.3 | 20.8 | 21.1 | 21.0 | 18.5 | 8.59
Angara A5 @ Wostotschny  | 10.1 | 24.2 | 16.5 | 10.0 | 21.2 | 3.82
Long March 5B @ Wenchang | 24.8 | 24.2 | 24.5 | 24.5 | 21.5 | 8.07

Referenz-dv Falcon 9 (i = Rampenbreite): 8991
Austrittsgeschwindigkeit Merlin Vacuum:  3413

6. Was diese Seite über die Bibliothek verrät

Diese Seite hat drei Lücken in std.astro.launch aufgedeckt. Alle drei sind inzwischen geschlossen, und das Programm oben rechnet mit den neuen Funktionen statt mit Handkorrekturen:

  • Der Drehgewinn folgte dem Azimut, nicht der Zielneigung (#1987). Für eine rückläufige Bahn wurde der volle Ostanteil gutgeschrieben, obwohl die Rakete nach Westen fliegt — eine SSO kam damit billiger heraus als eine prograde Bahn. Neu ist ARotationGainForInclination(omega, R, breite, inklination), das den Azimut selbst ableitet und bei 97.5° die richtigen −60.7 m/s liefert. Die Funktion meldet außerdem einen Fehlerwert, wenn die Neigung unter der Startbreite liegt — deshalb prüft das Programm vorher mit AInclinationReachable.
  • ADvAscent trug die Zielhöhe nicht (#1989). Der Wert folgte der Kreisbahngeschwindigkeit, die mit der Höhe sinkt — eine 700-km-Bahn erschien billiger als eine 400-km-Bahn. Aufgefallen ist das erst mit der Hubble-Spalte, weil vorher alle Ziele auf derselben Höhe lagen. Neu ist ADvAscentToOrbit(mu, rPark, rTarget, verluste, drehgewinn): Einschuss in eine Parkbahn, dann Hohmann-Transfer hinauf. 400 km kosten damit 8991 m/s, 510 km 9053 und 700 km 9156 — höher ist teurer.
  • Kein J2 (#1988). Betrifft diese Seite nur am Rand, dafür die Seite Bahntypen umso mehr.

Was weiterhin Anwenderlogik bleibt: die Nutzlastumrechnung. nutzlast() im Programm ist vier Zeilen Raketengleichung, die jede solche Auswertung neu schreiben muss.