pyBADA 0.1.0__py3-none-any.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.
- pyBADA/TCL.py +8731 -0
- pyBADA/__init__.py +0 -0
- pyBADA/aircraft/BADA3/DUMMY/BADA.GPF +113 -0
- pyBADA/aircraft/BADA3/DUMMY/BZJT__.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/BZJT__.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/BZJT__.PTD +139 -0
- pyBADA/aircraft/BADA3/DUMMY/BZJT__.PTF +73 -0
- pyBADA/aircraft/BADA3/DUMMY/GA____.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/GA____.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/GA____.PTD +71 -0
- pyBADA/aircraft/BADA3/DUMMY/GA____.PTF +39 -0
- pyBADA/aircraft/BADA3/DUMMY/J2H___.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/J2H___.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/J2H___.PTD +131 -0
- pyBADA/aircraft/BADA3/DUMMY/J2H___.PTF +69 -0
- pyBADA/aircraft/BADA3/DUMMY/J2M___.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/J2M___.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/J2M___.PTD +123 -0
- pyBADA/aircraft/BADA3/DUMMY/J2M___.PTF +65 -0
- pyBADA/aircraft/BADA3/DUMMY/J4H___.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/J4H___.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/J4H___.PTD +139 -0
- pyBADA/aircraft/BADA3/DUMMY/J4H___.PTF +73 -0
- pyBADA/aircraft/BADA3/DUMMY/ReleaseSummary +35 -0
- pyBADA/aircraft/BADA3/DUMMY/SYNONYM.NEW +155 -0
- pyBADA/aircraft/BADA3/DUMMY/TP2M__.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/TP2M__.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/TP2M__.PTD +99 -0
- pyBADA/aircraft/BADA3/DUMMY/TP2M__.PTF +53 -0
- pyBADA/aircraft/BADA4/DUMMY/ACM_BADA4.xsd +556 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.ATF +106 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.xml +244 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTD +182 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTF +41 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTD +182 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTF +41 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.ATF +191 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.xml +540 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTD +218 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTF +49 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTD +218 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTF +49 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/LRC.dat +38 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/MEC.dat +58 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/MRC.dat +38 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/OPTALT.dat +37 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.ATF +204 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.xml +648 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTD +281 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTF +63 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTD +281 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTF +63 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/ECON.OPT +37 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/LRC.OPT +38 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/MEC.OPT +58 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/MRC.OPT +38 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/OPTALT.OPT +37 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.ATF +238 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.xml +737 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTD +281 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTF +63 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTD +281 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTF +63 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/ECON.OPT +37 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/LRC.OPT +36 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MEC.OPT +56 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MRC.OPT +36 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/OPTALT.OPT +37 -0
- pyBADA/aircraft/BADA4/DUMMY/GPF.xml +130 -0
- pyBADA/aircraft/BADA4/DUMMY/GPF_BADA4.xsd +75 -0
- pyBADA/aircraft/BADA4/DUMMY/aircraft_model_default.xml +311 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH.ATF +97 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH.xml +82 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTD +632 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTF +71 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTD +632 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTF +71 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/LRC.OPT +142 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/MEC.OPT +142 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/MRC.OPT +142 -0
- pyBADA/aircraft.py +414 -0
- pyBADA/atmosphere.py +345 -0
- pyBADA/bada3.py +4566 -0
- pyBADA/bada4.py +5327 -0
- pyBADA/badaE.py +3317 -0
- pyBADA/badaH.py +3632 -0
- pyBADA/configuration.py +98 -0
- pyBADA/constants.py +64 -0
- pyBADA/conversions.py +197 -0
- pyBADA/data/magneticDeclinationGridData.json +247067 -0
- pyBADA/flightTrajectory.py +929 -0
- pyBADA/geodesic.py +760 -0
- pyBADA/magnetic.py +119 -0
- pyBADA/trajectoryPrediction.py +175 -0
- pybada-0.1.0.dist-info/METADATA +57 -0
- pybada-0.1.0.dist-info/RECORD +99 -0
- pybada-0.1.0.dist-info/WHEEL +4 -0
- pybada-0.1.0.dist-info/licenses/AUTHORS +2 -0
- pybada-0.1.0.dist-info/licenses/LICENCE.txt +287 -0
pyBADA/magnetic.py
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pyBADA
|
|
4
|
+
Magnetic declination module
|
|
5
|
+
Developped @EUROCONTROL (EIH)
|
|
6
|
+
2024
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
__author__ = "Henrich Glaser-Opitz"
|
|
10
|
+
__copyright__ = "Copyright 2024, EUROCONTROL (EIH)"
|
|
11
|
+
__license__ = "BADA Eurocontrol"
|
|
12
|
+
__version__ = "1.0.0"
|
|
13
|
+
__maintainer__ = "Henrich Glaser-Opitz"
|
|
14
|
+
__email__ = "henrich.glaser-opitz@eurocontrol.int"
|
|
15
|
+
__status__ = "Development"
|
|
16
|
+
__docformat__ = "reStructuredText"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
import json
|
|
20
|
+
import bisect
|
|
21
|
+
from pyBADA import configuration
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Grid:
|
|
25
|
+
"""This class implements the calculations on the magnetic declination using the grid data
|
|
26
|
+
|
|
27
|
+
.. note::
|
|
28
|
+
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
def __init__(self, inputJSON=None):
|
|
32
|
+
if inputJSON is None:
|
|
33
|
+
inputJSON = (
|
|
34
|
+
configuration.getDataPath() + "/magneticDeclinationGridData.json"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
f = open(inputJSON)
|
|
38
|
+
grid = json.load(f)
|
|
39
|
+
|
|
40
|
+
self.gridData = {}
|
|
41
|
+
latitudeList = []
|
|
42
|
+
longitudeList = []
|
|
43
|
+
magneticDeclinationList = []
|
|
44
|
+
|
|
45
|
+
for result in grid["result"]:
|
|
46
|
+
latitudeList.append(result["latitude"])
|
|
47
|
+
longitudeList.append(result["longitude"])
|
|
48
|
+
magneticDeclinationList.append(result["declination"])
|
|
49
|
+
|
|
50
|
+
self.gridData["LAT"] = latitudeList
|
|
51
|
+
self.gridData["LON"] = longitudeList
|
|
52
|
+
self.gridData["declination"] = magneticDeclinationList
|
|
53
|
+
|
|
54
|
+
def getClosestLatitude(self, LAT_target):
|
|
55
|
+
latitudeList = sorted(self.gridData["LAT"])
|
|
56
|
+
|
|
57
|
+
if LAT_target < latitudeList[0] or LAT_target > latitudeList[-1]:
|
|
58
|
+
return None
|
|
59
|
+
|
|
60
|
+
index = bisect.bisect_left(latitudeList, LAT_target)
|
|
61
|
+
if index == 0:
|
|
62
|
+
closest = latitudeList[0]
|
|
63
|
+
elif index == len(latitudeList):
|
|
64
|
+
closest = latitudeList[-1]
|
|
65
|
+
else:
|
|
66
|
+
before = latitudeList[index - 1]
|
|
67
|
+
after = latitudeList[index]
|
|
68
|
+
closest = before if after - LAT_target > LAT_target - before else after
|
|
69
|
+
|
|
70
|
+
return closest
|
|
71
|
+
|
|
72
|
+
def getClosestLongitude(self, LON_target):
|
|
73
|
+
longitudeList = sorted(self.gridData["LON"])
|
|
74
|
+
|
|
75
|
+
if LON_target < longitudeList[0] or LON_target > longitudeList[-1]:
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
index = bisect.bisect_left(longitudeList, LON_target)
|
|
79
|
+
if index == 0:
|
|
80
|
+
closest = longitudeList[0]
|
|
81
|
+
elif index == len(longitudeList):
|
|
82
|
+
closest = longitudeList[-1]
|
|
83
|
+
else:
|
|
84
|
+
before = longitudeList[index - 1]
|
|
85
|
+
after = longitudeList[index]
|
|
86
|
+
closest = before if after - LON_target > LON_target - before else after
|
|
87
|
+
|
|
88
|
+
return closest
|
|
89
|
+
|
|
90
|
+
def getClosestIdx(self, LAT_target, LON_target):
|
|
91
|
+
closestLAT = self.getClosestLatitude(LAT_target=LAT_target)
|
|
92
|
+
closestLON = self.getClosestLongitude(LON_target=LON_target)
|
|
93
|
+
|
|
94
|
+
indicesLAT = [
|
|
95
|
+
i
|
|
96
|
+
for i in range(len(self.gridData["LAT"]))
|
|
97
|
+
if self.gridData["LAT"][i] == closestLAT
|
|
98
|
+
]
|
|
99
|
+
indicesLON = [
|
|
100
|
+
i
|
|
101
|
+
for i in range(len(self.gridData["LON"]))
|
|
102
|
+
if self.gridData["LON"][i] == closestLON
|
|
103
|
+
]
|
|
104
|
+
|
|
105
|
+
for idx in indicesLAT:
|
|
106
|
+
if idx in indicesLON:
|
|
107
|
+
return idx
|
|
108
|
+
|
|
109
|
+
return None
|
|
110
|
+
|
|
111
|
+
def getMagneticDeclination(self, LAT_target, LON_target):
|
|
112
|
+
idx = self.getClosestIdx(LAT_target=LAT_target, LON_target=LON_target)
|
|
113
|
+
|
|
114
|
+
if idx is None:
|
|
115
|
+
return None
|
|
116
|
+
else:
|
|
117
|
+
magneticDeclination = self.gridData["declination"][idx]
|
|
118
|
+
|
|
119
|
+
return magneticDeclination
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pyBADA
|
|
4
|
+
Basic calculations for the Trajectory Prediction (TP)
|
|
5
|
+
Developped @EUROCONTROL (EIH)
|
|
6
|
+
2024
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
__author__ = "Henrich Glaser-Opitz"
|
|
10
|
+
__copyright__ = "Copyright 2024, EUROCONTROL (EIH)"
|
|
11
|
+
__license__ = "BADA Eurocontrol"
|
|
12
|
+
__version__ = "1.0.0"
|
|
13
|
+
__maintainer__ = "Henrich Glaser-Opitz"
|
|
14
|
+
__email__ = "henrich.glaser-opitz@eurocontrol.int"
|
|
15
|
+
__status__ = "Development"
|
|
16
|
+
__docformat__ = "reStructuredText"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
from pyBADA import atmosphere as atm
|
|
20
|
+
from pyBADA import conversions as conv
|
|
21
|
+
from math import exp
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class TrajectoryPrediction:
|
|
25
|
+
"""This class implements some basic calculations required for the trajectory prediction (TP)."""
|
|
26
|
+
|
|
27
|
+
def __init__(self):
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
@staticmethod
|
|
31
|
+
def getInitialMass(
|
|
32
|
+
AC,
|
|
33
|
+
distance,
|
|
34
|
+
altitude,
|
|
35
|
+
M,
|
|
36
|
+
payload=60,
|
|
37
|
+
fuelReserve=3600,
|
|
38
|
+
flightPlanInitialMass=None,
|
|
39
|
+
):
|
|
40
|
+
"""This function returns calculated (estimated) aircrat initial mass
|
|
41
|
+
derived from the breguet leduc formula
|
|
42
|
+
|
|
43
|
+
:param AC: aircraft {BADA3/4/H/E}
|
|
44
|
+
:param distance: distance flown in [m]
|
|
45
|
+
:param altitude: cruising altitude in [m]
|
|
46
|
+
:param M: cruising speed in MACH [-]
|
|
47
|
+
:param payload: payload mass in [%] of maximum payload
|
|
48
|
+
:param fuelReserve: fuel reserve in [s]
|
|
49
|
+
:param flightPlanInitialMass: initial mass defined from the flight plan [kg]
|
|
50
|
+
:type AC: {Bada3Aircraft, Bada4Aircraft, BadaEAircraft, BadaHAircraft}.
|
|
51
|
+
:type distance: float
|
|
52
|
+
:type altitude: float
|
|
53
|
+
:type M: float
|
|
54
|
+
:type payload: float
|
|
55
|
+
:type fuelReserve: float
|
|
56
|
+
:type flightPlanInitialMass: float
|
|
57
|
+
:returns: initial mass [kg]
|
|
58
|
+
:rtype: float
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
def initialMassCalculation(
|
|
62
|
+
AC, distance, altitude, M, payload, fuelReserve, flightPlanInitialMass
|
|
63
|
+
):
|
|
64
|
+
DeltaTemp = 0
|
|
65
|
+
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
66
|
+
h=altitude, DeltaTemp=DeltaTemp
|
|
67
|
+
)
|
|
68
|
+
TAS = atm.mach2Tas(Mach=M, theta=theta)
|
|
69
|
+
|
|
70
|
+
config = "CR"
|
|
71
|
+
flightPhase = "Cruise"
|
|
72
|
+
mass = AC.MREF
|
|
73
|
+
|
|
74
|
+
if AC.BADAFamily.BADA3:
|
|
75
|
+
# compute lift coefficient
|
|
76
|
+
CL = AC.CL(tas=TAS, sigma=sigma, mass=mass)
|
|
77
|
+
# compute drag coefficient
|
|
78
|
+
CD = AC.CD(CL=CL, config=config)
|
|
79
|
+
# compute drag force
|
|
80
|
+
Drag = AC.D(tas=TAS, sigma=sigma, CD=CD)
|
|
81
|
+
# compute thrust force and fuel flow
|
|
82
|
+
THR = Drag
|
|
83
|
+
|
|
84
|
+
fuelFlow = AC.ff(
|
|
85
|
+
h=altitude, v=TAS, T=THR, config=config, flightPhase=flightPhase
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
elif AC.BADAFamily.BADA4:
|
|
89
|
+
# compute lift coefficient
|
|
90
|
+
CL = AC.CL(M=M, delta=delta, mass=mass)
|
|
91
|
+
# compute drag coefficient
|
|
92
|
+
[HLid, LG] = AC.flightEnvelope.getAeroConfig(config=config)
|
|
93
|
+
CD = AC.CD(M=M, CL=CL, HLid=HLid, LG=LG)
|
|
94
|
+
# compute drag force
|
|
95
|
+
Drag = AC.D(M=M, delta=delta, CD=CD)
|
|
96
|
+
# compute thrust force and fuel flow
|
|
97
|
+
THR = Drag
|
|
98
|
+
CT = AC.CT(Thrust=THR, delta=delta)
|
|
99
|
+
|
|
100
|
+
fuelFlow = AC.ff(
|
|
101
|
+
CT=CT, delta=delta, theta=theta, M=M, DeltaTemp=DeltaTemp
|
|
102
|
+
) # [kg/s]
|
|
103
|
+
|
|
104
|
+
elif AC.BADAFamily.BADAH:
|
|
105
|
+
# compute Power required for level flight
|
|
106
|
+
Preq = AC.Preq(sigma=sigma, tas=TAS, mass=mass, phi=0)
|
|
107
|
+
Peng_i = Preq
|
|
108
|
+
# Pav_i = AC.Pav(rating="MCNT", theta=theta, delta=delta) # assume MCNT rating as the limit
|
|
109
|
+
|
|
110
|
+
# if Pav_i < Preq:
|
|
111
|
+
# warnings.warn("Power Available is lower than Power Required",UserWarning)
|
|
112
|
+
|
|
113
|
+
# compute fuel flow for level flight
|
|
114
|
+
CP = AC.CP(Peng=Preq)
|
|
115
|
+
fuelFlow = AC.ff(delta=delta, CP=CP) # [kg/s]
|
|
116
|
+
|
|
117
|
+
fuelReserveMass = fuelReserve * fuelFlow
|
|
118
|
+
|
|
119
|
+
if AC.MPL is not None:
|
|
120
|
+
maximumPayload = AC.MPL
|
|
121
|
+
else:
|
|
122
|
+
maximumPayload = AC.MTOW - AC.OEW - AC.MFL
|
|
123
|
+
payloadMass = (payload / 100) * maximumPayload
|
|
124
|
+
|
|
125
|
+
minimumLandingMass = AC.OEW + payloadMass + fuelReserveMass
|
|
126
|
+
|
|
127
|
+
# in case of no wind, the ground speed is the same as true airspeed
|
|
128
|
+
GS = TAS
|
|
129
|
+
|
|
130
|
+
initialMass = minimumLandingMass * exp(
|
|
131
|
+
(fuelFlow * distance) / (AC.MREF * GS)
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
# set Initial Mass from FPL check
|
|
135
|
+
if flightPlanInitialMass is not None:
|
|
136
|
+
initialMass = flightPlanInitialMass
|
|
137
|
+
|
|
138
|
+
# envelope check
|
|
139
|
+
initialMass = min(max(initialMass, AC.OEW), AC.MTOW)
|
|
140
|
+
|
|
141
|
+
return initialMass
|
|
142
|
+
|
|
143
|
+
if AC.BADAFamily.BADA3 or AC.BADAFamily.BADA4:
|
|
144
|
+
if (AC.MMO is not None and AC.MMO >= 1.0) or (
|
|
145
|
+
AC.VMO is not None and AC.VMO >= 400
|
|
146
|
+
):
|
|
147
|
+
# identified as fighter jet
|
|
148
|
+
initialMass = AC.MREF
|
|
149
|
+
else:
|
|
150
|
+
initialMass = initialMassCalculation(
|
|
151
|
+
AC=AC,
|
|
152
|
+
distance=distance,
|
|
153
|
+
altitude=altitude,
|
|
154
|
+
M=M,
|
|
155
|
+
payload=payload,
|
|
156
|
+
fuelReserve=fuelReserve,
|
|
157
|
+
flightPlanInitialMass=flightPlanInitialMass,
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
elif AC.BADAFamily.BADAH:
|
|
161
|
+
if AC.vne is not None and AC.vne >= 400:
|
|
162
|
+
# identified as fighter
|
|
163
|
+
initialMass = AC.MREF
|
|
164
|
+
else:
|
|
165
|
+
initialMass = initialMassCalculation(
|
|
166
|
+
AC=AC,
|
|
167
|
+
distance=distance,
|
|
168
|
+
altitude=altitude,
|
|
169
|
+
M=M,
|
|
170
|
+
payload=payload,
|
|
171
|
+
fuelReserve=fuelReserve,
|
|
172
|
+
flightPlanInitialMass=flightPlanInitialMass,
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
return initialMass
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: pyBADA
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: pyBADA
|
|
5
|
+
Project-URL: Homepage, https://github.com/eurocontrol/pybada
|
|
6
|
+
Author-email: Henrich Glaser-Opitz <henrich.glaser-opitz@eurocontrol.int>
|
|
7
|
+
License: EUPL-1.2
|
|
8
|
+
License-File: AUTHORS
|
|
9
|
+
License-File: LICENCE.txt
|
|
10
|
+
Classifier: License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Requires-Python: >=3.11
|
|
13
|
+
Requires-Dist: numpy==1.26.1
|
|
14
|
+
Requires-Dist: pandas==2.2.3
|
|
15
|
+
Requires-Dist: scipy==1.11.3
|
|
16
|
+
Requires-Dist: simplekml==1.3.6
|
|
17
|
+
Requires-Dist: xlsxwriter==3.2.0
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# pyBADA
|
|
21
|
+
|
|
22
|
+
<a href="https://github.com/eurocontrol/pybada/blob/main/LICENCE.txt"><img alt="License: EUPL" src="https://img.shields.io/badge/license-EUPL-3785D1.svg"></a>
|
|
23
|
+

|
|
24
|
+
<a href="https://github.com/eurocontrol/pybada"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
|
|
25
|
+
|
|
26
|
+
The BADA aircraft performance toolbox for Python
|
|
27
|
+
|
|
28
|
+
To get started
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install pyBADA
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Examples
|
|
35
|
+
|
|
36
|
+
- `file_parser`: example of BADA file parser and retrieval of some basic BADA parameters for all BADA3/4/H
|
|
37
|
+
- `optimum_speed_altitude`: example of calculation of optimum speeds and altitude for BADA4 and BADAH aircraft
|
|
38
|
+
- `ac_trajectory`: a simple, but complete aircraft trajectory for BADA3 and BADA4 aircraft
|
|
39
|
+
- `ac_trajectory_GPS`: an example of a simple, but complete aircraft trajectory for BADA3 and BADA4 aircraft including geodesic calculations
|
|
40
|
+
|
|
41
|
+
## Development
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Optionally, set up a virtual env and activate it
|
|
45
|
+
python3 -m venv env
|
|
46
|
+
source env/bin/activate
|
|
47
|
+
# Install package in editable mode
|
|
48
|
+
pip install -e .
|
|
49
|
+
# Install a couple of packages for formatting and linting
|
|
50
|
+
pip install -r requirements-dev.txt
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## License
|
|
54
|
+
|
|
55
|
+
BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/).
|
|
56
|
+
|
|
57
|
+
This project is licensed under the European Union Public License v1.2 - see the [LICENSE](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12) file for details.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
pyBADA/TCL.py,sha256=togXlsqpVwfvZrYPLt_hiFVR4Pw_lCkRWHmk_dpZ9U0,350731
|
|
2
|
+
pyBADA/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
pyBADA/aircraft.py,sha256=u4rpOOZ2LIcoDZVdf78xUf6VjT5HUrFK5e9jTLpFzO4,12568
|
|
4
|
+
pyBADA/atmosphere.py,sha256=-Fz_xG1w_f8d04vM1NuwGkaQLQiHr0aUHepIiO79u3c,9243
|
|
5
|
+
pyBADA/bada3.py,sha256=6WBsZadwYaLagDMK3Rc4xykbjwLbPAN8wYbZuChTGTc,165049
|
|
6
|
+
pyBADA/bada4.py,sha256=sEsOiz1IKuoagg6JFqhjH7Xt8CV0k2doEHID8zkQf2M,191871
|
|
7
|
+
pyBADA/badaE.py,sha256=FQ9m4Tzp92ygfFODIUK1Mra18mpQq3OokY1BF_0WfAI,109671
|
|
8
|
+
pyBADA/badaH.py,sha256=OvyBoBdzYsDv5ZLzN1OLzXVxAjCH4A-uinFi64i8R6s,122735
|
|
9
|
+
pyBADA/configuration.py,sha256=F67QwMSIMTZvnPWhhDvBnPkchRTK284YceZIEsAMrfg,2562
|
|
10
|
+
pyBADA/constants.py,sha256=snn8m5LkkTHNrK65gSTBEeGHj9ypNIIoSaEv75jUwRE,1315
|
|
11
|
+
pyBADA/conversions.py,sha256=bsPsxD9t5X2Ofjux7zVxy5_QPM9Mabi4ZMaI8Md5s3Q,3660
|
|
12
|
+
pyBADA/flightTrajectory.py,sha256=cmTVdgpm-N3oIaAma2XHZXZZ1S6S6-zqYYUqM6Qi2g8,33259
|
|
13
|
+
pyBADA/geodesic.py,sha256=y1Pi1H2LzAALGwwYzbKmsXtdZ-6sVdIk2NqXKdj9IGM,26249
|
|
14
|
+
pyBADA/magnetic.py,sha256=4jJDz32iV7SRY9DLob3wJxk6xgtqiwdh2ZE-HGQHDD4,3477
|
|
15
|
+
pyBADA/trajectoryPrediction.py,sha256=Sm4mgabBt_UepDlzdZjoopn-6lDLqYQUA-SrYbMNRv4,6008
|
|
16
|
+
pyBADA/data/magneticDeclinationGridData.json,sha256=ffmLcxdDwFwJqV4WPyMM5SWt60tMj8xsLh5IHYkpO3U,5390918
|
|
17
|
+
pyBADA/aircraft/BADA3/DUMMY/BADA.GPF,sha256=1Am9yU8v9nnIpvJt-XhJRz4APOkRzfNPujKAy3UCYg0,9831
|
|
18
|
+
pyBADA/aircraft/BADA3/DUMMY/BZJT__.APF,sha256=wGyXK-ro1S6YhC4wp2nMQKi0JGYLvTunNjO6x_YbhW4,2523
|
|
19
|
+
pyBADA/aircraft/BADA3/DUMMY/BZJT__.OPF,sha256=SIpFU1SQ4FFtzVNhmZT7kbMv3lXH0gsd1VG9m_-QuHo,4392
|
|
20
|
+
pyBADA/aircraft/BADA3/DUMMY/BZJT__.PTD,sha256=z30e-isuF19PGSsknZRaE53Tf47bjsWhpnsiZ_jdskQ,15279
|
|
21
|
+
pyBADA/aircraft/BADA3/DUMMY/BZJT__.PTF,sha256=dyfCnUmDswaHKepAO1ZqpHeTpuXopOgDs_9LUKo2L-w,5652
|
|
22
|
+
pyBADA/aircraft/BADA3/DUMMY/GA____.APF,sha256=u7QDDvV3CChXU3AsvP74IpFio_CA_NjTU3j2MMbae4A,2523
|
|
23
|
+
pyBADA/aircraft/BADA3/DUMMY/GA____.OPF,sha256=FzttyOUkhpBK4-1Q7V_YSspBPWghiuYKu_QI3Xl2Eag,4392
|
|
24
|
+
pyBADA/aircraft/BADA3/DUMMY/GA____.PTD,sha256=xj3odetvTxe5_Vm0VErRNIz9Ecpy1lGGyPf_6neLTcQ,6490
|
|
25
|
+
pyBADA/aircraft/BADA3/DUMMY/GA____.PTF,sha256=evOBR9qILGFQyiuzDm-edTAdni3G-YojwBv_e0kS1Oo,2897
|
|
26
|
+
pyBADA/aircraft/BADA3/DUMMY/J2H___.APF,sha256=Gr7HFa3uVsomfSDxrW8rZsvfHCfjAlLE8YH2Rd-xjRE,2523
|
|
27
|
+
pyBADA/aircraft/BADA3/DUMMY/J2H___.OPF,sha256=dMjyQwbjCW9FMvybX8E4PaoMm4vtSYonIFyc7lJe32M,4392
|
|
28
|
+
pyBADA/aircraft/BADA3/DUMMY/J2H___.PTD,sha256=Lb4OUbi9v_nmBygtMUbqBzvBUio2y1syDw2zikNN3fM,14245
|
|
29
|
+
pyBADA/aircraft/BADA3/DUMMY/J2H___.PTF,sha256=yS5TgNpEeNvRN7lhkxG9DQf4YzGAt3c98x06JsLWEqk,5332
|
|
30
|
+
pyBADA/aircraft/BADA3/DUMMY/J2M___.APF,sha256=WuIm3ewdda6geFH0wLbv7xZWHPabJ5rD6RvIfQiRAnk,2523
|
|
31
|
+
pyBADA/aircraft/BADA3/DUMMY/J2M___.OPF,sha256=UaNmWyu5hs-vB0vR4rzegZ27uFkd04S0yLAs8zpXsH8,4392
|
|
32
|
+
pyBADA/aircraft/BADA3/DUMMY/J2M___.PTD,sha256=JJRydMSHf5eIEACo6MK4vLL0rw_CNu8jvWOs-GarCh8,13211
|
|
33
|
+
pyBADA/aircraft/BADA3/DUMMY/J2M___.PTF,sha256=CqrgyOr16ZIi7zF4fUqZxD7H_te6PDs-dgS4Q88o7zE,5006
|
|
34
|
+
pyBADA/aircraft/BADA3/DUMMY/J4H___.APF,sha256=prepTtzyxQCwhDAnEOmwsgmK23XVlpS3S0lvlpHQMpg,2523
|
|
35
|
+
pyBADA/aircraft/BADA3/DUMMY/J4H___.OPF,sha256=zD0s_bJTL43Ifg7BgzL9qxO7Y6680Wp3GlzGhNV0ECw,4392
|
|
36
|
+
pyBADA/aircraft/BADA3/DUMMY/J4H___.PTD,sha256=DgDhbfeTzp-pjI6lQTWbilDteGiKA1s__jQvnlxWBY8,15279
|
|
37
|
+
pyBADA/aircraft/BADA3/DUMMY/J4H___.PTF,sha256=5Zrti8qTFBlZ19_rum8O-kA_ah_YoGd7_arc51fc5K8,5656
|
|
38
|
+
pyBADA/aircraft/BADA3/DUMMY/ReleaseSummary,sha256=_DYSX5ogjvaN3BLpg9-Vgp_ZGk1BP1_n7_2K-k2QacU,817
|
|
39
|
+
pyBADA/aircraft/BADA3/DUMMY/SYNONYM.NEW,sha256=goqxeUiGVmHBNojb-klV_djcr4UVm7wWdXgU9VWcDZw,11160
|
|
40
|
+
pyBADA/aircraft/BADA3/DUMMY/TP2M__.APF,sha256=0zgXhhCwBsOE5xM134H9zshuAZqVUrgASRkRNchvqQI,2523
|
|
41
|
+
pyBADA/aircraft/BADA3/DUMMY/TP2M__.OPF,sha256=neehlUwSzfuO6Q_zJWUgmCXYgGUZKuyLTVhgTJvyzWg,4392
|
|
42
|
+
pyBADA/aircraft/BADA3/DUMMY/TP2M__.PTD,sha256=2d3thuPdOs4MCBDeb5ByRDndnQTto_0ldLMqAUQG70g,10109
|
|
43
|
+
pyBADA/aircraft/BADA3/DUMMY/TP2M__.PTF,sha256=h3PLtFQrf0W63b2DfXKvF6AoAyJi-m2Fm5SlrNKb3Qo,4034
|
|
44
|
+
pyBADA/aircraft/BADA4/DUMMY/ACM_BADA4.xsd,sha256=ib8Uwb2kPlA7057ck_EKt4_6uei86fqlAdsd_y5Vjk8,20067
|
|
45
|
+
pyBADA/aircraft/BADA4/DUMMY/GPF.xml,sha256=Ee6W4B06QFqGpFOP4p4eHIiCRSyVLI4FJXWeGVddvfM,2439
|
|
46
|
+
pyBADA/aircraft/BADA4/DUMMY/GPF_BADA4.xsd,sha256=-Zgtwb4-28utcLsJzbO4XUFyHtMkO5kcrK1OX7gn068,2377
|
|
47
|
+
pyBADA/aircraft/BADA4/DUMMY/aircraft_model_default.xml,sha256=iFErjK2fvG2luVhN3ZHk0uWjlocjUg4FK01QzNXVntY,5170
|
|
48
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.ATF,sha256=mxKlp7VT1mWao-VfcMM4lqRZTdOLgynOBZwsPGJ72o4,6399
|
|
49
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.xml,sha256=DDIpsSfo7Wt-qMpQ6U_xak6w5mvoOu8QDqUqfaP7zhQ,6148
|
|
50
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTD,sha256=clnS8-2AMEcgS6x759VbxXKsNqSVnc-wt7aWzhLFLGU,16686
|
|
51
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTF,sha256=RehF0PexeeqzXBVOfapGJlcJEWmRAGDFGMIfydXtU8k,3325
|
|
52
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTD,sha256=SZAgCj-AmHHs2Lfi6gQzpSZKsegIFEFs1JS6UFFk58c,16686
|
|
53
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTF,sha256=i4Qao4DbmkaMjQJmpYWK44pQNjp2O2lM_EbTB7ULOUY,3322
|
|
54
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.ATF,sha256=w8lUlpOZUIx_vke_rStgnIq28M6Uw-dTOxlYN1FovpQ,12201
|
|
55
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.xml,sha256=sw43T6HVlZsVlRmFWTtwWF7E7Df_hgJGQgDj3MHjEWM,14398
|
|
56
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTD,sha256=DZRndJ4L4O0c3dK4m5p6HQZKwBnT-crBRXf8EorMz5A,21012
|
|
57
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTF,sha256=CXwRdzyuRzcr0kOoJajDrIwZ-7nObNYDSPiQkIQahA4,4021
|
|
58
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTD,sha256=5jFpPiJxdfrdpxgwDsMn4yfh6PVYGGc-xUVCEnSAQto,21002
|
|
59
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTF,sha256=wT0bxYzalyXPxvjjA47GPUjGTFDGjqfT7BBXBaGn6P4,4018
|
|
60
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/LRC.dat,sha256=_wc8m6G9Cld0oVodNweHOt0tI6MsuUNo36GfCGybJKc,746
|
|
61
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/MEC.dat,sha256=yLodyztOLapc9SRXIBpFFIuBQQKNZ0UDGOqTfbm7iJc,1186
|
|
62
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/MRC.dat,sha256=4TiZW6YN9Rv8xM_KwbfHNnXRjFsVAy22mcpxK3cufxw,746
|
|
63
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/OPTALT.dat,sha256=sdQ7XyahAgU1zSQI3fON_-1rxY4mFy8qbtj2_BihQTA,3069
|
|
64
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.ATF,sha256=mbnLXrro4pHsWooXFD1EmbdLK02O2hbnt7Sgl4EshlE,13035
|
|
65
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.xml,sha256=3nDswOmFMFBATMOjAHCYpGsfCHmznQc3Tj_nDd2YdgY,17535
|
|
66
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTD,sha256=4VyHhi70IThHCjeMiZnxmkVagBW4TBE66XAToFgn2mo,28580
|
|
67
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTF,sha256=TYrpsaf1MKLVDj-TapJ67F3XaFT_moYTWfwV6SHlmY4,5240
|
|
68
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTD,sha256=GKjTukmjLXWuV1qYoIkXXpva-lVLj-_FLDYwE54qMpE,28580
|
|
69
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTF,sha256=nR3SQKotmB3XjMPEvrsgKEvrAVNQYciW849Njhf2OKI,5237
|
|
70
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/ECON.OPT,sha256=gQkKlATkpguSeEX7UJkTEt1MIMYpR8yfuOFP2JtW9-8,1913
|
|
71
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/LRC.OPT,sha256=Jdm3PA8bepO2REm0lNiujdbDzGco7Mh7Ox2R6yFGU8M,746
|
|
72
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/MEC.OPT,sha256=L95Q9IH4b_Spv_-hnAS9-fZgT7oqzpwd_ZMuZ5YBV3o,1186
|
|
73
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/MRC.OPT,sha256=9J-qukwfxOHxyV6Js_R1DPdB78AF5cBUMF_Je0rNF6w,746
|
|
74
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/OPTALT.OPT,sha256=o3yaQ663M85vQfokJ9E-yjGrPjop1wKt1QgFEICINQQ,3069
|
|
75
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.ATF,sha256=XFa4BqkMhm-MpPFg_kd827sEYjbaF67ykSCWIy8g7wU,15343
|
|
76
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.xml,sha256=R6090X_UTfYCt1-aq2CRnXP3jt9HO7hm4Yh3iaEqgls,22561
|
|
77
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTD,sha256=7qPfH4N9VfbXusaVd-0K8xAOMBAyZhhDvglVq6WDy3g,28580
|
|
78
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTF,sha256=RnziMiyMR6-Qq8xLuzNZL_MAlVNgqSsSRWThcdExGUU,5245
|
|
79
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTD,sha256=_Rr90bpz2mI7pVgOv-nZs6yQqFcvb-xX_1faHjvgwuI,28580
|
|
80
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTF,sha256=fsVnMJmKoY3aNTbZSzSlt6mDTmmmU7O71M4i8eMEr0E,5242
|
|
81
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/ECON.OPT,sha256=K7knVR58KHBdCPTQrxo78Q3tXJEw81dDINH5ehlQ_4o,1918
|
|
82
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/LRC.OPT,sha256=R77gfsMWqRPlfnKNsv559W9PGfh0GRDM-sWepwmIlas,749
|
|
83
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MEC.OPT,sha256=WAJyTIuX87iHTs29Ooz-CLzMCq2cwaYn34D2Ou9ZQ8o,1189
|
|
84
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MRC.OPT,sha256=P4y2a4TrnJtCdx50B9G9shC6RPC0FaMqRjydKVt2uqQ,749
|
|
85
|
+
pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/OPTALT.OPT,sha256=WCFKaygKWK6po08FJuhYhRiZOr8mpsipsLG58cyveqQ,3074
|
|
86
|
+
pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH.ATF,sha256=pjceC0_HdayyrskTK5Xn_SwvcdfNzz-cp6OcXQhPcQM,5997
|
|
87
|
+
pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH.xml,sha256=KM0WV1BLsdeNewjnQYchYBRSTsXQgqKi-PMtKrKoXM8,2311
|
|
88
|
+
pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTD,sha256=rDWg5g-2RedJQ_y05IcU1ZiBvzOZksfDeem7mdJb9xY,63127
|
|
89
|
+
pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTF,sha256=-OmXG-BZXKMa3gb-cIad4QOWe4DVMM8-Xcv_88XTKcM,5930
|
|
90
|
+
pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTD,sha256=Lxk9FjrLx1yL0VfJ9TTuGQsbc6P6C6E7uu0lH1B-mQI,63112
|
|
91
|
+
pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTF,sha256=aEthZF1xztp6QSHYEwU5tH4HF8x9HnA1vd-3wEg0J10,5927
|
|
92
|
+
pyBADA/aircraft/BADAH/DUMMY/DUMH/LRC.OPT,sha256=7WecIu4kfw5nM_ADih06Hb8pCoxLVsEdHHJTqQrx4hg,10123
|
|
93
|
+
pyBADA/aircraft/BADAH/DUMMY/DUMH/MEC.OPT,sha256=yKczjH6lZqTplmcV79tZLvwXmHM2F9bYoB2gIM8hBpg,10123
|
|
94
|
+
pyBADA/aircraft/BADAH/DUMMY/DUMH/MRC.OPT,sha256=fTGqt0P9xgt9Q4sKPlL0CZi9aj73prAPlXj1dpWHSOk,10123
|
|
95
|
+
pybada-0.1.0.dist-info/METADATA,sha256=JIIPdt7lgLH3VQU7kVQslH4xJWDZF8jI1btU48dFYpI,2146
|
|
96
|
+
pybada-0.1.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
97
|
+
pybada-0.1.0.dist-info/licenses/AUTHORS,sha256=iCKpU7CHp2sB4u5hkS2WyMJHLzL0gfMm-bobd7QDmzE,108
|
|
98
|
+
pybada-0.1.0.dist-info/licenses/LICENCE.txt,sha256=RpvAZSjULHvoTR_esTlucJ08-zdQydnoqQLbqOh9Ub8,13826
|
|
99
|
+
pybada-0.1.0.dist-info/RECORD,,
|