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/√e ≈ 61 % 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. InAPeakAltitudestehtβ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.
ACorridorWidthwird 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.
ASteepLimitmeldetπ/2statt 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 vonAAtmossind Modellparameter, keine Messwerte.rho0undHbeschreiben 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, ersetztADensitydurch ein Tabellenmodell; die übrigen Funktionen nehmen die Dichte ohnehin als Argument.
kHeathä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).
