pycontrails 0.59.0__cp314-cp314-macosx_10_15_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pycontrails might be problematic. Click here for more details.
- pycontrails/__init__.py +70 -0
- pycontrails/_version.py +34 -0
- pycontrails/core/__init__.py +30 -0
- pycontrails/core/aircraft_performance.py +679 -0
- pycontrails/core/airports.py +228 -0
- pycontrails/core/cache.py +889 -0
- pycontrails/core/coordinates.py +174 -0
- pycontrails/core/fleet.py +483 -0
- pycontrails/core/flight.py +2185 -0
- pycontrails/core/flightplan.py +228 -0
- pycontrails/core/fuel.py +140 -0
- pycontrails/core/interpolation.py +702 -0
- pycontrails/core/met.py +2936 -0
- pycontrails/core/met_var.py +387 -0
- pycontrails/core/models.py +1321 -0
- pycontrails/core/polygon.py +549 -0
- pycontrails/core/rgi_cython.cpython-314-darwin.so +0 -0
- pycontrails/core/vector.py +2249 -0
- pycontrails/datalib/__init__.py +12 -0
- pycontrails/datalib/_met_utils/metsource.py +746 -0
- pycontrails/datalib/ecmwf/__init__.py +73 -0
- pycontrails/datalib/ecmwf/arco_era5.py +345 -0
- pycontrails/datalib/ecmwf/common.py +114 -0
- pycontrails/datalib/ecmwf/era5.py +554 -0
- pycontrails/datalib/ecmwf/era5_model_level.py +490 -0
- pycontrails/datalib/ecmwf/hres.py +804 -0
- pycontrails/datalib/ecmwf/hres_model_level.py +466 -0
- pycontrails/datalib/ecmwf/ifs.py +287 -0
- pycontrails/datalib/ecmwf/model_levels.py +435 -0
- pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +139 -0
- pycontrails/datalib/ecmwf/variables.py +268 -0
- pycontrails/datalib/geo_utils.py +261 -0
- pycontrails/datalib/gfs/__init__.py +28 -0
- pycontrails/datalib/gfs/gfs.py +656 -0
- pycontrails/datalib/gfs/variables.py +104 -0
- pycontrails/datalib/goes.py +764 -0
- pycontrails/datalib/gruan.py +343 -0
- pycontrails/datalib/himawari/__init__.py +27 -0
- pycontrails/datalib/himawari/header_struct.py +266 -0
- pycontrails/datalib/himawari/himawari.py +671 -0
- pycontrails/datalib/landsat.py +589 -0
- pycontrails/datalib/leo_utils/__init__.py +5 -0
- pycontrails/datalib/leo_utils/correction.py +266 -0
- pycontrails/datalib/leo_utils/landsat_metadata.py +300 -0
- pycontrails/datalib/leo_utils/search.py +250 -0
- pycontrails/datalib/leo_utils/sentinel_metadata.py +748 -0
- pycontrails/datalib/leo_utils/static/bq_roi_query.sql +6 -0
- pycontrails/datalib/leo_utils/vis.py +59 -0
- pycontrails/datalib/sentinel.py +650 -0
- pycontrails/datalib/spire/__init__.py +5 -0
- pycontrails/datalib/spire/exceptions.py +62 -0
- pycontrails/datalib/spire/spire.py +604 -0
- pycontrails/ext/bada.py +42 -0
- pycontrails/ext/cirium.py +14 -0
- pycontrails/ext/empirical_grid.py +140 -0
- pycontrails/ext/synthetic_flight.py +431 -0
- pycontrails/models/__init__.py +1 -0
- pycontrails/models/accf.py +425 -0
- pycontrails/models/apcemm/__init__.py +8 -0
- pycontrails/models/apcemm/apcemm.py +983 -0
- pycontrails/models/apcemm/inputs.py +226 -0
- pycontrails/models/apcemm/static/apcemm_yaml_template.yaml +183 -0
- pycontrails/models/apcemm/utils.py +437 -0
- pycontrails/models/cocip/__init__.py +29 -0
- pycontrails/models/cocip/cocip.py +2742 -0
- pycontrails/models/cocip/cocip_params.py +305 -0
- pycontrails/models/cocip/cocip_uncertainty.py +291 -0
- pycontrails/models/cocip/contrail_properties.py +1530 -0
- pycontrails/models/cocip/output_formats.py +2270 -0
- pycontrails/models/cocip/radiative_forcing.py +1260 -0
- pycontrails/models/cocip/radiative_heating.py +520 -0
- pycontrails/models/cocip/unterstrasser_wake_vortex.py +508 -0
- pycontrails/models/cocip/wake_vortex.py +396 -0
- pycontrails/models/cocip/wind_shear.py +120 -0
- pycontrails/models/cocipgrid/__init__.py +9 -0
- pycontrails/models/cocipgrid/cocip_grid.py +2552 -0
- pycontrails/models/cocipgrid/cocip_grid_params.py +138 -0
- pycontrails/models/dry_advection.py +602 -0
- pycontrails/models/emissions/__init__.py +21 -0
- pycontrails/models/emissions/black_carbon.py +599 -0
- pycontrails/models/emissions/emissions.py +1353 -0
- pycontrails/models/emissions/ffm2.py +336 -0
- pycontrails/models/emissions/static/default-engine-uids.csv +239 -0
- pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +596 -0
- pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +215 -0
- pycontrails/models/extended_k15.py +1327 -0
- pycontrails/models/humidity_scaling/__init__.py +37 -0
- pycontrails/models/humidity_scaling/humidity_scaling.py +1075 -0
- pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
- pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
- pycontrails/models/issr.py +210 -0
- pycontrails/models/pcc.py +326 -0
- pycontrails/models/pcr.py +154 -0
- pycontrails/models/ps_model/__init__.py +18 -0
- pycontrails/models/ps_model/ps_aircraft_params.py +381 -0
- pycontrails/models/ps_model/ps_grid.py +701 -0
- pycontrails/models/ps_model/ps_model.py +1000 -0
- pycontrails/models/ps_model/ps_operational_limits.py +525 -0
- pycontrails/models/ps_model/static/ps-aircraft-params-20250328.csv +69 -0
- pycontrails/models/ps_model/static/ps-synonym-list-20250328.csv +104 -0
- pycontrails/models/sac.py +442 -0
- pycontrails/models/tau_cirrus.py +183 -0
- pycontrails/physics/__init__.py +1 -0
- pycontrails/physics/constants.py +117 -0
- pycontrails/physics/geo.py +1138 -0
- pycontrails/physics/jet.py +968 -0
- pycontrails/physics/static/iata-cargo-load-factors-20250221.csv +74 -0
- pycontrails/physics/static/iata-passenger-load-factors-20250221.csv +74 -0
- pycontrails/physics/thermo.py +551 -0
- pycontrails/physics/units.py +472 -0
- pycontrails/py.typed +0 -0
- pycontrails/utils/__init__.py +1 -0
- pycontrails/utils/dependencies.py +66 -0
- pycontrails/utils/iteration.py +13 -0
- pycontrails/utils/json.py +187 -0
- pycontrails/utils/temp.py +50 -0
- pycontrails/utils/types.py +163 -0
- pycontrails-0.59.0.dist-info/METADATA +179 -0
- pycontrails-0.59.0.dist-info/RECORD +123 -0
- pycontrails-0.59.0.dist-info/WHEEL +6 -0
- pycontrails-0.59.0.dist-info/licenses/LICENSE +178 -0
- pycontrails-0.59.0.dist-info/licenses/NOTICE +43 -0
- pycontrails-0.59.0.dist-info/top_level.txt +3 -0
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
"""Support for calculating operational limits of the PS model."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
import numpy.typing as npt
|
|
7
|
+
import scipy.optimize
|
|
8
|
+
|
|
9
|
+
from pycontrails.core import flight
|
|
10
|
+
from pycontrails.models.ps_model.ps_aircraft_params import PSAircraftEngineParams
|
|
11
|
+
from pycontrails.physics import constants, jet, units
|
|
12
|
+
from pycontrails.utils.types import ArrayOrFloat
|
|
13
|
+
|
|
14
|
+
# ------------------------
|
|
15
|
+
# Operational speed limits
|
|
16
|
+
# ------------------------
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def max_mach_number_by_altitude(
|
|
20
|
+
altitude_ft: ArrayOrFloat,
|
|
21
|
+
air_pressure: ArrayOrFloat,
|
|
22
|
+
max_mach_num: float,
|
|
23
|
+
p_i_max: float,
|
|
24
|
+
p_inf_co: float,
|
|
25
|
+
*,
|
|
26
|
+
atm_speed_limit: bool = True,
|
|
27
|
+
buffer: float = 0.02,
|
|
28
|
+
) -> ArrayOrFloat:
|
|
29
|
+
"""
|
|
30
|
+
Calculate maximum permitted Mach number at a given altitude.
|
|
31
|
+
|
|
32
|
+
Parameters
|
|
33
|
+
----------
|
|
34
|
+
altitude_ft : ArrayOrFloat
|
|
35
|
+
Waypoint altitude, [:math: `ft`]
|
|
36
|
+
air_pressure: ArrayOrFloat
|
|
37
|
+
Pressure altitude at each waypoint, [:math:`Pa`]
|
|
38
|
+
max_mach_num: float
|
|
39
|
+
Maximum permitted operational Mach number of the aircraft type.
|
|
40
|
+
p_i_max : float
|
|
41
|
+
Maximum permitted operational impact pressure of the aircraft type, [:math:`Pa`]
|
|
42
|
+
p_inf_co: float
|
|
43
|
+
Crossover pressure altitude, [:math:`Pa`]
|
|
44
|
+
atm_speed_limit: bool
|
|
45
|
+
Apply air traffic management speed limit of 250 knots below 10,000 feet
|
|
46
|
+
buffer: float
|
|
47
|
+
Additional buffer for maximum permitted Mach number.
|
|
48
|
+
|
|
49
|
+
Returns
|
|
50
|
+
-------
|
|
51
|
+
ArrayOrFloat
|
|
52
|
+
Maximum permitted Mach number at a given altitude for each waypoint.
|
|
53
|
+
|
|
54
|
+
Notes
|
|
55
|
+
-----
|
|
56
|
+
Below 10,000 ft, the ATM speed limit of 250 knots (``p_i = 10510 Pa``) is imposed. Below the
|
|
57
|
+
crossover altitude, the maximum operational speed is limited by the maximum permitted impact
|
|
58
|
+
pressure. Above the crossover altitude, the maximum operational speed is determined by the
|
|
59
|
+
maximum permitted Mach number of the aircraft type.
|
|
60
|
+
"""
|
|
61
|
+
if atm_speed_limit:
|
|
62
|
+
p_i_max = np.where(altitude_ft < 10000.0, 10510.0, p_i_max) # type: ignore[assignment]
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
np.where( # type: ignore[return-value]
|
|
66
|
+
air_pressure > p_inf_co,
|
|
67
|
+
2.0**0.5
|
|
68
|
+
* ((1.0 + (2.0 / constants.kappa) * (p_i_max / air_pressure)) ** 0.5 - 1.0) ** 0.5,
|
|
69
|
+
max_mach_num,
|
|
70
|
+
)
|
|
71
|
+
+ buffer
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
# ------------------------------
|
|
76
|
+
# Thrust requirements and limits
|
|
77
|
+
# ------------------------------
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def required_thrust_coefficient(
|
|
81
|
+
c_lift: ArrayOrFloat,
|
|
82
|
+
c_drag: ArrayOrFloat,
|
|
83
|
+
true_airspeed: ArrayOrFloat,
|
|
84
|
+
*,
|
|
85
|
+
rocd: ArrayOrFloat = 300.0, # type: ignore[assignment]
|
|
86
|
+
) -> ArrayOrFloat:
|
|
87
|
+
r"""
|
|
88
|
+
Calculate required thrust coefficient to fly the stated true airspeed and climb rate.
|
|
89
|
+
|
|
90
|
+
Parameters
|
|
91
|
+
----------
|
|
92
|
+
c_lift : ArrayOrFloat
|
|
93
|
+
Lift coefficient
|
|
94
|
+
c_drag : ArrayOrFloat
|
|
95
|
+
Total airframe drag coefficient
|
|
96
|
+
true_airspeed : ArrayOrFloat
|
|
97
|
+
True airspeed, [:math:`m \ s^{-1}`]
|
|
98
|
+
rocd : ArrayOrFloat
|
|
99
|
+
Rate of climb and descent over segment, [:math:`ft min^{-1}`]
|
|
100
|
+
|
|
101
|
+
Returns
|
|
102
|
+
-------
|
|
103
|
+
ArrayOrFloat
|
|
104
|
+
Required thrust coefficient to fly the stated true airspeed and climb rate
|
|
105
|
+
|
|
106
|
+
Notes
|
|
107
|
+
-----
|
|
108
|
+
The maximum "useful" operational altitude is being deemed to have been reached when the
|
|
109
|
+
achievable climb rate drops to about 300 ft/min.
|
|
110
|
+
"""
|
|
111
|
+
dh_dt = units.ft_to_m(rocd) / 60.0
|
|
112
|
+
return c_lift * ((c_drag / c_lift) + (dh_dt / true_airspeed))
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def max_available_thrust_coefficient(
|
|
116
|
+
air_temperature: ArrayOrFloat,
|
|
117
|
+
mach_number: ArrayOrFloat,
|
|
118
|
+
c_t_eta_b: ArrayOrFloat,
|
|
119
|
+
atyp_param: PSAircraftEngineParams,
|
|
120
|
+
*,
|
|
121
|
+
buffer: float = 0.20,
|
|
122
|
+
) -> ArrayOrFloat:
|
|
123
|
+
"""
|
|
124
|
+
Calculate maximum available thrust coefficient.
|
|
125
|
+
|
|
126
|
+
Parameters
|
|
127
|
+
----------
|
|
128
|
+
air_temperature : ArrayOrFloat
|
|
129
|
+
Ambient temperature at each waypoint, [:math:`K`]
|
|
130
|
+
mach_number : ArrayOrFloat
|
|
131
|
+
Mach number at each waypoint.
|
|
132
|
+
c_t_eta_b : ArrayOrFloat
|
|
133
|
+
Thrust coefficient at maximum overall propulsion efficiency for a given Mach Number.
|
|
134
|
+
atyp_param : PSAircraftEngineParams
|
|
135
|
+
Extracted aircraft and engine parameters.
|
|
136
|
+
buffer : float, optional
|
|
137
|
+
Additional buffer for maximum throttle parameter `tr_max`. The default value recommended by
|
|
138
|
+
Ian Poll is 0.2, which increases the maximum throttle parameter by 20%.
|
|
139
|
+
|
|
140
|
+
Returns
|
|
141
|
+
-------
|
|
142
|
+
ArrayOrFloat
|
|
143
|
+
Maximum available thrust coefficient that can be supplied by the engines.
|
|
144
|
+
"""
|
|
145
|
+
tr_max = _normalised_max_throttle_parameter(
|
|
146
|
+
air_temperature,
|
|
147
|
+
mach_number,
|
|
148
|
+
atyp_param.tet_mcc,
|
|
149
|
+
atyp_param.tr_ec,
|
|
150
|
+
atyp_param.m_ec,
|
|
151
|
+
buffer=buffer,
|
|
152
|
+
)
|
|
153
|
+
c_t_max_over_c_t_eta_b = 1.0 + 2.5 * (tr_max - 1.0)
|
|
154
|
+
return c_t_max_over_c_t_eta_b * c_t_eta_b
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def get_excess_thrust_available(
|
|
158
|
+
mach_number: ArrayOrFloat,
|
|
159
|
+
air_temperature: ArrayOrFloat,
|
|
160
|
+
air_pressure: ArrayOrFloat,
|
|
161
|
+
aircraft_mass: ArrayOrFloat,
|
|
162
|
+
theta: ArrayOrFloat,
|
|
163
|
+
atyp_param: PSAircraftEngineParams,
|
|
164
|
+
) -> ArrayOrFloat:
|
|
165
|
+
r"""
|
|
166
|
+
Calculate the excess thrust coefficient available at specified operation condition.
|
|
167
|
+
|
|
168
|
+
Parameters
|
|
169
|
+
----------
|
|
170
|
+
mach_number : ArrayOrFloat
|
|
171
|
+
Mach number at each waypoint
|
|
172
|
+
air_temperature : ArrayOrFloat
|
|
173
|
+
Ambient temperature at each waypoint, [:math:`K`]
|
|
174
|
+
air_pressure : ArrayOrFloat
|
|
175
|
+
Ambient pressure, [:math:`Pa`]
|
|
176
|
+
aircraft_mass : ArrayOrFloat
|
|
177
|
+
Aircraft mass at each waypoint, [:math:`kg`]
|
|
178
|
+
theta : ArrayOrFloat
|
|
179
|
+
Climb (positive value) or descent (negative value) angle, [:math:`\deg`]
|
|
180
|
+
atyp_param : PSAircraftEngineParams
|
|
181
|
+
Extracted aircraft and engine parameters.
|
|
182
|
+
|
|
183
|
+
Returns
|
|
184
|
+
-------
|
|
185
|
+
ArrayOrFloat
|
|
186
|
+
The difference between the maximum rated thrust coefficient and the thrust coefficient
|
|
187
|
+
required to maintain the current mach_number.
|
|
188
|
+
"""
|
|
189
|
+
from pycontrails.models.ps_model.ps_model import (
|
|
190
|
+
airframe_drag_coefficient,
|
|
191
|
+
lift_coefficient,
|
|
192
|
+
oswald_efficiency_factor,
|
|
193
|
+
reynolds_number,
|
|
194
|
+
skin_friction_coefficient,
|
|
195
|
+
thrust_coefficient_at_max_efficiency,
|
|
196
|
+
wave_drag_coefficient,
|
|
197
|
+
zero_lift_drag_coefficient,
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
rn = reynolds_number(atyp_param.wing_surface_area, mach_number, air_temperature, air_pressure)
|
|
201
|
+
if isinstance(rn, float):
|
|
202
|
+
if rn <= 0.0:
|
|
203
|
+
return np.nan
|
|
204
|
+
else:
|
|
205
|
+
rn[rn <= 0.0] = np.nan
|
|
206
|
+
|
|
207
|
+
c_lift = lift_coefficient(
|
|
208
|
+
atyp_param.wing_surface_area, aircraft_mass, air_pressure, mach_number, theta
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
c_f = skin_friction_coefficient(rn)
|
|
212
|
+
c_drag_0 = zero_lift_drag_coefficient(c_f, atyp_param.psi_0)
|
|
213
|
+
e_ls = oswald_efficiency_factor(c_drag_0, atyp_param)
|
|
214
|
+
c_drag_w = wave_drag_coefficient(mach_number, c_lift, atyp_param)
|
|
215
|
+
c_drag = airframe_drag_coefficient(
|
|
216
|
+
c_drag_0, c_drag_w, c_lift, e_ls, atyp_param.wing_aspect_ratio
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
tas = units.mach_number_to_tas(mach_number, air_temperature)
|
|
220
|
+
req_thrust_coeff = required_thrust_coefficient(c_lift, c_drag, tas) # type: ignore[type-var]
|
|
221
|
+
|
|
222
|
+
c_t_eta_b = thrust_coefficient_at_max_efficiency(
|
|
223
|
+
mach_number, atyp_param.m_des, atyp_param.c_t_des
|
|
224
|
+
)
|
|
225
|
+
max_thrust_coeff = max_available_thrust_coefficient(
|
|
226
|
+
air_temperature, mach_number, c_t_eta_b, atyp_param
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
return max_thrust_coeff - req_thrust_coeff # type: ignore[return-value]
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def _normalised_max_throttle_parameter(
|
|
233
|
+
air_temperature: ArrayOrFloat,
|
|
234
|
+
mach_number: ArrayOrFloat,
|
|
235
|
+
tet_mcc: float,
|
|
236
|
+
tr_ec: float,
|
|
237
|
+
m_ec: float,
|
|
238
|
+
*,
|
|
239
|
+
buffer: float = 0.20,
|
|
240
|
+
) -> ArrayOrFloat:
|
|
241
|
+
"""
|
|
242
|
+
Calculate normalised maximum throttle parameter.
|
|
243
|
+
|
|
244
|
+
Parameters
|
|
245
|
+
----------
|
|
246
|
+
air_temperature : ArrayOrFloat
|
|
247
|
+
Ambient temperature at each waypoint, [:math:`K`]
|
|
248
|
+
mach_number : ArrayOrFloat
|
|
249
|
+
Mach number at each waypoint
|
|
250
|
+
tet_mcc : float
|
|
251
|
+
Turbine entry temperature at maximum continuous climb rating, [:math:`K`]
|
|
252
|
+
tr_ec : float
|
|
253
|
+
Engine characteristic ratio of total turbine-entry-temperature to the total freestream
|
|
254
|
+
temperature for maximum overall efficiency.
|
|
255
|
+
m_ec : float
|
|
256
|
+
Engine characteristic Mach number associated with `tr_ec`.
|
|
257
|
+
buffer : float, optional
|
|
258
|
+
Additional buffer for maximum throttle parameter. The default value recommended by Ian Poll
|
|
259
|
+
is 0.2, which increases the maximum throttle parameter by 20%. This affects the maximum
|
|
260
|
+
available thrust coefficient calculated downstream.
|
|
261
|
+
|
|
262
|
+
Returns
|
|
263
|
+
-------
|
|
264
|
+
ArrayOrFloat
|
|
265
|
+
Normalised maximum throttle parameter, `tr_max`.
|
|
266
|
+
|
|
267
|
+
Notes
|
|
268
|
+
-----
|
|
269
|
+
The normalised throttle parameter is the ratio of the total temperature of the gas at turbine
|
|
270
|
+
entry to the freestream total temperature, normalised with its value for maximum engine
|
|
271
|
+
overall efficiency at the same freestream Mach number.
|
|
272
|
+
"""
|
|
273
|
+
return (
|
|
274
|
+
(tet_mcc / air_temperature)
|
|
275
|
+
/ (tr_ec * (1.0 - 0.53 * (mach_number - m_ec) ** 2) * (1.0 + 0.2 * mach_number**2))
|
|
276
|
+
* (1.0 + buffer)
|
|
277
|
+
)
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
# --------------------
|
|
281
|
+
# Aircraft mass limits
|
|
282
|
+
# --------------------
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
def max_allowable_aircraft_mass(
|
|
286
|
+
air_pressure: ArrayOrFloat,
|
|
287
|
+
mach_number: ArrayOrFloat,
|
|
288
|
+
mach_num_des: float,
|
|
289
|
+
c_l_do: float,
|
|
290
|
+
wing_surface_area: float,
|
|
291
|
+
amass_mtow: float,
|
|
292
|
+
) -> ArrayOrFloat:
|
|
293
|
+
"""
|
|
294
|
+
Calculate maximum allowable aircraft mass for a given altitude and mach number.
|
|
295
|
+
|
|
296
|
+
Parameters
|
|
297
|
+
----------
|
|
298
|
+
air_pressure : ArrayOrFloat
|
|
299
|
+
Ambient pressure, [:math:`Pa`]
|
|
300
|
+
mach_number : ArrayOrFloat
|
|
301
|
+
Mach number at each waypoint
|
|
302
|
+
mach_num_des : float
|
|
303
|
+
Design optimum Mach number where the fuel mass flow rate is at a minimum.
|
|
304
|
+
c_l_do : float
|
|
305
|
+
Design optimum lift coefficient.
|
|
306
|
+
wing_surface_area : float
|
|
307
|
+
Aircraft wing surface area, [:math:`m^2`]
|
|
308
|
+
amass_mtow: float
|
|
309
|
+
Aircraft maximum take-off weight, [:math:`kg`]
|
|
310
|
+
|
|
311
|
+
Returns
|
|
312
|
+
-------
|
|
313
|
+
ArrayOrFloat
|
|
314
|
+
Maximum allowable aircraft mass, [:math:`kg`]
|
|
315
|
+
"""
|
|
316
|
+
c_l_maxu = max_usable_lift_coefficient(mach_number, mach_num_des, c_l_do)
|
|
317
|
+
amass_max = (1.0 / constants.g) * (
|
|
318
|
+
c_l_maxu * 0.5 * constants.kappa * air_pressure * (mach_number**2) * wing_surface_area
|
|
319
|
+
)
|
|
320
|
+
return np.minimum(amass_max, amass_mtow)
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
def max_usable_lift_coefficient(
|
|
324
|
+
mach_number: ArrayOrFloat, mach_num_des: float, c_l_do: float
|
|
325
|
+
) -> ArrayOrFloat:
|
|
326
|
+
"""
|
|
327
|
+
Calculate maximum usable lift coefficient.
|
|
328
|
+
|
|
329
|
+
Parameters
|
|
330
|
+
----------
|
|
331
|
+
mach_number : ArrayOrFloat
|
|
332
|
+
Mach number at each waypoint
|
|
333
|
+
mach_num_des : float
|
|
334
|
+
Design optimum Mach number where the fuel mass flow rate is at a minimum.
|
|
335
|
+
c_l_do : float
|
|
336
|
+
Design optimum lift coefficient.
|
|
337
|
+
|
|
338
|
+
Returns
|
|
339
|
+
-------
|
|
340
|
+
ArrayOrFloat
|
|
341
|
+
Maximum usable lift coefficient.
|
|
342
|
+
"""
|
|
343
|
+
m_over_m_des = mach_number / mach_num_des
|
|
344
|
+
c_l_maxu_over_c_l_do = np.where(
|
|
345
|
+
m_over_m_des < 0.70,
|
|
346
|
+
1.8 + 0.160 * m_over_m_des - 1.085 * m_over_m_des**2,
|
|
347
|
+
13.272 - 42.262 * m_over_m_des + 49.883 * m_over_m_des**2 - 19.683 * m_over_m_des**3,
|
|
348
|
+
)
|
|
349
|
+
return c_l_maxu_over_c_l_do * c_l_do # type: ignore[return-value]
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
def minimum_mach_num(
|
|
353
|
+
air_pressure: ArrayOrFloat,
|
|
354
|
+
aircraft_mass: ArrayOrFloat,
|
|
355
|
+
atyp_param: PSAircraftEngineParams,
|
|
356
|
+
) -> ArrayOrFloat:
|
|
357
|
+
"""
|
|
358
|
+
Calculate minimum mach number to avoid stall.
|
|
359
|
+
|
|
360
|
+
Parameters
|
|
361
|
+
----------
|
|
362
|
+
air_pressure : ArrayOrFloat
|
|
363
|
+
Ambient pressure, [:math:`Pa`]
|
|
364
|
+
aircraft_mass : ArrayOrFloat
|
|
365
|
+
Aircraft mass at each waypoint, [:math:`kg`]
|
|
366
|
+
atyp_param : PSAircraftEngineParams
|
|
367
|
+
Extracted aircraft and engine parameters.
|
|
368
|
+
|
|
369
|
+
Returns
|
|
370
|
+
-------
|
|
371
|
+
ArrayOrFloat
|
|
372
|
+
Minimum mach number to avoid stall.
|
|
373
|
+
"""
|
|
374
|
+
|
|
375
|
+
def excess_mass(
|
|
376
|
+
mach_number: ArrayOrFloat,
|
|
377
|
+
air_pressure: ArrayOrFloat,
|
|
378
|
+
aircraft_mass: ArrayOrFloat,
|
|
379
|
+
mach_num_des: float,
|
|
380
|
+
c_l_do: float,
|
|
381
|
+
wing_surface_area: float,
|
|
382
|
+
) -> ArrayOrFloat:
|
|
383
|
+
amass_max = max_allowable_aircraft_mass(
|
|
384
|
+
air_pressure,
|
|
385
|
+
mach_number,
|
|
386
|
+
mach_num_des,
|
|
387
|
+
c_l_do,
|
|
388
|
+
wing_surface_area,
|
|
389
|
+
1e10, # clipped to this value which we want to ignore
|
|
390
|
+
)
|
|
391
|
+
return amass_max - aircraft_mass
|
|
392
|
+
|
|
393
|
+
return scipy.optimize.newton(
|
|
394
|
+
excess_mass,
|
|
395
|
+
args=(
|
|
396
|
+
air_pressure,
|
|
397
|
+
aircraft_mass,
|
|
398
|
+
atyp_param.m_des,
|
|
399
|
+
atyp_param.c_l_do,
|
|
400
|
+
atyp_param.wing_surface_area,
|
|
401
|
+
),
|
|
402
|
+
x0=np.full_like(air_pressure, 0.4),
|
|
403
|
+
x1=np.full_like(air_pressure, 0.5),
|
|
404
|
+
tol=1e-4,
|
|
405
|
+
)
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
def maximum_mach_num(
|
|
409
|
+
altitude_ft: ArrayOrFloat,
|
|
410
|
+
air_pressure: ArrayOrFloat,
|
|
411
|
+
aircraft_mass: ArrayOrFloat,
|
|
412
|
+
air_temperature: ArrayOrFloat,
|
|
413
|
+
theta: ArrayOrFloat,
|
|
414
|
+
atyp_param: PSAircraftEngineParams,
|
|
415
|
+
) -> ArrayOrFloat:
|
|
416
|
+
r"""
|
|
417
|
+
Return the maximum mach number at the current operating conditions.
|
|
418
|
+
|
|
419
|
+
The value returned will be the lesser of the maximum operational mach
|
|
420
|
+
number of the aircraft or the mach number obtainable at maximum thrust
|
|
421
|
+
|
|
422
|
+
Parameters
|
|
423
|
+
----------
|
|
424
|
+
altitude_ft : ArrayOrFloat
|
|
425
|
+
Altitude, [:math:`ft`]
|
|
426
|
+
air_pressure : ArrayOrFloat
|
|
427
|
+
Ambient pressure, [:math:`Pa`]
|
|
428
|
+
aircraft_mass : ArrayOrFloat
|
|
429
|
+
Aircraft mass at each waypoint, [:math:`kg`]
|
|
430
|
+
air_temperature : ArrayOrFloat
|
|
431
|
+
Array of ambient temperature, [:math: `K`]
|
|
432
|
+
theta : ArrayOrFloat
|
|
433
|
+
Climb (positive value) or descent (negative value) angle, [:math:`\deg`]
|
|
434
|
+
atyp_param : PSAircraftEngineParams
|
|
435
|
+
Extracted aircraft and engine parameters.
|
|
436
|
+
|
|
437
|
+
Returns
|
|
438
|
+
-------
|
|
439
|
+
ArrayOrFloat
|
|
440
|
+
Maximum mach number given thrust limiations.
|
|
441
|
+
"""
|
|
442
|
+
# Max speed ignoring thrust limits
|
|
443
|
+
mach_num_op_lim = max_mach_number_by_altitude(
|
|
444
|
+
altitude_ft,
|
|
445
|
+
air_pressure,
|
|
446
|
+
atyp_param.max_mach_num,
|
|
447
|
+
atyp_param.p_i_max,
|
|
448
|
+
atyp_param.p_inf_co,
|
|
449
|
+
)
|
|
450
|
+
|
|
451
|
+
return scipy.optimize.newton(
|
|
452
|
+
func=get_excess_thrust_available,
|
|
453
|
+
args=(air_temperature, air_pressure, aircraft_mass, theta, atyp_param),
|
|
454
|
+
x0=mach_num_op_lim,
|
|
455
|
+
x1=mach_num_op_lim - 0.01,
|
|
456
|
+
tol=1e-4,
|
|
457
|
+
).clip(max=mach_num_op_lim)
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
# ----------------
|
|
461
|
+
# Fuel flow limits
|
|
462
|
+
# ----------------
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
def fuel_flow_idle(
|
|
466
|
+
fuel_flow_idle_sls: float, altitude_ft: ArrayOrFloat
|
|
467
|
+
) -> npt.NDArray[np.floating]:
|
|
468
|
+
r"""Calculate minimum fuel mass flow rate at flight idle conditions.
|
|
469
|
+
|
|
470
|
+
Parameters
|
|
471
|
+
----------
|
|
472
|
+
fuel_flow_idle_sls : float
|
|
473
|
+
Fuel mass flow rate under engine idle and sea level static conditions, [:math:`kg \ s^{-1}`]
|
|
474
|
+
altitude_ft : ArrayOrFloat
|
|
475
|
+
Waypoint altitude, [:math: `ft`]
|
|
476
|
+
|
|
477
|
+
Returns
|
|
478
|
+
-------
|
|
479
|
+
npt.NDArray[np.floating]
|
|
480
|
+
Fuel mass flow rate at flight idle conditions, [:math:`kg \ s^{-1}`]
|
|
481
|
+
"""
|
|
482
|
+
x = altitude_ft / 10000.0
|
|
483
|
+
return fuel_flow_idle_sls * (1.0 - 0.178 * x + 0.0085 * x**2) # type: ignore[return-value]
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
def max_fuel_flow(
|
|
487
|
+
air_temperature: ArrayOrFloat,
|
|
488
|
+
air_pressure: ArrayOrFloat,
|
|
489
|
+
mach_number: ArrayOrFloat,
|
|
490
|
+
fuel_flow_max_sls: float,
|
|
491
|
+
flight_phase: npt.NDArray[np.uint8] | flight.FlightPhase,
|
|
492
|
+
) -> npt.NDArray[np.floating]:
|
|
493
|
+
r"""Correct maximum fuel mass flow rate that can be supplied by the engine.
|
|
494
|
+
|
|
495
|
+
Parameters
|
|
496
|
+
----------
|
|
497
|
+
air_temperature : ArrayOrFloat
|
|
498
|
+
Ambient temperature at each waypoint, [:math:`K`]
|
|
499
|
+
air_pressure : ArrayOrFloat
|
|
500
|
+
Ambient pressure, [:math:`Pa`]
|
|
501
|
+
mach_number : ArrayOrFloat
|
|
502
|
+
Mach number at each waypoint
|
|
503
|
+
fuel_flow_max_sls : float
|
|
504
|
+
Fuel mass flow rate at take-off and sea level static conditions, [:math:`kg \ s^{-1}`]
|
|
505
|
+
flight_phase : npt.NDArray[np.uint8] | flight.FlightPhase
|
|
506
|
+
Phase state of each waypoint.
|
|
507
|
+
|
|
508
|
+
Returns
|
|
509
|
+
-------
|
|
510
|
+
npt.NDArray[np.floating]
|
|
511
|
+
Maximum allowable fuel mass flow rate, [:math:`kg \ s^{-1}`]
|
|
512
|
+
"""
|
|
513
|
+
ff_max = jet.equivalent_fuel_flow_rate_at_cruise(
|
|
514
|
+
fuel_flow_max_sls,
|
|
515
|
+
air_temperature / constants.T_msl,
|
|
516
|
+
air_pressure / constants.p_surface,
|
|
517
|
+
mach_number,
|
|
518
|
+
)
|
|
519
|
+
|
|
520
|
+
# Account for descent conditions
|
|
521
|
+
# Assume `max_fuel_flow` at descent is not more than 30% of fuel_flow_max_sls
|
|
522
|
+
# We need this assumption because PTF files are not available in the PS model.
|
|
523
|
+
descent = flight_phase == flight.FlightPhase.DESCENT
|
|
524
|
+
ff_max[descent] = 0.3 * fuel_flow_max_sls
|
|
525
|
+
return ff_max
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
ICAO,Manufacturer,Type,Year_of_first_flight,n_engine,winglets,WV,MTOM_kg,MLM_kg,MZFM_kg,OEM_i_kg,MPM_i_kg,MZFM_MTOM,OEM_i_MTOM,MPM_i_MTOM,Sref_m2,span_m,bf_m,delta_2,cos_sweep,AR,psi_0,Xo,wing_constant,j_2,j_1,CL_do,etaL_D_do,nominal_F00_ISA_kn,mf_max_T_O_SLS_kg_s,mf_idle_SLS_kg_s,M_des,CT_des,eta_1,eta_2,Mec,Tec,FL_max,MMO,pi_max_pa,pinf_co_pa,nominal_opr,nominal_bpr,nominal_fpr
|
|
2
|
+
A20N,Airbus,A320-NEO,2014,2,yes,54,79000,66919,63644,43644,20000,0.794936709,0.551898734,0.243037975,122.4,35.1,3.59,0.02092207,0.906307767,10.06544118,7.519168898,0.956139347,0.786244088,0.872610625,0.075611461,0.597752236,6.437505219,255.7834783,1.771291826,0.179714609,0.7527,0.030225318,0.363162533,0.38526913,0.787080092,6.248203519,410,0.82,20882.78822,37618.41516,34.13434783,11.63652174,1.65
|
|
3
|
+
A21N,Airbus,A321-NEO,2016,2,yes,52,93500,77809,73982,48482,25500,0.780748663,0.513368984,0.267379679,122.4,35.27,3.95,0.025084952,0.906307767,10.16317729,8.080988052,0.973612104,0.776932809,0.873049689,0.077052255,0.626442739,6.502543201,255.7834783,1.771291826,0.179714609,0.7527,0.032774858,0.379556514,0.38526913,0.787080092,6.202228431,391.0104987,0.82,20882.78822,37618.41516,34.13434783,11.63652174,1.65
|
|
4
|
+
A306,Airbus,A300B4-600R,1983,2,no,0,170500,139777,130000,88565,46990,0.762463343,0.50568915,0.256774194,260,44.84,5.64,0.031641495,0.882947568,7.733175385,7.803846371,1.014875092,0.721487903,0.871400617,0.076160146,0.519478424,5.296827535,524.8533333,5.078666667,0.424,0.7527,0.030658862,0.364210924,0.537766667,0.683259556,5.336387723,410,0.82,20882.78822,37618.41516,31.52666667,4.933333333,1.65
|
|
5
|
+
A30B,Airbus,A300B4-200,1973,2,no,6,165000,135333,126000,88505,37495,0.751515152,0.536393939,0.215121212,260,44.83,5.64,0.031655613,0.882947568,7.729726538,8.774193537,1.036099444,0.711780698,0.86836702,0.07391802,0.548381029,4.318482734,466.2,4.8029,0.4,0.7527,0.034997635,0.321789379,0.54535,0.674344,4.93205278,390,0.82,20882.78822,37618.41516,26.47,4.6,1.65
|
|
6
|
+
A310,Airbus,A310-200,1982,2,no,8,138600,120682,111136,79186,31950,0.808080808,0.571479076,0.236601732,219,43.89,5.64,0.033026081,0.882947568,8.796036986,8.375562451,1.013898087,0.743809599,0.868659927,0.073287068,0.557549017,5.65582168,443.525,4.2895,0.3842,0.772,0.032940786,0.383837958,0.53568125,0.685649,5.373550789,410,0.84,21865.62405,37237.40235,26.3725,5.025,1.65
|
|
7
|
+
A313,Airbus,A310-300,1982,2,no,0,150000,124000,114500,78590,35910,0.753333333,0.51598,0.237353333,219,43.89,5.64,0.033026081,0.882947568,8.796036986,8.212622174,1.024582936,0.737571745,0.869516104,0.074562862,0.563576336,5.602548625,480.258,4.5104,0.3946,0.772,0.032853327,0.375278919,0.5369325,0.68421856,5.364267817,410,0.84,21865.62405,37237.40235,28.184,4.97,1.65
|
|
8
|
+
A318,Airbus,A318-100,2002,2,no,5,68000,56667,53667,38740,14927,0.779411765,0.570852941,0.208558824,122.4,34.1,3.95,0.026835855,0.906307767,9.500081699,7.471444005,0.995441823,0.753958954,0.870956053,0.075008678,0.563947374,5.333478382,199.2533333,2.060666667,0.211333333,0.7527,0.030936248,0.340355901,0.532458333,0.689288889,6.031933509,410,0.82,20882.78822,37618.41516,25.43333333,5.166666667,1.65
|
|
9
|
+
A319,Airbus,A319-100,1995,2,no,6,73500,61857,57393,39776,17617,0.795918367,0.54047619,0.255442177,122.4,34.1,3.95,0.026835855,0.906307767,9.500081699,7.700920319,0.995030706,0.754823537,0.870775437,0.074774133,0.568723265,5.098135499,212.4783333,1.987166667,0.212,0.7527,0.031550436,0.328,0.521633125,0.70104451,5.849202578,410,0.82,20882.78822,37618.41516,25.33833333,5.6425,1.65
|
|
10
|
+
A320,Airbus,A320-200,1987,2,no,0,73500,64875,61200,41295,19905,0.823129252,0.561142857,0.261986395,122.4,34.1,3.95,0.026835855,0.906307767,9.500081699,8.395287612,1.006597506,0.749584382,0.868903458,0.073191605,0.59039895,5.259100576,224.638,2.1462,0.2239,0.7527,0.034652548,0.358,0.5218265,0.70084087,5.588929572,410,0.82,20882.78822,37618.41516,26.909,5.634,1.65
|
|
11
|
+
A321,Airbus,A321-100,1993,2,no,8,89000,74313,70313,46908,23405,0.803370787,0.52647191,0.276898876,122.4,34.15,3.95,0.02675733,0.906307767,9.527961601,8.631216449,1.023748365,0.740171309,0.869023229,0.074059188,0.606338494,4.98823425,269.3142857,2.690571429,0.246285714,0.7527,0.0358593,0.342780897,0.52832,0.693868454,5.741120348,391.0006562,0.82,20882.78822,37618.41516,31.16285714,5.348571429,1.65
|
|
12
|
+
A332,Airbus,A330-200,1992,2,no,52,233000,181333,168593,116874,51719,0.729613734,0.501459227,0.228154506,361.6,60.3,5.64,0.017496597,0.868631486,10.05555863,6.691783708,0.986539447,0.762475042,0.872047153,0.076050268,0.528141489,6.875896605,609.465,5.93725,0.4895,0.786475,0.02499242,0.37,0.535055625,0.68636059,5.728484511,410,0.86,22875.41229,36864.52979,34.20375,5.0525,1.65
|
|
13
|
+
A333,Airbus,A330-300,1992,2,no,52,233000,183526,171842,119965,51877,0.751072961,0.515587983,0.235484979,361.6,60.3,5.64,0.017496597,0.868631486,10.05555863,6.899510103,0.989985236,0.76102049,0.871552208,0.075532661,0.535352593,7.128484765,604.4625,5.839875,0.49225,0.786475,0.025831756,0.391045891,0.534117188,0.687423438,5.727838461,410,0.86,22875.41229,36864.52979,33.67251837,5.09375,1.65
|
|
14
|
+
A338,Airbus,A330-800,2018,2,no,,242000,186000,174769,132000,42769,0.719008264,0.545454545,0.173553719,374,64,5.64,0.015532031,0.866025375,10.95187166,6.212990529,0.958877916,0.780583541,0.873631599,0.077578309,0.530216374,8.328327417,655.6,4.956,0.482,0.786,0.022900369,0.400414909,0.44525,0.7634,6.246060604,414.5,0.86,22875.41229,36864.52979,45.4,9,1.65
|
|
15
|
+
A339,Airbus,A330-900,2017,2,no,,242000,191000,179667,133667,46000,0.747933884,0.55785124,0.190082645,374,64,5.64,0.015532031,0.866025375,10.95187166,6.46325095,0.96246813,0.779169206,0.873192286,0.076918011,0.539469135,8.110705591,655.6,4.956,0.482,0.786,0.023887738,0.399788387,0.44525,0.7634,6.232485988,414.5,0.86,22875.41229,36864.52979,45.4,9,1.65
|
|
16
|
+
A342,Airbus,A340-200,1991,4,no,1,257000,182000,170000,125242,44758,0.657587549,0.487322957,0.170264591,361.6,60.3,5.64,0.017496597,0.868631486,10.05555863,7.076588203,0.994839196,0.759754196,0.872370296,0.076725978,0.551202388,6.689573974,579.4666667,5.516,0.4824,0.786475,0.026833302,0.367,0.497575,0.724576,5.643739289,415,0.86,22875.41229,36864.52979,29.95,6.7,1.65
|
|
17
|
+
A343,Airbus,A340-300,1991,4,no,1,257000,189895,178579,125242,53337,0.677042802,0.487322957,0.189719844,361.6,60.3,5.64,0.017496597,0.868631486,10.05555863,7.383954096,1.000285382,0.7573768,0.871649368,0.076010212,0.561474717,6.610070249,579.4666667,5.516,0.4824,0.786475,0.028082741,0.372580342,0.497575,0.724576,5.663601105,415,0.86,22875.41229,36864.52979,29.95,6.7,1.65
|
|
18
|
+
A345,Airbus,A340-500,2002,4,no,1,372000,241875,226750,170370,56380,0.61827957,0.457983871,0.160295699,437.3,63.45,5.64,0.015802469,0.856267054,9.206271438,6.730844314,0.984937415,0.761952208,0.873638932,0.078182371,0.511999654,6.777298015,1036.4,8.786666667,0.92,0.796125,0.024513506,0.361959064,0.479375,0.74,5.668646964,414.5013123,0.86,22875.41229,36864.52979,36.17666667,7.5,1.65
|
|
19
|
+
A346,Airbus,A340-600,2001,4,no,1,368000,260800,246800,176364,70436,0.66576087,0.47925,0.18651087,437.3,63.45,5.64,0.015802469,0.856267054,9.206271438,7.056855481,0.990652069,0.759481269,0.872973519,0.077394212,0.523156024,6.815977225,1050.8,8.96,0.92,0.796125,0.025814567,0.37517065,0.479375,0.74,5.68183304,415,0.86,22875.41229,36864.52979,36.67,7.5,1.65
|
|
20
|
+
A359,Airbus,A350-900,2013,2,no,9,275000,206500,194550,142800,51750,0.711636364,0.533090909,0.178545455,445,64.75,5.96,0.016945054,0.848048064,9.421488764,6.140290359,0.962361567,0.791413177,0.873943906,0.078227432,0.493332851,8.125436058,758,5.638,0.582,0.82025,0.022496843,0.404691496,0.4450225,0.76353184,6.122466226,431.0006562,0.89,24441.49186,36319.05391,41.095,9.01,1.65
|
|
21
|
+
A35K,Airbus,A350-1000,2016,2,yes,2,316000,235500,222500,155000,67500,0.705696203,0.493670886,0.212025316,465,64.75,5.96,0.016945054,0.848048064,9.016263441,6.183084792,0.966883665,0.788899107,0.87362679,0.077787748,0.499564827,8.147693431,873.4,7.014,0.65,0.82025,0.022347631,0.399824282,0.46709,0.74925344,6.172981137,414.5,0.89,24441.49186,36319.05391,48.57,8.04,1.65
|
|
22
|
+
A388,Airbus,A380-800,2005,4,no,2,569000,391308,367000,270148,96852,0.643233743,0.483304042,0.159929701,845,79.8,7.142,0.016020051,0.866025375,7.536142012,6.132045576,0.966638255,0.794400187,0.875962464,0.081840299,0.446446426,7.498481785,1350.653333,10.56933333,1.072,0.82025,0.021624953,0.398677354,0.470199167,0.746999716,5.869080111,431.0006562,0.89,24441.49186,36319.05391,38.07666667,7.903333333,1.65
|
|
23
|
+
B37M,Boeing,B737 MAX 7,2018,2,yes,,80285,64977,61847,42606,19241,0.783620851,0.523547363,0.260073488,121.875,33.26,3.76,0.02556002,0.906307767,9.076739282,7.585063721,0.975506932,0.778868312,0.872091922,0.075686978,0.572742665,6.295944315,247.6,2.0025,0.189,0.763285024,0.030537405,0.379940115,0.458445,0.75520576,6.283950827,410,0.82,20882.78822,37618.41516,40.14,8.42,1.65
|
|
24
|
+
B38M,Boeing,B737 MAX 8/8-200,2016,2,yes,,82644,68552,65196,43831.6505,21364.3495,0.798025265,0.545375345,0.25264992,121.875,33.26,3.76,0.02556002,0.906307767,9.076739282,7.869374698,0.97906074,0.77729995,0.871570728,0.075098953,0.581003295,6.209094863,247.6,2.0025,0.189,0.763285024,0.031631133,0.382601025,0.458445,0.75520576,6.256185757,410,0.82,20882.78822,37618.41516,40.14,8.42,1.65
|
|
25
|
+
B39M,Boeing,B737 MAX 9,2017,2,yes,,88314,71864,68507,44735.68,23771.32,0.803802342,0.567373236,0.236429105,121.875,33.26,3.76,0.02556002,0.906307767,9.076739282,8.05844544,0.994198601,0.76872365,0.87201018,0.076256786,0.598926212,6.239926908,247.6,2.0025,0.189,0.763285024,0.033089092,0.39018692,0.458445,0.75520576,6.236986266,410,0.82,20882.78822,37618.41516,40.14,8.42,1.65
|
|
26
|
+
B3XM,Boeing,B737 MAX 10,2018,2,yes,,89765,74087,70730,46120,24610,0.787946304,0.513785997,0.274160307,121.875,33.26,3.76,0.02556002,0.906307767,9.076739282,8.179,0.995847683,0.767985398,0.871784191,0.076029992,0.606768804,6.187944799,247.6,2.0025,0.189,0.763285024,0.033556498,0.39018692,0.458445,0.75520576,6.237935869,410,0.82,20882.78822,37618.41516,40.14,8.42,1.65
|
|
27
|
+
B712,Boeing,B717-200,1998,2,no,HGW,54884,47970,44452,30833,13619,0.83058815,0.566121274,0.264466876,92.75,28.4,3.4,0.028664947,0.906307767,8.69606469,8.722339782,1.035797278,0.684750239,0.867306999,0.07298002,0.593541399,4.555779693,179.025,1.8155,0.201,0.7,0.037603724,0.350583851,0.545179375,0.67454851,5.998301413,370.9973753,0.82,20882.78822,37618.41516,30.4725,4.6075,1.65
|
|
28
|
+
B722,Boeing,727-200,1967,2,no,0,83820,71600,64350,45062,19288,0.758291577,0.529587211,0.228704366,157.9,32.92,3.76,0.026090718,0.848048064,6.863371754,7.901954881,1.057801221,0.686729187,0.86502235,0.07205027,0.499213735,3.689723246,203.75625,3.4058625,0.41835,0.77,0.03284992,0.286,0.626595938,0.556514178,4.631875613,420,0.9,24977.42649,36140.62533,16.539375,1.02875,1.65
|
|
29
|
+
B732,Boeing,B737-200,1967,2,no,5,52390,46131,41731,28243,13488,0.822523382,0.517751479,0.304771903,99,28.35,3.76,0.035180302,0.906307767,8.118409091,8.406144658,1.040134437,0.677684157,0.866573271,0.072538149,0.55647915,3.340772824,137.0738462,2.302092308,0.280215385,0.7,0.035879744,0.26934358,0.626585,0.556532787,4.655496203,370,0.82,20882.78822,37618.41516,16.59230769,1.029230769,1.65
|
|
30
|
+
B733,Boeing,B737-300,1984,2,no,3,61236,51982,48081,32616,15465,0.788882357,0.537330982,0.251551375,102,28.9,3.76,0.033854001,0.906307767,8.188333333,9.200303497,1.023913881,0.715234635,0.867001262,0.072169037,0.577795554,4.096979487,187.3,2.014,0.234,0.728575,0.038442568,0.322802793,0.533975,0.687584,5.504887402,390,0.82,20882.78822,37618.41516,23.335,5.1,1.65
|
|
31
|
+
B734,Boeing,B737-400,1988,2,no,6,68039,55792,52465,33416,19049,0.779993827,0.494466409,0.285527418,102.5,28.9,3.76,0.033854001,0.906307767,8.148390244,8.898192984,1.032441891,0.710077823,0.868386618,0.073800023,0.579192045,4.13010135,190.1266667,2.054666667,0.236,0.728575,0.037719014,0.318517837,0.533975,0.687584,5.587042978,370,0.82,20882.78822,37618.41516,23.63333333,5.1,1.65
|
|
32
|
+
B735,Boeing,B737-500,1989,2,no,3,60555,49895,46538,31312,15226,0.76779787,0.517083643,0.250714227,103.7,28.9,3.76,0.033854001,0.906307767,8.054098361,8.33451025,1.009337993,0.721164574,0.869653399,0.074113442,0.550008118,4.05463838,187.3,2.014,0.234,0.728575,0.034586216,0.301940508,0.533975,0.687584,5.694014409,370,0.82,20882.78822,37618.41516,23.335,5.1,1.65
|
|
33
|
+
B736,Boeing,B737-600,1997,2,no,3,65544,54827,51634,36378,15256,0.792383742,0.555016477,0.237367265,124.6,34.3,3.76,0.024033523,0.906307767,9.442134831,7.424658581,0.99420637,0.75916017,0.871081977,0.0751116,0.56354659,5.269028449,189.9709091,1.880909091,0.197454545,0.757525,0.030955608,0.335074122,0.527356818,0.69491914,5.900578607,410,0.82,20882.78822,37618.41516,23.16272727,5.390909091,1.65
|
|
34
|
+
B737,Boeing,B737-700,1997,2,no,3,70080,58241,54839,37648,17191,0.787699772,0.537214612,0.25048516,124.6,34.3,3.76,0.024033523,0.906307767,9.442134831,7.610623423,0.997092665,0.757625964,0.870727093,0.074802808,0.567363946,5.021956077,214.1278261,2.175826087,0.209652174,0.757525,0.031490511,0.323004185,0.530809783,0.691125898,5.90211253,410,0.82,20882.78822,37618.41516,25.6326087,5.239130435,1.65
|
|
35
|
+
B738,Boeing,B737-800,1997,2,no,3,79016,65665,62037,41413,20624,0.780715298,0.524109041,0.256606257,124.6,34.3,3.76,0.024033523,0.906307767,9.442134831,8.181516743,1.00523362,0.753742328,0.86950188,0.073769983,0.581267312,4.983308444,233.3695652,2.432434783,0.218695652,0.757525,0.033462541,0.332681166,0.533381522,0.688252824,5.90333496,410,0.82,20882.78822,37618.41516,27.74869565,5.126086957,1.65
|
|
36
|
+
B739,Boeing,B737-900ER,2006,2,no,2,85139,68856,65227,44677,20550,0.795416906,0.524741893,0.270675014,124.6,34.32,3.76,0.024005521,0.906307767,9.453149278,7.92834468,1.013309441,0.748758647,0.870784513,0.075460257,0.585041361,5.003070394,233.3695652,2.432434783,0.218695652,0.757525,0.032950004,0.326763054,0.533381522,0.688252824,6.102506148,410,0.82,20882.78822,37618.41516,27.74869565,5.126086957,1.65
|
|
37
|
+
B742,Boeing,B747-200B,1971,4,no,4,371900,269660,238780,173032,65748,0.642054316,0.473164829,0.168889486,511,59.64,6.5,0.023756444,0.793353296,6.960723288,7.019056156,1.038495569,0.69161267,0.867976442,0.073665148,0.45831945,5.337545419,882.3333333,9.1104,0.89784,0.81,0.025930712,0.338481202,0.541406667,0.679024462,4.612144185,450,0.9,24977.42649,36140.62533,24.73333333,4.773333333,1.65
|
|
38
|
+
B743,Boeing,B747-300,1980,4,no,0,377800,258060,243363,176533,66830,0.642218105,0.462731604,0.179486501,511,59.64,6.5,0.023756444,0.782608111,6.960723288,6.881751548,1.041627795,0.68253174,0.867287749,0.073197605,0.452943745,5.374951837,898.8126316,9.187157895,0.909452632,0.81,0.025344181,0.337122346,0.541757895,0.678611479,5.0506812,450,0.9,24977.42649,36140.62533,25.81736842,4.757894737,1.65
|
|
39
|
+
B744,Boeing,B747-400,1985,4,no,5,396894,275603,244184,179174,65010,0.620001814,0.450387257,0.169614557,547,64.44,6.5,0.020349121,0.793353296,7.591432541,6.688263979,1.029069691,0.698340832,0.868929586,0.074170378,0.464992693,6.027234116,1021.254118,9.786509804,0.822909804,0.81,0.024511914,0.355811516,0.537298284,0.683798564,5.296210572,450,0.92,26070.46918,35788.4714,30.57901961,4.953921569,1.65
|
|
40
|
+
B748,Boeing,B747-8F,2010,4,no,1,442253,345638,329308,197131,132177,0.743587946,0.445742595,0.297845351,594,68.4,6.5,0.018061113,0.793353296,7.876363636,6.248755182,0.997894651,0.732488325,0.872320594,0.076747175,0.457551278,7.386886339,1199.22,9.808,0.87,0.8299,0.022440249,0.395291631,0.46765875,0.74884564,5.888619001,421.0006562,0.9,24977.42649,36140.62533,42.975,8.015,1.65
|
|
41
|
+
B752,Boeing,B757-200,1982,2,no,4,113400,90890,83820,59740,24080,0.735890653,0.547619048,0.188271605,189,38.06,3.76,0.019519474,0.906307767,7.664357672,7.102482242,0.985678149,0.770287681,0.873576345,0.078107881,0.496548327,5.358463362,357.962,3.6404,0.3454,0.772,0.027960973,0.347178893,0.54209675,0.678212322,5.37738391,420,0.86,22875.41229,36864.52979,26.909,4.743,1.65
|
|
42
|
+
B753,Boeing,B757-300,1998,2,no,2,122470,101610,95260,64455,30805,0.777904793,0.527312811,0.250591982,189,38.06,3.76,0.019519474,0.906307767,7.664357672,7.593716886,1.005262025,0.759572707,0.87301803,0.077746352,0.522123205,5.260668861,357.962,3.6404,0.3454,0.772,0.030631737,0.355109179,0.54209675,0.678212322,5.884200369,430,0.86,22875.41229,36864.52979,26.909,4.743,1.65
|
|
43
|
+
B762,Boeing,B767-200ER,1984,2,no,6,179169,128820,116347,82285,34062,0.658227707,0.459772617,0.19845509,283.3,47.57,5.03,0.022361435,0.852640133,7.987662902,6.962665875,1.012922549,0.718636663,0.871373991,0.076077449,0.50014418,5.891145984,504.4066667,4.8587,0.407266667,0.772,0.027161252,0.367680713,0.537596042,0.683456066,5.407506184,430,0.86,22875.41229,36864.52979,30.22716667,4.940833333,1.65
|
|
44
|
+
B763,Boeing,B767-300,1995,2,no,2,158758,140614,129955,87856,42099,0.795544162,0.542139609,0.253404553,283.3,47.57,5.03,0.022361435,0.852640133,7.987662902,6.296852184,0.988567215,0.730450667,0.872804122,0.077119108,0.469638583,6.001519547,504.4066667,4.8587,0.407266667,0.772,0.02403592,0.353,0.537596042,0.683456066,5.537312075,431.0006562,0.86,22875.41229,36864.52979,30.22716667,4.940833333,1.65
|
|
45
|
+
B764,Boeing,B767-400ER,1999,2,no,1,204116,158757,149685,103510,46175,0.733333007,0.505335202,0.227997805,283.3,51.92,5.03,0.018771397,0.852640133,9.515306742,7.202171898,1.015950634,0.72271456,0.869996123,0.074730057,0.543871305,6.148190272,512.7957895,4.861157895,0.399794737,0.772,0.027844828,0.361414229,0.533975,0.687584,5.831334305,450,0.86,22875.41229,36864.52979,30.55605263,5.1,1.65
|
|
46
|
+
B772,Boeing,B777-200,1994,2,no,6,286900,203922.6667,192735,135692.6667,57042.33333,0.679783897,0.47263855,0.207145347,427.8,60.93,6.2,0.020708613,0.851726902,8.678038569,6.461822217,0.987569999,0.767369197,0.873764241,0.078399473,0.495253823,6.781321287,781.2292857,6.885785714,0.5735,0.8106,0.024180523,0.367,0.490319375,0.730970427,5.71612393,431.0006562,0.89,24441.49186,36319.05391,37.69964286,7.018928571,1.65
|
|
47
|
+
B773,Boeing,B777-300,1997,2,no,4,299370,237680,224530,159300,65230,0.750008351,0.533019341,0.21698901,427.8,60.93,6.2,0.020708613,0.851726902,8.678038569,7.06941142,1.002684301,0.759514113,0.872187708,0.076713703,0.51471757,6.864081938,744.7577778,6.869444444,0.561,0.8106,0.026557394,0.393961604,0.507218472,0.715573354,5.802646414,431.0006562,0.89,24441.49186,36319.05391,36.31444444,6.276111111,1.65
|
|
48
|
+
B77L,Boeing,B777-200LR,2005,2,no,1,347450,223168,209106,145150,63956,0.601833357,0.417757951,0.184075407,427.8,64.8,6.2,0.018308947,0.851726902,9.81542777,6.503715019,0.985544142,0.772137202,0.873492551,0.077988704,0.519417863,7.585117015,1006.5,9.01,0.75,0.8106,0.02389309,0.386398306,0.4859725,0.73464544,5.820183704,431.0006562,0.89,24441.49186,36319.05391,40.985,7.21,1.65
|
|
49
|
+
B77W,Boeing,B777-300ER,2002,2,no,1,351530,251290,237683,167829,69854,0.676110147,0.4773988,0.198711348,427.8,64.8,6.2,0.018308947,0.851726902,9.81542777,7.159075436,0.997868415,0.76653828,0.872013573,0.076372489,0.541566421,7.183146325,1027.8,9.38,0.76,0.8106,0.026449404,0.388746118,0.48893,0.73215776,5.59316908,431.0006562,0.89,24441.49186,36319.05391,42.24,7.08,1.65
|
|
50
|
+
B788,Boeing,B787-8,2009,2,no,1,227930,172365,161025,120000,41025,0.706466898,0.516417321,0.190049577,377,60.12,5.77,0.018422293,0.846193133,9.587306101,6.382579903,0.968083144,0.783757191,0.873178246,0.077083447,0.508399177,8.025698576,633.0491892,4.822891892,0.453081081,0.815425,0.023810747,0.411614512,0.445062466,0.763508702,6.062664522,431.0006562,0.9,24977.42649,36140.62533,42.93635135,9.008243243,1.65
|
|
51
|
+
B789,Boeing,B787-9,2013,2,no,1,254011,192776,181436,129000,52436,0.714287964,0.507261497,0.207026467,377,60.12,5.77,0.018422293,0.846193133,9.587306101,6.477888019,0.968258434,0.783684365,0.873156144,0.077053182,0.508801657,8.027179776,633.0491892,4.822891892,0.453081081,0.815425,0.023856026,0.412147079,0.445062466,0.763508702,6.129298314,431.0334646,0.9,24977.42649,36140.62533,42.93635135,9.008243243,1.65
|
|
52
|
+
B78X,Boeing,B787-10,2017,2,no,,254011,201848,192776,135500,57276,0.758927763,0.533441465,0.225486298,377,60.12,5.77,0.018422293,0.846193133,9.587306101,6.607025807,0.970886833,0.78231171,0.872881338,0.076703182,0.512787007,7.704002339,688.56,5.332568421,0.474731579,0.815425,0.024318041,0.400356131,0.448435,0.76152064,6.188500149,411,0.9,24977.42649,36140.62533,46.44,8.86,1.65
|
|
53
|
+
BCS1,Airbus,A220-100,2013,2,yes,,60781,52844,50802,35702,15100,0.805959099,0.579490301,0.226468798,115,32.5,3.505,0.023261586,0.898794024,9.184782609,7.341279884,0.960595004,0.776436689,0.872616965,0.075848076,0.575972879,6.185990497,200.8,1.438,0.148,0.753623188,0.030392966,0.364818967,0.3931525,0.78523744,6.230436775,410,0.82,20882.78822,37618.41516,36.1,11.29,1.65
|
|
54
|
+
BCS3,Airbus,A220-200,2015,2,yes,,70896,61008,58060,39360,18700,0.818946062,0.523047845,0.295898217,115,32.5,3.505,0.023261586,0.898794024,9.184782609,7.724262518,0.963925925,0.775119863,0.872128778,0.075195994,0.585019236,6.055724131,200.8,1.438,0.148,0.753623188,0.031581624,0.365365479,0.3931525,0.78523744,6.261141077,410,0.82,20882.78822,37618.41516,36.1,11.29,1.65
|
|
55
|
+
CRJ9,Bombardier,CRJ-9,1999,2,yes,0,38329,33345,32092,21845,10247,0.837277257,0.557019489,0.280257768,69,22.62,2.69,0.028284555,0.898794024,7.415426087,7.940977915,1.011391814,0.736978861,0.869436756,0.073972647,0.549943744,4.185393752,120.9433333,1.326366667,0.129766667,0.7527,0.034336494,0.304067923,0.5332925,0.68835296,5.960740978,410,0.85,22367.12483,37049.99171,23.44833333,5.13,1.65
|
|
56
|
+
DC93,Boeing,DC-9-32,1967,2,no,0,48988,44906,39463,25789,13674,0.805564628,0.526435045,0.279129583,93,28.44,3.35,0.027749836,0.913545439,8.697135484,7.952009382,1.029517002,0.718504638,0.868319059,0.073625769,0.565164551,3.47919413,130.48,2.134,0.2732,0.7334,0.034308395,0.2565,0.626643333,0.556433529,4.641949038,370,0.84,21865.62405,37237.40235,16.31,1.026666667,1.65
|
|
57
|
+
E135,Embraer,EMB-135LR,1995,2,no,0,20000,18500,16000,11501,4499,0.79995,0.575,0.22495,51.18,20.04,2.25,0.025211553,0.923879516,7.846846424,8.018356069,1.012322431,0.708748302,0.869299248,0.073869708,0.562009635,3.431268437,66.1,0.7178,0.0898,0.70445,0.036968374,0.27276541,0.5405725,0.68000224,5.917521821,370,0.78,18996.45555,38407.92089,17.22,4.81,1.65
|
|
58
|
+
E145,Embraer,EMB-145LR,1995,2,no,0,22000,19300,17900,12114,5786,0.813636364,0.550636364,0.263,51.18,20.04,2.25,0.025211553,0.923879516,7.846846424,8.379769784,1.017505025,0.706378777,0.868482629,0.073274618,0.569734872,3.597812118,74.32,0.8244,0.095,0.70445,0.038245748,0.292084412,0.54262,0.67759456,5.917909369,370,0.78,18996.45555,38407.92089,19.06,4.72,1.65
|
|
59
|
+
E170,Embraer,EMB-170LR,2002,2,yes,0,37200,32800,29600,20500,9100,0.801075269,0.556451613,0.244623656,72.72,25.3,3.15,0.031003453,0.923879516,8.802117712,8.103,1.005217924,0.744171061,0.869283909,0.073532873,0.598468911,4.066065719,120.114,1.31516,0.12908,0.7334,0.035430036,0.283999174,0.5332925,0.68835296,6.056766771,410,0.82,20882.78822,37618.41516,23.314,5.13,1.65
|
|
60
|
+
E190,Embraer,EMB-190STD,2004,2,yes,,47790,43000,40800,27900,12900,0.853735091,0.583804143,0.269930948,86,27.71,2.74,0.019555011,0.923879516,8.928419767,7.898386381,0.99968373,0.769679725,0.870246567,0.074352897,0.594043088,4.6941615,167.4,1.74,0.176,0.757525,0.033846101,0.310223835,0.5342025,0.68732704,6.07089511,410,0.82,20882.78822,37618.41516,27.3,5.09,1.65
|
|
61
|
+
E195,Embraer,EMB-195STD,2004,2,yes,0,48790,45000,42500,28700,13800,0.871080139,0.588235294,0.282844845,92.53,27.73,3,0.023408456,0.923879516,8.310309089,8.12816248,1.003277121,0.765946572,0.870141166,0.074388188,0.583581105,4.471913613,161.9811765,1.671294118,0.172823529,0.757525,0.034908937,0.310281044,0.5342025,0.68732704,6.07089511,410,0.82,20882.78822,37618.41516,26.53529412,5.09,1.65
|
|
62
|
+
E290,Embraer,E190-E2,2016,2,no,,56400,49050,46700,33000,13700,0.828014184,0.585106383,0.242907801,110,33.72,3,0.0158306,0.923879516,10.33671273,6.992079637,0.949032729,0.805612509,0.873781408,0.077556026,0.57787765,6.546016199,185.58,1.3,0.14,0.758,0.029180534,0.367869793,0.3861,0.786904,6.267767387,410,0.82,20882.78822,37618.41516,33.27,11.6,1.65
|
|
63
|
+
E295,Embraer,E195-E2,2017,2,no,,61500,54000,51850,35750,16100,0.843089431,0.581300813,0.261788618,110,35.12,3,0.014593635,0.923879516,11.21285818,7.518186583,0.955695668,0.804622027,0.872687085,0.075726997,0.613335059,6.348908893,200.6,1.42,0.14,0.758,0.031226955,0.360286236,0.39156,0.78564064,6.281663673,410,0.82,20882.78822,37618.41516,35.76,11.36,1.65
|
|
64
|
+
E75L,Embraer,E170-200 (long wing),2002,2,yes,,40370,34100,32000,21800,10200,0.542234332,0.542234332,0.25043349,83,25,3,0.0288,0.923879516,7.530120482,7.971,1.001508411,0.741368946,0.870818124,0.075084185,0.556390672,3.87871406,120.114,1.31516,0.12908,0.733,0.034519925,0.283998994,0.5332925,0.68835296,6.057293054,410,0.82,20882.78822,37618.41516,23.314,5.13,1.65
|
|
65
|
+
E75S,Embraer,E170-200 (short wing),2002,2,yes,,40370,34100,32000,21800,10200,0.542234332,0.542234332,0.25043349,83,25,3,0.0288,0.923879516,7.530120482,7.845214774,0.999386883,0.742337704,0.871132376,0.075370291,0.552407435,3.91652483,120.114,1.31516,0.12908,0.733,0.033926186,0.283867353,0.5332925,0.68835296,6.057293054,410,0.82,20882.78822,37618.41516,23.314,5.13,1.65
|
|
66
|
+
GLF5,Gulfstream,G-550,1995,2,no,0,41277,34156,24721,21909,2812,0.571432032,0.530779853,0.040652179,105.56,28.5,2.5,0.015389351,0.906307767,7.694676014,6.702319588,0.99471301,0.76525366,0.872752056,0.077203567,0.508157359,5.5011112,137.54,1.494,0.166,0.772,0.029344031,0.367,0.5578625,0.658856,5.849906518,510,0.885,24176.14834,36408.88368,24.95,4.05,1.65
|
|
67
|
+
MD82,Boeing,MD-82,1981,2,no,0,67812,58967,55338,35369,19969,0.816050257,0.521574353,0.294475904,112.3,32.85,3.35,0.020799307,0.923879516,9.60928317,8.955934197,1.034594007,0.714688042,0.866072122,0.0718649,0.612313936,3.987672179,185.48,2.621,0.2743,0.72,0.037613802,0.299388919,0.610813125,0.58259779,5.437458322,370,0.84,21865.62405,37237.40235,19.5075,1.7225,1.65
|
|
68
|
+
MD83,Boeing,MD-83,1984,2,no,0,72575,63276,55338,36145,19193,0.762493972,0.498036514,0.264457458,112.3,32.85,3.35,0.020799307,0.923879516,9.60928317,8.85605389,1.046265541,0.708621624,0.866902498,0.073058432,0.62175399,3.897539841,193.04,2.708,0.2688,0.72,0.037907506,0.290478105,0.611325,0.581776,5.567055426,370,0.84,21865.62405,37237.40235,20.27,1.7,1.65
|
|
69
|
+
RJ1H,BAESystems,RJ-100,1987,4,no,0,44225,40142,37421,25640,11781,0.846150367,0.579762578,0.26638779,77.3,26.34,3.5,0.035312994,0.965925819,8.975363519,9.769273679,1.023211827,0.681862045,0.868995494,0.074011851,0.636811428,3.247264845,124,1.4312,0.1812,0.65,0.042741457,0.274318931,0.533975,0.687584,5.677433606,350,0.734,16954.77401,39369.19067,13,5.1,1.65
|