std.astro.entry — Atmosphäreneintritt

import std.astro.entry;

Ballistischer Eintritt nach Allen-Eggers, Wärmestrom nach Sutton-Graves und der Eintrittskorridor. Vier Himmelskörper sind als Parametersatz hinterlegt; ein anderer Planet ist ein anderer Satz Zahlen, keine andere Funktion.

std.astro (Übersicht) · std.astro.insertion · std.astro.state


1. Atmosphäre

pub type AAtmos = struct {
  rho0:   f64;   // Dichte an der Bezugshoehe [kg/m^3]
  H:      f64;   // Skalenhoehe [m]
  hRef:   f64;   // Bezugshoehe ueber dem Radius [m]
  hLimit: f64;   // Eintrittsgrenze: ab hier zaehlt die Atmosphaere [m]
  kHeat:  f64;   // Sutton-Graves-Beiwert [SI], gasabhaengig
}

Funktion rho0 H Eintrittsgrenze k
AAtmosEarth() 1.225 7200 m 122 km 1.7415e−4 (Luft)
AAtmosMars() 0.020 11100 m 125 km 1.8980e−4 (CO₂)
AAtmosVenus() 65.0 15900 m 250 km 1.8980e−4
AAtmosTitan() 5.4 40000 m 1270 km 1.8980e−4

AAtmosNew(rho0, H, hRef, hLimit, kHeat) baut einen eigenen Satz.

Funktion Rückgabe Bedeutung
ADensity(at, h) f64 [kg/m³] barometrisch: rho0·e^(−(h−hRef)/H)
ABallisticCoeff(mass, cd, flaeche) f64 [kg/m²] β = m/(C_D·A)

Groß heißt schwer und schlank: dringt tief ein, wird spät und hart gebremst. Klein heißt leicht und breit: bremst hoch und sanft — der Grund, warum Marslander so groß und leicht gebaut sind.

2. Allen-Eggers: der ballistische Eintritt

gamma ist überall der Bahnwinkel gegen die Horizontale, positiv nach unten [rad].

Funktion Rückgabe Bedeutung
APeakDecel(at, vE, gamma) f64 [m/s²] v_E²·sin γ / (2·e·H)
APeakDecelG(at, vE, gamma) f64 dieselbe Größe in Vielfachen von 9.80665 — so steht sie in jeder Belastungsgrenze
APeakAltitude(at, beta, gamma) f64 [m] hRef + H·ln(rho0·H/(β·sin γ))
APeakSpeed(vE) f64 [m/s] immer v_E/√e61 % des Eintrittstempos
 
Der ballistische Koeffizient kommt in der Spitzenverzögerung nicht vor. Wie schwer oder wie breit der Körper ist, ändert nur die Höhe, in der die Spitze auftritt — nicht ihre Größe. Nur Tempo, Winkel und Skalenhöhe entscheiden. In APeakAltitude steht β dann sehr wohl.

3. Wärmestrom (Sutton-Graves)

Funktion Rückgabe Bedeutung
AHeatFlux(at, rho, v, rNose) f64 [W/m²] k·√(rho/R_n)·v³ am Staupunkt
APeakHeatFlux(at, beta, vE, gamma, rNose) f64 [W/m²] in der Spitze eines ballistischen Eintritts

Die dritte Potenz ist die ganze Aussage: doppeltes Tempo heißt achtfacher Wärmestrom. Die Rückkehr vom Mond (11 km/s) ist deshalb nicht ein bisschen schwieriger als die aus dem Erdorbit (7.8 km/s), sondern rund dreimal so heiß.

R_n ist der Nasenradius — ein stumpfer Körper ist kühler als ein spitzer, entgegen der Anschauung. Genau deshalb sehen Kapseln aus wie Kuchenformen.

4. Eintrittskorridor

Funktion Rückgabe Bedeutung
AEntryAngle(s) f64 [rad] Bahnwinkel aus einem Zustand, positiv nach unten
AShallowLimit(mu, rLimit, vLimit, rTarget) f64 [rad] flache Grenze: flacher, und der Körper fliegt wieder hinaus
ASteepLimit(at, vE, aMax) f64 [rad] steile Grenze aus einer Verzögerungsschranke [m/s²]
ASteepLimitG(at, vE, gMax) f64 [rad] dasselbe mit einer Schranke in g
ACorridorWidth(at, mu, rLimit, vLimit, rTarget, gMax) f64 [rad] Breite; negativ heißt: es gibt keinen
AInCorridor(…, gamma) bool liegt ein Eintritt darin?
ASkipsOut(mu, rLimit, vLimit, rTarget, gamma) bool prallt der Körper ab?
AOverloads(at, vE, gamma, gMax) bool wird die Belastungsgrenze überschritten?
 
