pyBADA 0.1.2__py3-none-any.whl → 0.1.4__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.
@@ -1,145 +1,175 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
- pyBADA
4
2
  Basic calculations for the Trajectory Prediction (TP) using BADA
5
- Developped @EUROCONTROL (EIH)
6
- 2024
7
3
  """
8
4
 
9
5
  from pyBADA import atmosphere as atm
10
- from pyBADA import conversions as conv
11
6
  from math import exp
12
7
 
13
8
 
14
- class TrajectoryPrediction:
15
- """This class implements some basic calculations required for the trajectory prediction (TP)."""
16
-
17
- def __init__(self):
18
- pass
19
-
20
- @staticmethod
21
- def getInitialMass(
22
- AC,
23
- distance,
24
- altitude,
25
- M,
26
- payload=60,
27
- fuelReserve=3600,
28
- flightPlanInitialMass=None,
29
- ):
30
- """Calculates the estimated initial aircraft mass using the Breguet Leduc formula.
31
-
32
- :param AC: Aircraft object (BADA3/4/H/E).
33
- :param distance: Distance to be flown in meters.
34
- :param altitude: Cruising altitude in meters.
35
- :param M: Mach number at cruising altitude.
36
- :param payload: Percentage of the maximum payload mass (default is 60%).
37
- :param fuelReserve: Fuel reserve in seconds (default is 3600s, or 1 hour).
38
- :param flightPlanInitialMass: Optional initial mass from a flight plan, in kg.
39
- :type AC: {Bada3Aircraft, Bada4Aircraft, BadaEAircraft, BadaHAircraft}.
40
- :type distance: float
41
- :type altitude: float
42
- :type M: float
43
- :type payload: float
44
- :type fuelReserve: float
45
- :type flightPlanInitialMass: float, optional
46
- :returns: Estimated initial aircraft mass in kg.
47
- :rtype: float
48
- """
49
-
50
- def initialMassCalculation(
51
- AC,
52
- distance,
53
- altitude,
54
- M,
55
- payload,
56
- fuelReserve,
57
- flightPlanInitialMass,
58
- ):
59
- """Helper function to calculate the initial mass based on aircraft type and flight conditions."""
60
-
61
- DeltaTemp = 0
62
- [theta, delta, sigma] = atm.atmosphereProperties(
63
- h=altitude, DeltaTemp=DeltaTemp
64
- )
65
- TAS = atm.mach2Tas(Mach=M, theta=theta)
66
-
67
- config = "CR"
68
- flightPhase = "Cruise"
69
- mass = AC.MREF
70
-
71
- if AC.BADAFamily.BADA3:
72
- # compute lift coefficient
73
- CL = AC.CL(tas=TAS, sigma=sigma, mass=mass)
74
- # compute drag coefficient
75
- CD = AC.CD(CL=CL, config=config)
76
- # compute drag force
77
- Drag = AC.D(tas=TAS, sigma=sigma, CD=CD)
78
- # compute thrust force and fuel flow
79
- THR = Drag
80
-
81
- fuelFlow = AC.ff(
82
- h=altitude,
83
- v=TAS,
84
- T=THR,
85
- config=config,
86
- flightPhase=flightPhase,
87
- )
88
-
89
- elif AC.BADAFamily.BADA4:
90
- # compute lift coefficient
91
- CL = AC.CL(M=M, delta=delta, mass=mass)
92
- # compute drag coefficient
93
- [HLid, LG] = AC.flightEnvelope.getAeroConfig(config=config)
94
- CD = AC.CD(M=M, CL=CL, HLid=HLid, LG=LG)
95
- # compute drag force
96
- Drag = AC.D(M=M, delta=delta, CD=CD)
97
- # compute thrust force and fuel flow
98
- THR = Drag
99
- CT = AC.CT(Thrust=THR, delta=delta)
100
-
101
- fuelFlow = AC.ff(
102
- CT=CT, delta=delta, theta=theta, M=M, DeltaTemp=DeltaTemp
103
- ) # [kg/s]
104
-
105
- elif AC.BADAFamily.BADAH:
106
- # compute Power required for level flight
107
- Preq = AC.Preq(sigma=sigma, tas=TAS, mass=mass, phi=0)
108
- Peng_i = Preq
109
- # Pav_i = AC.Pav(rating="MCNT", theta=theta, delta=delta) # assume MCNT rating as the limit
110
-
111
- # if Pav_i < Preq:
112
- # warnings.warn("Power Available is lower than Power Required",UserWarning)
113
-
114
- # compute fuel flow for level flight
115
- CP = AC.CP(Peng=Preq)
116
- fuelFlow = AC.ff(delta=delta, CP=CP) # [kg/s]
117
-
118
- fuelReserveMass = fuelReserve * fuelFlow
119
-
120
- if AC.MPL is not None:
121
- maximumPayload = AC.MPL
122
- else:
123
- maximumPayload = AC.MTOW - AC.OEW - AC.MFL
124
- payloadMass = (payload / 100) * maximumPayload
125
-
126
- minimumLandingMass = AC.OEW + payloadMass + fuelReserveMass
127
-
128
- # in case of no wind, the ground speed is the same as true airspeed
129
- GS = TAS
130
-
131
- initialMass = minimumLandingMass * exp(
132
- (fuelFlow * distance) / (AC.MREF * GS)
133
- )
134
-
135
- # set Initial Mass from FPL check
136
- if flightPlanInitialMass is not None:
137
- initialMass = flightPlanInitialMass
138
-
139
- # envelope check
140
- initialMass = min(max(initialMass, AC.OEW), AC.MTOW)
141
-
142
- return initialMass
9
+ def cruiseFuelConsumption(AC, altitude, M, deltaTemp):
10
+ """
11
+ Calculate the cruise fuel consumption for an aircraft during cruise flight using BADA.
12
+
13
+ :param AC: Aircraft object (instance of Bada3Aircraft, Bada4Aircraft, or BadaHAircraft).
14
+ :param altitude: Altitude in meters.
15
+ :param M: Mach number at cruising altitude.
16
+ :param deltaTemp: Temperature deviation from standard atmosphere.
17
+ :type AC: object
18
+ :type altitude: float
19
+ :type M: float
20
+ :type deltaTemp: float
21
+ :return: Fuel flow in kg/s.
22
+ :rtype: float
23
+ """
24
+
25
+ [theta, delta, sigma] = atm.atmosphereProperties(
26
+ h=altitude, DeltaTemp=deltaTemp
27
+ )
28
+ TAS = atm.mach2Tas(Mach=M, theta=theta)
29
+
30
+ config = "CR"
31
+ flightPhase = "Cruise"
32
+ mass = AC.MREF
33
+
34
+ if AC.BADAFamily.BADA3:
35
+ # compute lift coefficient
36
+ CL = AC.CL(tas=TAS, sigma=sigma, mass=mass)
37
+ # compute drag coefficient
38
+ CD = AC.CD(CL=CL, config=config)
39
+ # compute drag force
40
+ Drag = AC.D(tas=TAS, sigma=sigma, CD=CD)
41
+ # compute thrust force and fuel flow
42
+ THR = Drag
43
+
44
+ fuelFlow = AC.ff(
45
+ h=altitude,
46
+ v=TAS,
47
+ T=THR,
48
+ config=config,
49
+ flightPhase=flightPhase,
50
+ )
51
+
52
+ elif AC.BADAFamily.BADA4:
53
+ # compute lift coefficient
54
+ CL = AC.CL(M=M, delta=delta, mass=mass)
55
+ # compute drag coefficient
56
+ [HLid, LG] = AC.flightEnvelope.getAeroConfig(config=config)
57
+ CD = AC.CD(M=M, CL=CL, HLid=HLid, LG=LG)
58
+ # compute drag force
59
+ Drag = AC.D(M=M, delta=delta, CD=CD)
60
+ # compute thrust force and fuel flow
61
+ THR = Drag
62
+ CT = AC.CT(Thrust=THR, delta=delta)
63
+
64
+ fuelFlow = AC.ff(
65
+ CT=CT, delta=delta, theta=theta, M=M, deltaTemp=deltaTemp
66
+ ) # [kg/s]
67
+
68
+ elif AC.BADAFamily.BADAH:
69
+ # compute Power required for level flight
70
+ Preq = AC.Preq(sigma=sigma, tas=TAS, mass=mass, phi=0)
71
+ Peng_i = Preq
72
+ # Pav_i = AC.Pav(rating="MCNT", theta=theta, delta=delta) # assume MCNT rating as the limit
73
+
74
+ # if Pav_i < Preq:
75
+ # warnings.warn("Power Available is lower than Power Required",UserWarning)
76
+
77
+ # compute fuel flow for level flight
78
+ CP = AC.CP(Peng=Preq)
79
+ fuelFlow = AC.ff(delta=delta, CP=CP) # [kg/s]
80
+
81
+ return fuelFlow
82
+
83
+
84
+ def breguetLeducInitialMass(
85
+ AC, distance, GS, cruiseFuelFlow, payload, fuelReserve
86
+ ):
87
+ """Calculate the estimated initial mass required for the aircraft using
88
+ the Breguet Leduc formula.
89
+
90
+ :param AC: Aircraft object (instance of Bada3Aircraft, Bada4Aircraft, or
91
+ BadaHAircraft).
92
+ :param distance: Flight distance in meters.
93
+ :param GS: Ground speed in m/s (assumed equal to true airspeed under no-
94
+ wind conditions).
95
+ :param cruiseFuelFlow: Fuel flow rate during cruise in kg/s.
96
+ :param payload: Payload percentage (of the maximum payload mass) to be
97
+ used.
98
+ :param fuelReserve: Fuel reserve time in seconds.
99
+ :type AC: object
100
+ :type distance: float
101
+ :type GS: float
102
+ :type cruiseFuelFlow: float
103
+ :type payload: float
104
+ :type fuelReserve: float
105
+ :return: Initial mass in kg.
106
+ :rtype: float
107
+ """
108
+
109
+ fuelReserveMass = fuelReserve * cruiseFuelFlow
110
+
111
+ if AC.MPL is not None:
112
+ maximumPayload = AC.MPL
113
+ else:
114
+ maximumPayload = AC.MTOW - AC.OEW - AC.MFL
115
+ payloadMass = (payload / 100) * maximumPayload
116
+
117
+ minimumLandingMass = AC.OEW + payloadMass + fuelReserveMass
118
+
119
+ initialMass = minimumLandingMass * exp(
120
+ (cruiseFuelFlow * distance) / (AC.MREF * GS)
121
+ )
122
+
123
+ return initialMass
124
+
125
+
126
+ def getInitialMass(
127
+ AC,
128
+ distance,
129
+ altitude,
130
+ M,
131
+ payload=60,
132
+ fuelReserve=3600,
133
+ flightPlanInitialMass=None,
134
+ deltaTemp=0,
135
+ ):
136
+ """Calculates the estimated initial aircraft mass assumig cruise phase,
137
+ combining flight plan data, aircraft envelope constraints, and an
138
+ exponential fuel consumption model inspired by the Breguet Leduc formula.
139
+
140
+ :param AC: Aircraft object (instance of Bada3Aircraft, Bada4Aircraft,
141
+ BadaEAircraft, or BadaHAircraft).
142
+ :param distance: Distance to be flown in meters.
143
+ :param altitude: Cruising altitude in meters.
144
+ :param M: Mach number at cruising altitude.
145
+ :param payload: Percentage of the maximum payload mass (default is 60%).
146
+ :param fuelReserve: Fuel reserve time in seconds (default is 3600 seconds,
147
+ or 1 hour).
148
+ :param flightPlanInitialMass: Optional initial mass from a flight plan, in
149
+ kg.
150
+ :param deltaTemp: Temperature deviation from standard atmosphere.
151
+ :type AC: object
152
+ :type distance: float
153
+ :type altitude: float
154
+ :type M: float
155
+ :type payload: float, optional
156
+ :type fuelReserve: float, optional
157
+ :type flightPlanInitialMass: float, optional
158
+ :type deltaTemp: float, optional
159
+ :return: Estimated initial aircraft mass in kg.
160
+ :rtype: float
161
+ """
162
+
163
+ # set Initial Mass from FPL check
164
+ if flightPlanInitialMass is not None:
165
+ initialMass = flightPlanInitialMass
166
+ else:
167
+ # in case of no wind, the ground speed is the same as true airspeed
168
+ [theta, delta, sigma] = atm.atmosphereProperties(
169
+ h=altitude, DeltaTemp=deltaTemp
170
+ )
171
+ TAS = atm.mach2Tas(Mach=M, theta=theta)
172
+ GS = TAS
143
173
 
144
174
  if AC.BADAFamily.BADA3 or AC.BADAFamily.BADA4:
145
175
  if (AC.MMO is not None and AC.MMO >= 1.0) or (
@@ -148,14 +178,16 @@ class TrajectoryPrediction:
148
178
  # identified as fighter jet
149
179
  initialMass = AC.MREF
150
180
  else:
151
- initialMass = initialMassCalculation(
181
+ cruiseFuelFlow = cruiseFuelConsumption(
182
+ AC=AC, altitude=altitude, M=M, deltaTemp=deltaTemp
183
+ )
184
+ initialMass = breguetLeducInitialMass(
152
185
  AC=AC,
153
186
  distance=distance,
154
- altitude=altitude,
155
- M=M,
187
+ GS=GS,
188
+ cruiseFuelFlow=cruiseFuelFlow,
156
189
  payload=payload,
157
190
  fuelReserve=fuelReserve,
158
- flightPlanInitialMass=flightPlanInitialMass,
159
191
  )
160
192
 
161
193
  elif AC.BADAFamily.BADAH:
@@ -163,14 +195,19 @@ class TrajectoryPrediction:
163
195
  # identified as fighter
164
196
  initialMass = AC.MREF
165
197
  else:
166
- initialMass = initialMassCalculation(
198
+ cruiseFuelFlow = cruiseFuelConsumption(
199
+ AC=AC, altitude=altitude, M=M, deltaTemp=deltaTemp
200
+ )
201
+ initialMass = breguetLeducInitialMass(
167
202
  AC=AC,
168
203
  distance=distance,
169
- altitude=altitude,
170
- M=M,
204
+ GS=GS,
205
+ cruiseFuelFlow=cruiseFuelFlow,
171
206
  payload=payload,
172
207
  fuelReserve=fuelReserve,
173
- flightPlanInitialMass=flightPlanInitialMass,
174
208
  )
175
209
 
176
- return initialMass
210
+ # envelope check
211
+ initialMass = min(max(initialMass, AC.OEW), AC.MTOW)
212
+
213
+ return initialMass
@@ -0,0 +1,92 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyBADA
3
+ Version: 0.1.4
4
+ Summary: pyBADA
5
+ Project-URL: Homepage, https://github.com/eurocontrol-bada/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.12
13
+ Requires-Dist: numpy>=2.2.3
14
+ Requires-Dist: pandas>=2.2.3
15
+ Requires-Dist: scipy>=1.15.2
16
+ Requires-Dist: simplekml>=1.3.6
17
+ Requires-Dist: xlsxwriter>=3.2.2
18
+ Provides-Extra: dev
19
+ Requires-Dist: build; extra == 'dev'
20
+ Requires-Dist: folium==0.19.5; extra == 'dev'
21
+ Requires-Dist: matplotlib==3.10.1; extra == 'dev'
22
+ Requires-Dist: pre-commit==4.1.0; extra == 'dev'
23
+ Requires-Dist: pytest==8.3.5; extra == 'dev'
24
+ Requires-Dist: readthedocs-sphinx-search>=0.3.2; extra == 'dev'
25
+ Requires-Dist: ruff==0.11.5; extra == 'dev'
26
+ Requires-Dist: sphinx-gallery==0.19.0; extra == 'dev'
27
+ Requires-Dist: sphinx-rtd-theme==3.0.2; extra == 'dev'
28
+ Requires-Dist: sphinx==8.2.3; extra == 'dev'
29
+ Requires-Dist: twine; extra == 'dev'
30
+ Description-Content-Type: text/markdown
31
+
32
+ # pyBADA
33
+
34
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
35
+ <a href="https://github.com/eurocontrol-bada/pybada/blob/main/LICENCE.txt"><img alt="License: EUPL" src="https://img.shields.io/badge/license-EUPL-3785D1.svg"></a>
36
+ <a href="https://pypi.org/project/pyBADA"><img alt="Released on PyPi" src="https://img.shields.io/pypi/v/pyBADA.svg"></a>
37
+ ![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB.svg?logo=python&logoColor=white)
38
+ <a href="https://github.com/eurocontrol-bada/pybada"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
39
+ [![Run unit tests](https://github.com/eurocontrol-bada/pybada/actions/workflows/pytest.yml/badge.svg)](https://github.com/eurocontrol-bada/pybada/actions/workflows/pytest.yml)
40
+
41
+ This package provides aircraft performance modelling, trajectory prediction and optimisation, and visualisation with [BADA](https://www.eurocontrol.int/model/bada) in Python.
42
+
43
+ To get started
44
+
45
+ ```bash
46
+ pip install pyBADA
47
+ ```
48
+
49
+ Examples, the user manual and the API reference can be found at the [pyBADA documentation website](https://eurocontrol-bada.github.io/pybada/index.html).
50
+
51
+ ## Development
52
+
53
+ ```bash
54
+ # Clone the repository
55
+ git clone https://github.com/eurocontrol-bada/pybada
56
+
57
+ # Set up a virtual env and activate it
58
+ python3 -m venv env
59
+ source env/bin/activate
60
+
61
+ # Install package
62
+ pip install .
63
+ # Install a couple of packages for formatting, linting and building the docs
64
+ pip install .[dev]
65
+ # Install pre-commit
66
+ pre-commit install
67
+
68
+ # Run unit tests
69
+ python3 -m pytest tests/
70
+
71
+ # Format code
72
+ ruff format
73
+
74
+ # Lint code
75
+ ruff check
76
+
77
+ # Build the docs
78
+ cd docs
79
+ make html
80
+ ```
81
+
82
+
83
+ ### Running on unsupported environments
84
+
85
+ You won't receive support for it, but you can pass the flag `--ignore-requires-python` to install pyBADA on an unsupported Python version.
86
+
87
+
88
+ ## License
89
+
90
+ BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/model/bada).
91
+
92
+ This project is released 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.
@@ -1,17 +1,17 @@
1
- pyBADA/TCL.py,sha256=yWXZFxbHBsdXEACPQR6bk8za3ATmdljxS7ZfY8-1xG8,368866
1
+ pyBADA/TCL.py,sha256=K6L_E0BchttNDWrAfDfuHWk3-ux7mvgeONpr2OkQNgw,373689
2
2
  pyBADA/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- pyBADA/aircraft.py,sha256=tvldebj44Klh-E5garzuMNZrvaib6mmrmiYyMH3bQPM,13075
4
- pyBADA/atmosphere.py,sha256=tp8erWZ67WtgO8Wii8b4jvVCyYzFRuBEl7T1i_BCiKQ,10820
5
- pyBADA/bada3.py,sha256=bV4O_2MHg27R4rHQ7j4o_mG3eroEdRdtvh3Jcbhf3RA,186048
6
- pyBADA/bada4.py,sha256=0X3GRC_ppkbcagrkMpf6e-HqLWtiK15yLhSUVmXOzXQ,219079
7
- pyBADA/badaH.py,sha256=qvJR2l09pL8dgGxgjh4_gS35WDF32AK6-Ismo-d2zXI,150673
8
- pyBADA/configuration.py,sha256=tR2fAs3frPQ1L1zAZkqe-mj9MypJGNBHi9RsRmcozUA,6500
9
- pyBADA/constants.py,sha256=2qC7wPPpf0zr-eo4lTFrK_muK-WI1hDlWRnl-gMsYF4,1018
10
- pyBADA/conversions.py,sha256=uujcv6Rmh2sY54v6cDT5Fr4T5l3Nglcd6N-xkN8yGCo,3362
11
- pyBADA/flightTrajectory.py,sha256=LC2j15kb3IRRugQJeNDumYnQ-P0oqpJcnEtvkoGQL5Q,35609
12
- pyBADA/geodesic.py,sha256=F_vxd75rObYSYOL3zfuXDW2_GHN7kNXTxXnrIXG6Pb0,30496
13
- pyBADA/magnetic.py,sha256=KTDjZ7OQXe5TYxNbPz8yE4Tq_JI5Qnp01ukJfekUlu4,4998
14
- pyBADA/trajectoryPrediction.py,sha256=rTXhItuc5gORSrRfLgHnNsbiz3X6X4tK4C4DNFyJXRA,6052
3
+ pyBADA/aircraft.py,sha256=VTXMyTm9Gw-EQpNTL9Q8-Mzp2wXE9S2mjJLHvSF-AZs,13009
4
+ pyBADA/atmosphere.py,sha256=audmiVJR1fdraeorWBpYqQTlFn_uZVRWcC9ex-Nr9Jw,11348
5
+ pyBADA/bada3.py,sha256=hpKX4abW16ocRe2RjOvE7Codo5ljWy6Wm3eXFvos8J4,186306
6
+ pyBADA/bada4.py,sha256=PjP26gEn45Ebajm4TR9FhKMUDQuIlBXOANSCjeS7NsY,222266
7
+ pyBADA/badaH.py,sha256=rF7gE5-tsemGDKwkUpiPazw5vdLpMkBNuXpI_22z0S8,153349
8
+ pyBADA/configuration.py,sha256=66OCBBYJhXF4quCHDK47YA9yOftuPdrbvbn88P-531E,6505
9
+ pyBADA/constants.py,sha256=zJhiLcG49Ab2i-c_mHNCmfLpecmQozvIOjX71aVB5KE,952
10
+ pyBADA/conversions.py,sha256=grIokt50KOTaINsmMDWyCJvMpt-_U3FgC9ZNg_aqC1g,3252
11
+ pyBADA/flightTrajectory.py,sha256=XEbohC3NGLaDymSLyqyzM9h3D6Tzns2iHLx9uGAMs-U,38483
12
+ pyBADA/geodesic.py,sha256=jTEphU_H9D10lgi1Pm77OSsT7icApniaNtSSVHTjZXo,30721
13
+ pyBADA/magnetic.py,sha256=O5Ki4ViSqvznl08gZRM90mBbkkpAMR6PR0hKc-FY8yg,4996
14
+ pyBADA/trajectoryPrediction.py,sha256=jC-FxEhD3C_hP5nRutZndYtrat14NIKMVG30Aiq0XJ4,6945
15
15
  pyBADA/data/magneticDeclinationGridData.json,sha256=ffmLcxdDwFwJqV4WPyMM5SWt60tMj8xsLh5IHYkpO3U,5390918
16
16
  pyBADA/aircraft/BADA3/DUMMY/BADA.GPF,sha256=1Am9yU8v9nnIpvJt-XhJRz4APOkRzfNPujKAy3UCYg0,9831
17
17
  pyBADA/aircraft/BADA3/DUMMY/BZJT__.APF,sha256=wGyXK-ro1S6YhC4wp2nMQKi0JGYLvTunNjO6x_YbhW4,2523
@@ -90,8 +90,8 @@ pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTF,sha256=aEthZF1xztp6QSHYEwU5tH4HF8x
90
90
  pyBADA/aircraft/BADAH/DUMMY/DUMH/LRC.OPT,sha256=7WecIu4kfw5nM_ADih06Hb8pCoxLVsEdHHJTqQrx4hg,10123
91
91
  pyBADA/aircraft/BADAH/DUMMY/DUMH/MEC.OPT,sha256=yKczjH6lZqTplmcV79tZLvwXmHM2F9bYoB2gIM8hBpg,10123
92
92
  pyBADA/aircraft/BADAH/DUMMY/DUMH/MRC.OPT,sha256=fTGqt0P9xgt9Q4sKPlL0CZi9aj73prAPlXj1dpWHSOk,10123
93
- pybada-0.1.2.dist-info/METADATA,sha256=fr3MA2yqNiu1gUyYIaVW8T1feyEiK9LZXx4EzH8tv3M,2829
94
- pybada-0.1.2.dist-info/WHEEL,sha256=3U_NnUcV_1B1kPkYaPzN-irRckL5VW_lytn0ytO_kRY,87
95
- pybada-0.1.2.dist-info/licenses/AUTHORS,sha256=iCKpU7CHp2sB4u5hkS2WyMJHLzL0gfMm-bobd7QDmzE,108
96
- pybada-0.1.2.dist-info/licenses/LICENCE.txt,sha256=RpvAZSjULHvoTR_esTlucJ08-zdQydnoqQLbqOh9Ub8,13826
97
- pybada-0.1.2.dist-info/RECORD,,
93
+ pybada-0.1.4.dist-info/METADATA,sha256=k2Cw0Hv96AneCh1db80ENgUDtwaVkva9yJzcwXrvtCg,3382
94
+ pybada-0.1.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
95
+ pybada-0.1.4.dist-info/licenses/AUTHORS,sha256=iCKpU7CHp2sB4u5hkS2WyMJHLzL0gfMm-bobd7QDmzE,108
96
+ pybada-0.1.4.dist-info/licenses/LICENCE.txt,sha256=RpvAZSjULHvoTR_esTlucJ08-zdQydnoqQLbqOh9Ub8,13826
97
+ pybada-0.1.4.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.26.1
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,70 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: pyBADA
3
- Version: 0.1.2
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
- Classifier: License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)
9
- Classifier: Programming Language :: Python :: 3
10
- Requires-Python: >=3.11
11
- Requires-Dist: numpy==1.26.1
12
- Requires-Dist: pandas==2.2.3
13
- Requires-Dist: scipy==1.11.3
14
- Requires-Dist: simplekml==1.3.6
15
- Requires-Dist: xlsxwriter==3.2.0
16
- Provides-Extra: dev
17
- Requires-Dist: black==23.9.1; extra == 'dev'
18
- Requires-Dist: flake8==6.1.0; extra == 'dev'
19
- Requires-Dist: folium==0.17.0; extra == 'dev'
20
- Requires-Dist: matplotlib==3.9.2; extra == 'dev'
21
- Requires-Dist: pre-commit==3.8.0; extra == 'dev'
22
- Requires-Dist: sphinx-gallery==0.17.1; extra == 'dev'
23
- Requires-Dist: sphinx-rtd-theme==2.0.0; extra == 'dev'
24
- Requires-Dist: sphinx==7.4.7; extra == 'dev'
25
- Description-Content-Type: text/markdown
26
-
27
- # pyBADA
28
-
29
- <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>
30
- <a href="https://pypi.org/project/pyBADA"><img alt="Released on PyPi" src="https://img.shields.io/pypi/v/pyBADA.svg"></a>
31
- ![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB.svg?logo=python&logoColor=white)
32
- <a href="https://github.com/eurocontrol/pybada"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
33
-
34
- The BADA aircraft performance toolbox for Python
35
-
36
- To get started
37
-
38
- ```bash
39
- pip install pyBADA
40
- ```
41
-
42
- ## Examples
43
-
44
- - `file_parser`: BADA file parser and retrieval of some basic BADA parameters for all BADA3/4/H
45
- - `BADAData`: loading complete BADA3 dataset and retrieval of a specific parameters for a specific aircraft
46
- - `optimum_speed_altitude`: calculation of optimum speeds and altitude for BADA4 and BADAH aircraft
47
- - `ac_trajectory`: simple, but complete, aircraft trajectory for BADA3 and BADA4 aircraft
48
- - `ac_trajectory_GPS`: simple, but complete, aircraft trajectory for BADA3 and BADA4 aircraft including geodesic calculations
49
- - `heli_trajectory`: simple, but complete, helicopter trajectory for BADAH aircraft
50
-
51
- ## Development
52
-
53
- ```bash
54
- # Optionally, set up a virtual env and activate it
55
- python3 -m venv env
56
- source env/bin/activate
57
- # Install package in editable mode
58
- pip install -e .
59
- # Install a couple of packages for formatting, linting and building the docs
60
- pip install -e .[dev]
61
- # To build the docs
62
- cd docs
63
- make html
64
- ```
65
-
66
- ## License
67
-
68
- BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/).
69
-
70
- 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.