====== std.aero.atmos — Standardatmosphäre, Höhen und Geschwindigkeiten ======
→ [[lyx_-_programmiersprache:units:aero|std.aero Übersicht]] · [[lyx_-_programmiersprache:guides:standardatmosphaere|Guide: Standardatmosphäre]] · [[lyx_-_programmiersprache:units:aero:perf|std.aero.perf]] · [[lyx_-_programmiersprache:units|Standard Library]]
Fundament für alles, was ein Flugführungsrechner ausrechnet: ICAO-Standardatmosphäre, Druck- und Dichtehöhe, Flugflächen und die Umrechnung zwischen den vier Geschwindigkeitsbegriffen CAS, EAS, TAS und Mach. Ohne sie wäre jede Steig- und Sinkrechnung falsch — Steigrate, wahre Geschwindigkeit und Machzahl hängen sämtlich an Druck, Temperatur und Dichte der jeweiligen Höhe.
**Gültigkeit:** 0 bis 20 km geopotentielle Höhe (zwei Schichten der ICAO-Atmosphäre) und Unterschall bis Mach 1. Außerhalb liefert jede Funktion ''AvError()'', statt zu extrapolieren.
**Quelle:** ''std/aero/atmos.lyx'' · **Autor:** Andreas Röne · **Copyright:** 2026 Andreas Röne
----
===== Fehlerwert =====
^ Signatur ^ Beschreibung ^
| ''AvError(): f64'' | NaN — der Fehlerwert dieser Unit |
| ''AvIsError(x: f64): bool'' | Prüft auf NaN (der einzige Wert, der sich selbst ungleich ist) |
----
===== Konstanten =====
^ Name ^ Wert ^ Bedeutung ^
| ''AV_T0_K'' | 288.15 | Temperatur auf Meereshöhe, K |
| ''AV_P0_PA'' | 101325.0 | Druck auf Meereshöhe, Pa |
| ''AV_RHO0'' | 1.225 | Dichte auf Meereshöhe, kg/m³ |
| ''AV_LAPSE'' | 0.0065 | Temperaturgradient, K/m |
| ''AV_G0'' | 9.80665 | Normfallbeschleunigung, m/s² |
| ''AV_R_AIR'' | 287.05287 | spezifische Gaskonstante, J/(kg·K) |
| ''AV_KAPPA'' | 1.4 | Isentropenexponent |
| ''AV_TROPO_M'' | 11000.0 | Tropopause, geopotentiell |
| ''AV_T_TROPO_K'' | 216.65 | Temperatur ab Tropopause, K |
| ''AV_OBERGRENZE_M'' | 20000.0 | Gültigkeitsgrenze dieser Unit |
| ''AV_ERDRADIUS_M'' | 6356766.0 | Radius für geopotentiell ↔ geometrisch |
| ''AV_FT_IN_M'' | 0.3048 | exakt nach internationaler Definition |
| ''AV_NM_IN_M'' | 1852.0 | exakt |
| ''AV_KT_IN_MS'' | 0.5144… | 1852/3600 |
Der Druck an der Tropopause steht **nicht** als Literal in der Unit, sondern wird aus den Konstanten gerechnet — ein abgeschriebener Wert und die Formel darüber laufen sonst auseinander.
----
===== Einheiten =====
^ Signatur ^ Beschreibung ^
| ''AvFtToM(ft: f64): f64'' · ''AvMToFt(m: f64): f64'' | Fuß ↔ Meter |
| ''AvNmToM(nm: f64): f64'' · ''AvMToNm(m: f64): f64'' | Seemeilen ↔ Meter |
| ''AvKtToMs(kt: f64): f64'' · ''AvMsToKt(ms: f64): f64'' | Knoten ↔ m/s |
| ''AvCToK(c: f64): f64'' · ''AvKToC(k: f64): f64'' | Celsius ↔ Kelvin |
| ''AvHpaToPa(hpa: f64): f64'' · ''AvPaToHpa(pa: f64): f64'' | Hektopascal ↔ Pascal |
| ''AvKtToFpm(kt: f64): f64'' · ''AvFpmToKt(fpm: f64): f64'' | Knoten ↔ Fuß je Minute (1 kt = 101,268… fpm; der Faktor wird gerechnet, nicht abgeschrieben — er taucht in jeder Sinkflugrechnung auf) |
----
===== Geopotentiell und geometrisch =====
^ Signatur ^ Beschreibung ^
| ''AvGeometrischZuGeopotentiell(hGeoM: f64): f64'' | geometrische → geopotentielle Höhe |
| ''AvGeopotentiellZuGeometrisch(hPotM: f64): f64'' | die Umkehrung |
ISA ist über der **geopotentiellen** Höhe definiert; ein Höhenmesser misst Druck und liefert damit ebenfalls eine geopotentielle Größe. Die geometrische Höhe liegt darüber, weil die Schwere mit der Höhe abnimmt — in 11 km rund 19 m. Klein, aber vorhanden, und deshalb ausdrücklich statt stillschweigend gleichgesetzt.
----
===== Standardatmosphäre =====
^ Signatur ^ Beschreibung ^
| ''AvIsaTemperaturK(hM: f64): f64'' | Temperatur in geopotentieller Höhe, K |
| ''AvIsaDruckPa(hM: f64): f64'' | Druck, Pa |
| ''AvIsaDichte(hM: f64): f64'' | Dichte, kg/m³ — über die Gasgleichung, nicht über eine zweite Näherungsformel: zwei Formeln für dieselbe Größe laufen auseinander |
| ''AvDelta(hM: f64): f64'' | δ — Druckverhältnis zu Meereshöhe |
| ''AvTheta(hM: f64): f64'' | θ — Temperaturverhältnis |
| ''AvSigma(hM: f64): f64'' | σ — Dichteverhältnis |
| ''AvHoeheAusDruckM(pPa: f64): f64'' | Umkehrung: Höhe zu gegebenem Druck. Das ist die Rechnung, die ein Höhenmesser macht |
----
===== Höhen: Druck, Dichte, wahr =====
^ Signatur ^ Beschreibung ^
| ''AvStatischerDruckPa(qnhHpa: f64, hM: f64): f64'' | statischer Druck in wahrer Höhe bei gegebenem QNH |
| ''AvDruckhoeheM(qnhHpa: f64, hM: f64): f64'' | **Druckhöhe**: was ein auf 1013,25 hPa gestellter Höhenmesser zeigt. Daraus werden Flugflächen gebildet — nicht aus der wahren Höhe |
| ''AvDruckhoeheFt(qnhHpa: f64, hFt: f64): f64'' | dasselbe in Fuß |
| ''AvDichtehoeheM(druckhoeheM: f64, oatC: f64): f64'' | **Dichtehöhe**: die Höhe, in der die Standardatmosphäre die tatsächliche Dichte hat. Sie bestimmt Startstrecke und Steigleistung — an einem heißen Tag steht ein Flugzeug leistungsmäßig Tausende Fuß höher, als der Höhenmesser zeigt |
| ''AvDichtehoeheFt(druckhoeheFt: f64, oatC: f64): f64'' | dasselbe in Fuß |
| ''AvIsaAbweichungK(druckhoeheM: f64, oatC: f64): f64'' | um wie viel die Temperatur von der Standardtemperatur dieser Druckhöhe abweicht. Geht in jede Steig-, Sink- und Reichweitenrechnung ein |
| ''AvWahreHoeheM(angezeigtM: f64, gelaendeM: f64, isaAbwK: f64): f64'' | wahre Höhe aus angezeigter Höhe und Temperaturabweichung |
**Bei kalter Luft ist die wahre Höhe KLEINER als die angezeigte** — das ist die gefährliche Richtung, und genau dafür gibt es ''AvWahreHoeheM''. Die Faustformel der Fliegerei lautet „4 % je 10 °C Abweichung"; die Unit rechnet die Beziehung dahinter, weil die Faustformel bei großen Abweichungen mehrere hundert Fuß danebenliegt.
----
===== Flugflächen =====
^ Signatur ^ Beschreibung ^
| ''AvFlugflaecheAusDruckhoeheFt(druckhoeheFt: f64): f64'' | Druckhöhe → Flugfläche |
| ''AvDruckhoeheFtAusFlugflaeche(fl: f64): f64'' | Flugfläche → Druckhöhe |
| ''AvUebergangsflaeche(uebergangshoeheFt: f64, qnhHpa: f64, mindestabstandFt: f64): f64'' | niedrigste nutzbare Flugfläche über der Übergangshöhe. Bei niedrigem QNH liegt sie höher — genau deshalb wird sie gerechnet und nicht als Konstante geführt. ''mindestabstandFt'' ist die geforderte Trennung (je nach Staat 0 bis 1000 ft) |
Eine Flugfläche ist die Druckhöhe in Hundert Fuß, bezogen auf 1013,25 hPa. FL350 = 35000 ft **Druckhöhe** — keine Höhe über Grund und keine über Meer.
----
===== Geschwindigkeiten =====
^ Signatur ^ Beschreibung ^
| ''AvSchallgeschwindigkeitMs(tK: f64): f64'' · ''AvSchallgeschwindigkeitKt(tK: f64): f64'' | Schallgeschwindigkeit aus der Temperatur |
| ''AvMachAusCasKt(casKt: f64, druckhoeheM: f64): f64'' | CAS → Machzahl |
| ''AvTasKtAusCasKt(casKt: f64, druckhoeheM: f64, oatC: f64): f64'' | CAS → TAS. ''oatC'' ist die **tatsächliche** Außentemperatur; sie geht nur über die Schallgeschwindigkeit ein, der Druck kommt aus der Druckhöhe. Wer hier die Standardtemperatur einsetzt, bekommt an einem warmen Tag eine zu kleine TAS |
| ''AvCasKtAusTasKt(tasKt: f64, druckhoeheM: f64, oatC: f64): f64'' | die Umkehrung derselben Kette |
| ''AvTasKtAusMach(mach: f64, oatC: f64): f64'' | Mach → TAS |
| ''AvCasKtAusMach(mach: f64, druckhoeheM: f64): f64'' | Mach → CAS |
| ''AvEasKtAusTasKt(tasKt: f64, druckhoeheM: f64): f64'' | TAS → EAS. EAS ist die Geschwindigkeit, die denselben Staudruck auf Meereshöhe ergäbe — an ihr hängen die Strukturgrenzen (VMO) |
| ''AvUebergangshoeheM(casKt: f64, mach: f64): f64'' · ''AvUebergangshoeheFt(casKt: f64, mach: f64): f64'' | **Übergangshöhe** zwischen CAS- und Mach-Führung: unterhalb steigt ein Flugzeug mit fester CAS, oberhalb mit fester Machzahl. Sie wird per Bisektion **gesucht**, nicht abgeschätzt — die Beziehung ist nicht geschlossen umkehrbar |
Die Unit rechnet durchgehend **kompressibel**. Die einfache Wurzelformel ''CAS·√(ρ0/ρ)'' liefert EAS, nicht TAS; bei 300 kt in FL350 liegen zwischen beiden über zehn Knoten.
----
===== Codebeispiel =====
unit main;
import std.aero.atmos;
import std.io;
import std.string;
fn main(): int64 {
var druckhoeheFt: f64 := AvDruckhoeheFtAusFlugflaeche(350.0);
var hM: f64 := AvFtToM(druckhoeheFt);
var oatC: f64 := AvKToC(AvIsaTemperaturK(hM)) - 10.0; // ISA−10
var tas: f64 := AvTasKtAusCasKt(280.0, hM, oatC);
if (AvIsError(tas)) { PrintLn("ausserhalb des Gueltigkeitsbereichs"); return 1; }
PrintLn(StrConcat("TAS (kt): ", FloatToStr(tas, 1)));
PrintLn(StrConcat("Mach: ", FloatToStr(AvMachAusCasKt(280.0, hM), 2)));
PrintLn(StrConcat("ISA-Abw K: ", FloatToStr(AvIsaAbweichungK(hM, oatC), 1)));
return 0;
}
----
Letzte Aktualisierung: 2026-09-05 — Seite neu angelegt; erhoben aus ''std/aero/atmos.lyx'' (Stand 2026-09-04), Beispiel gegen lyxc 1.1.18A übersetzt und ausgeführt.
Prüflauf 2026-09-05 mit ''doku-pruefer.py'' über den gesamten Aero-Bereich (Repo-Compiler **lyxc 1.2.2A**): 13 Vollprogramme, 13 übersetzen, 0 echte Fehler; 193 Aufrufe gegen die ''pub fn''-Signaturen in ''aurum/std'' gehalten, 0 Abweichungen.