Die flache Grenze ist geometrisch gerechnet, nicht über die Bremswirkung: solange das Perizentrum der ungestörten Kegelschnittbahn oberhalb der wirksamen Atmosphäre bleibt, wird der Körper nicht genug gebremst. Das ist die konservative, nachrechenbare Fassung — die echte Grenze liegt etwas flacher, weil auch eine dünne Schicht bremst.

ACorridorWidth wird bei einem negativen Ergebnis nicht auf 0 abgeschnitten. „Kein Korridor„ ist die Aussage, wegen der man rechnet: bei diesem Anflugtempo lässt sich die Belastungsgrenze nicht einhalten und zugleich tief genug eintauchen.

ASteepLimit meldet π/2 statt eines Fehlers, wenn die Schranke bei diesem Tempo gar nicht zu verletzen ist.

5. Die Parameter im Einzelnen

Name Bedeutung Einheit Typische Werte
at Atmosphärensatz AAtmosEarth() & Co. oder eigener über AAtmosNew
h Höhe über der Bezugshöhe hRef, nicht Radius m ADensity(at, 50000.0) = 50 km über Grund
vE Geschwindigkeit an der Eintrittsgrenze m/s 7800 aus dem Erdorbit, 11 000 vom Mond, 5800 beim Marsanflug
gamma Bahnwinkel gegen die Horizontale, positiv nach unten Radiant 1…8 Grad Erde, 10…16 Grad Mars; gamma ≤ 0 ⇒ NaN (streift oder steigt)
beta ballistischer Koeffizient m/(C_D·A) kg/m² 50…150 Kapsel, 65 Marslander, 5000+ Sprengkopf
rNose Nasenradius am Staupunkt m 0.3…1.5; größer ist kühler
rho Dichte am betrachteten Ort kg/m³ meist aus ADensity
aMax / gMax Belastungsgrenze m/s² bzw. Vielfache von 9.80665 4 g bemannt, 10…20 g unbemannt
rLimit Radius der Eintrittsgrenze m ARadiusEarth() + at.hLimit
vLimit Geschwindigkeit dort m/s = vE
rTarget Radius, bis zu dem der Körper eintauchen muss m üblich: Grenzhöhe minus einige Skalenhöhen
 
Die Felder von AAtmos sind Modellparameter, keine Messwerte. rho0 und H beschreiben eine exponentielle Atmosphäre — eine Näherung, die im Bereich der Spitzenverzögerung gut trägt und in großer Höhe wie am Boden schlechter wird. Wer genauer rechnen muss, ersetzt ADensity durch ein Tabellenmodell; die übrigen Funktionen nehmen die Dichte ohnehin als Argument.

kHeat hängt am Gas, nicht am Planeten: Luft 1.7415e−4, CO₂ 1.8980e−4. Für Venus und Titan steht deshalb derselbe Wert wie für Mars.

6. Beispiel: Rückkehr aus dem Erdorbit

import std.astro.state;
import std.astro.entry;
import std.math;
import std.io;

fn zeig(n: pchar, v: f64, d: int64): void { Print(n); PrintLn(FloatToStr(v, d)); }

fn main(): int64 {
    var at:  AAtmos := AAtmosEarth();
    var gam: f64 := 6.0 * Pi() / 180.0;      // 6 Grad, typischer Rueckkehrwinkel
    var vE:  f64 := 7800.0;
    var beta: f64 := 100.0;                  // kg/m^2, Kapsel

    zeig("Dichte 50 km       : ", ADensity(at, 50000.0), 8);
    zeig("Peak g             : ", APeakDecelG(at, vE, gam), 2);
    zeig("Peak Hoehe km      : ", APeakAltitude(at, beta, gam) / 1000.0, 1);
    zeig("Peak Tempo         : ", APeakSpeed(vE), 1);
    zeig("Peak Waerme MW/m2  : ", APeakHeatFlux(at, beta, vE, gam, 0.5) / 1000000.0, 2);
    zeig("steile Grenze 10g  : ", ASteepLimitG(at, vE, 10.0) * 180.0 / Pi(), 2);
    return 0;
}

Dichte 50 km       : 0.00118087
Peak g             : 16.57
Peak Hoehe km      : 48.5
Peak Tempo         : 4730.9
Peak Waerme MW/m2  : 0.99
steile Grenze 10g  : 3.62

