Core
geo
RADIUS_EARTH_EQUATORIAL
Semi-major axis, Earth, WGS84
RADIUS_EARTH_MEAN
Mean radius of semi-axes, Earth, WGS84
F_INV
F_INV = 298.257223563
Inverse flattening \(f = \frac{R_\text{equator} - R_\text{pole}}{R_\text{equator}}\)
distance
distance(
lon0: AngleRad,
lat0: AngleRad,
lon1: AngleRad,
lat1: AngleRad,
*,
xp: ArrayApiNamespace | None,
) -> LengthM
Returns the Haversine great circle distance between two coordinates.
Source code in src/aerocore/geo.py
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | |
bearing
bearing(
lon0: AngleRad,
lat0: AngleRad,
lon1: AngleRad,
lat1: AngleRad,
*,
xp: ArrayApiNamespace | None,
) -> AngleRad
Returns the initial bearing (from origin to destination) along a great-circle.
Returns:
| Type | Description |
|---|---|
AngleRad
|
initial bearing, radians, [\(-\pi\), \(\pi\)], clockwise from north |
Source code in src/aerocore/geo.py
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | |
lla_to_ecef
lla_to_ecef(
lon: AngleRad,
lat: AngleRad,
alt: GeometricAltitudeM,
*,
xp: ArrayApiNamespace | None,
) -> Point3D[LengthM]
Converts geodetic coordinates to Earth-centered, Earth-fixed coordinates.
Equivalent to epsg:4979 +proj=cart +ellps=WGS84 in PROJ.
Returns:
| Type | Description |
|---|---|
Point3D[LengthM]
|
(x, y, z) coordinates |
Source code in src/aerocore/geo.py
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | |
ecef_to_enu
ecef_to_enu(
dx: DeltaLengthM,
dy: DeltaLengthM,
dz: DeltaLengthM,
lon_ref: AngleRad,
lat_ref: AngleRad,
*,
xp: ArrayApiNamespace | None,
) -> Point3D[LengthM]
Converts Earth-centered, Earth-fixed coordinates (x, y, z with respect to a reference point) to East-North-Up coordinates.
Returns:
| Type | Description |
|---|---|
Point3D[LengthM]
|
(east, north, up) coordinates |
Source code in src/aerocore/geo.py
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | |
airspeed
Implements common airspeed conversions.
_________________
v v
IAS CAS --> EAS <-> TAS GS
^ |
| |------> q
| |
| |------> p_t ----> q_c
| |
| v
| compressibility factor f
| |
|-------------------------------|
The equivalent airspeed \(V_e\) is such that the dynamic pressure at some altitude \(q = \frac{1}{2} \rho V^2\) is the same as the dynamic pressure at sea level ISA conditions. \(q = \frac{1}{2} \rho_0 V_e^2\). EAS and TAS is related through aerocore.airspeed.eas_from_tas.
impact_pressure_from_cas
impact_pressure_from_cas(
cas: CasMPS, gamma: RatioOfSpecificHeats = GAMMA_DRY_AIR
) -> ImpactPressurePA
Impact pressure, compressible flow
Source code in src/aerocore/airspeed.py
41 42 43 44 45 46 | |
impact_pressure_from_cas_behind_normal_shock
impact_pressure_from_cas_behind_normal_shock(
cas: CasMPS, gamma: RatioOfSpecificHeats = GAMMA_DRY_AIR
) -> ImpactPressurePA
Impact pressure, behind normal shock wave, supersonic flow
Source code in src/aerocore/airspeed.py
49 50 51 52 53 54 | |
density_factor
density_factor(rho: DensityKGM3) -> DensityFactor
Source code in src/aerocore/airspeed.py
57 58 59 60 | |
eas_from_tas
eas_from_tas(tas: TasMPS, rho: DensityKGM3) -> EasMPS
Converts TAS to EAS
Source code in src/aerocore/airspeed.py
63 64 65 66 67 68 | |
tas_from_eas
tas_from_eas(eas: EasMPS, rho: DensityKGM3) -> TasMPS
Converts EAS to TAS
Source code in src/aerocore/airspeed.py
71 72 73 74 75 76 | |
compressibility_factor
compressibility_factor(
qc: ImpactPressurePA,
p: StaticPressurePA,
gamma: RatioOfSpecificHeats = GAMMA_DRY_AIR,
) -> CompressibilityFactor
Assumption: subsonic speeds
Source code in src/aerocore/airspeed.py
79 80 81 82 83 84 85 86 87 | |
eas_from_cas
eas_from_cas(
cas: CasMPS,
p: StaticPressurePA,
gamma: RatioOfSpecificHeats = GAMMA_DRY_AIR,
) -> EasMPS
Assumption: subsonic speeds
Source code in src/aerocore/airspeed.py
90 91 92 93 94 95 96 97 98 99 | |
tas_from_cas
tas_from_cas(
cas: CasMPS, rho: DensityKGM3, p: StaticPressurePA
) -> TasMPS
Assumption: subsonic speeds
Source code in src/aerocore/airspeed.py
102 103 104 105 106 107 108 109 | |
cas_from_tas
cas_from_tas(
tas: TasMPS,
rho: DensityKGM3,
p: StaticPressurePA,
gamma: RatioOfSpecificHeats = GAMMA_DRY_AIR,
) -> CasMPS
Assumption: subsonic speeds
Source code in src/aerocore/airspeed.py
112 113 114 115 116 117 118 119 120 121 122 123 | |
bada3
Implementation of the Base of aircraft data (BADA) Family 3.
Revision: 3.12 (No. 14/04/24-44)
Contents:
- 3 Operational Performance Models
- 3.1 Atmosphere Model
- 3.2 Total-Energy Model
- 3.3 Aircraft Type
- 3.4 Mass
- 3.5 Flight Envelope
- 3.6 Aerodynamics
- 3.7 Engine Thrust
- 3.8 Reduced Climb Power
- 3.9 Fuel Consumption
- 3.10 Ground Movement
- 3.11 Summary of Operations Performance Parameters
- 4 Airline Procedure Models
- 5 Global Aircraft Parameters
- 6 File Structure
- 6.1 File Types
- 6.2 File Configuration Management
- 6.3
SynonymFile Format - 6.4
OPFFile Format - 6.5
APFFile Format - 6.6
PTFFile Format - 6.7
PTDFile Format - 6.8
BADA.GPFFile Format
The following functions are defined elsewhere:
- 3.1-21 Determination of air density aerocore.thermo.density
- 3.1-22 Determination of speed of sound aerocore.thermo.speed_of_sound
- 3.1-23, 3.1-24 CAS/TAS conversion
temperature_below_tropopause
temperature_below_tropopause(
altitude: GeopotentialAltitudeM,
delta_temperature: DeltaTemperatureK = 0.0,
) -> StaticTemperatureKBelowTropo
Temperature below the tropopause, lapsing linearly with altitude (3.1-13)
Source code in src/aerocore/bada3.py
82 83 84 85 86 87 88 89 | |
temperature_above_tropopause
temperature_above_tropopause(
delta_temperature: DeltaTemperatureK,
) -> StaticPressurePABelowTropo
Temperature above the tropopause, isothermal (3.1-15, 3.1-16).
Source code in src/aerocore/bada3.py
92 93 94 95 96 | |
pressure_below_tropopause
pressure_below_tropopause(
temperature_below_trop: StaticTemperatureK,
delta_temperature: DeltaTemperatureK = 0.0,
) -> StaticPressurePA
Pressure below tropopause (3.1-18)
Source code in src/aerocore/bada3.py
99 100 101 102 103 104 105 106 107 | |
pressure_above_tropopause
pressure_above_tropopause(
altitude: GeopotentialAltitudeM,
*,
xp: ArrayApiNamespace | None,
) -> StaticPressurePA
Pressure above tropopause (3.1-20)
Source code in src/aerocore/bada3.py
110 111 112 113 114 115 116 117 118 119 | |
atmosphere
atmosphere(
altitude: GeopotentialAltitudeM,
delta_temperature: DeltaTemperatureK,
*,
xp: ArrayApiNamespace | None,
) -> GasState
BADA3 atmospheric model.
Non-standard atmosphere conditions are modelled with the ISA temperature deviation.
Note that this is only valid for 0-20km.
Source code in src/aerocore/bada3.py
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | |
mach_number
mach_number(
tas: TasMPS, temperature: StaticTemperatureK
) -> MachNumber
Mach/TAS conversion (3.1-26)
Source code in src/aerocore/bada3.py
156 157 158 159 160 161 162 | |
thermo
specific_gas_constant
specific_gas_constant(
molar_mass: MolarMassKGMol,
) -> SpecificGasConstantJKGK
Source code in src/aerocore/thermo.py
18 19 20 21 | |
GasState
Bases: NamedTuple
density
density(
specific_gas_constant: SpecificGasConstantJKGK,
) -> DensityKGM3
Density, perfect gas
Source code in src/aerocore/thermo.py
28 29 30 31 32 33 | |
density
density(
temperature: StaticTemperatureK,
pressure: StaticPressurePA,
specific_gas_constant: SpecificGasConstantJKGK,
) -> DensityKGM3
Density, perfect gas
Source code in src/aerocore/thermo.py
36 37 38 39 40 41 42 | |
speed_of_sound
speed_of_sound(
temperature: StaticTemperatureK,
adiabatic_index: RatioOfSpecificHeats,
specific_gas_constant: SpecificGasConstantJKGK,
) -> SpeedOfSoundMPS
Speed of sound, perfect gas
Source code in src/aerocore/thermo.py
45 46 47 48 49 50 51 | |
dynamic_pressure
dynamic_pressure(
rho: DensityKGM3, tas: TasMPS
) -> DynamicPressurePA
Dynamic pressure, incompressible flow
Source code in src/aerocore/thermo.py
54 55 56 57 58 59 | |
total_pressure
total_pressure(
tas: TasMPS,
rho: DensityKGM3,
p: StaticPressurePA,
gamma: RatioOfSpecificHeats = GAMMA_DRY_AIR,
) -> TotalPressurePA
Total pressure, compressible flow
Source code in src/aerocore/thermo.py
62 63 64 65 66 67 68 69 70 71 | |
total_pressure_behind_normal_shock
total_pressure_behind_normal_shock(
tas: TasMPS,
rho: DensityKGM3,
p: StaticPressurePA,
gamma: RatioOfSpecificHeats = GAMMA_DRY_AIR,
) -> TotalPressurePA
Total pressure, behind normal shock wave, supersonic flow
Source code in src/aerocore/thermo.py
74 75 76 77 78 79 80 81 82 83 | |
impact_pressure
impact_pressure(
tas: TasMPS,
rho: DensityKGM3,
p: StaticPressurePA,
gamma: RatioOfSpecificHeats = GAMMA_DRY_AIR,
) -> ImpactPressurePA
Impact pressure, compressible flow
Source code in src/aerocore/thermo.py
86 87 88 89 90 91 92 93 | |
impact_pressure_behind_normal_shock
impact_pressure_behind_normal_shock(
tas: TasMPS,
a: SpeedOfSoundMPS,
p: StaticPressurePA,
gamma: RatioOfSpecificHeats = GAMMA_DRY_AIR,
) -> TotalPressurePA
Impact pressure, behind normal shock wave, supersonic flow
Source code in src/aerocore/thermo.py
96 97 98 99 100 101 102 103 104 105 106 | |