Das Beispiel zeigt zugleich, warum der Korridor eng ist: bei 6 Grad kommen 16.6 g heraus — für eine unbemannte Sonde tragbar, für eine Besatzung nicht. Die 10-g-Grenze liegt bei 3.6 Grad; flacher als die flache Grenze darf es trotzdem nicht werden, sonst prallt die Kapsel ab.

7. Beispiel: Winkelreihe und ein zweiter Planet

Der Eintrittswinkel ist die eine Größe, die alles entscheidet — hier über den ganzen brauchbaren Bereich, und daneben derselbe Vorgang am Mars:

import std.astro.entry;
import std.math;
import std.io;

fn f(v: f64, d: int64): pchar { return FloatToStr(v, d); }

fn main(): int64 {
    var erde: AAtmos := AAtmosEarth();
    var mars: AAtmos := AAtmosMars();
    var rad:  f64 := Pi() / 180.0;

    PrintLn("Erde, 7.8 km/s, beta 100 kg/m2:");
    PrintLn("  Winkel   Peak g   Peak km   Waerme MW/m2");
    var g: f64 := 2.0;
    while (g <= 10.0) {
        var gam: f64 := g * rad;
        Print("   "); Print(f(g, 1)); Print(" Grad  ");
        Print(f(APeakDecelG(erde, 7800.0, gam), 2)); Print("     ");
        Print(f(APeakAltitude(erde, 100.0, gam) / 1000.0, 1)); Print("      ");
        PrintLn(f(APeakHeatFlux(erde, 100.0, 7800.0, gam, 0.5) / 1000000.0, 2));
        g := g + 2.0;
    }

    PrintLn("");
    PrintLn("Mars, 5.8 km/s, beta 65 kg/m2 (Marslander), 12 Grad:");
    var gm: f64 := 12.0 * rad;
    Print("  Peak g            : "); PrintLn(f(APeakDecelG(mars, 5800.0, gm), 2));
    Print("  Peak Hoehe km     : "); PrintLn(f(APeakAltitude(mars, 65.0, gm) / 1000.0, 1));
    Print("  Waerme MW/m2      : "); PrintLn(f(APeakHeatFlux(mars, 65.0, 5800.0, gm, 1.0) / 1000000.0, 3));
    Print("  Dichte am Boden   : "); PrintLn(f(ADensity(mars, 0.0), 4));
    Print("  Dichte 10 km      : "); PrintLn(f(ADensity(mars, 10000.0), 5));
    return 0;
}

Erde, 7.8 km/s, beta 100 kg/m2:
  Winkel   Peak g   Peak km   Waerme MW/m2
   2.0 Grad  5.53     56.4      0.57
   4.0 Grad  11.06     51.4      0.81
   6.0 Grad  16.57     48.5      0.99
   8.0 Grad  22.06     46.5      1.15
   10.0 Grad  27.52     44.9      1.28

Mars, 5.8 km/s, beta 65 kg/m2 (Marslander), 12 Grad:
  Peak g            : 11.82
  Peak Hoehe km     : 31.1
  Waerme MW/m2      : 0.288
  Dichte am Boden   : 0.0200
  Dichte 10 km      : 0.00812

Die Reihe zeigt den Zusammenhang in Zahlen: die Spitzenverzögerung wächst linear mit sin γ — 2 Grad ergeben 5.5 g, 10 Grad das Fünffache. Der Wärmestrom wächst deutlich langsamer (0.57 → 1.28 MW/m²), weil der Körper bei steilem Eintritt tiefer und damit später bremst. Genau darin liegt die Zwickmühle des Korridors: flach ist kühl, aber lang und mit Abprallgefahr; steil ist kurz, aber hart.

Der Mars ist der Gegenfall: die dünne Atmosphäre verlangt einen viel steileren Winkel (12 statt 6 Grad) und erzwingt einen kleinen ballistischen Koeffizienten — deshalb sind Marslander groß und leicht. Der Wärmestrom bleibt dabei mit 0.29 MW/m² weit unter dem der Erdrückkehr.


Letzte Aktualisierung: 2026-08-31 — Parametertabelle mit typischen Werten und ein zweites Beispiel (Winkelreihe Erde, Vergleich Mars) ergänzt; beide Beispiele mit lyxc 1.1.15B gebaut und ausgeführt.

Zuvor 2026-08-31 — Seite neu angelegt aus std/astro/entry.lyx (PR #1890).