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.
Files changed (99) hide show
  1. pyBADA/TCL.py +8731 -0
  2. pyBADA/__init__.py +0 -0
  3. pyBADA/aircraft/BADA3/DUMMY/BADA.GPF +113 -0
  4. pyBADA/aircraft/BADA3/DUMMY/BZJT__.APF +25 -0
  5. pyBADA/aircraft/BADA3/DUMMY/BZJT__.OPF +61 -0
  6. pyBADA/aircraft/BADA3/DUMMY/BZJT__.PTD +139 -0
  7. pyBADA/aircraft/BADA3/DUMMY/BZJT__.PTF +73 -0
  8. pyBADA/aircraft/BADA3/DUMMY/GA____.APF +25 -0
  9. pyBADA/aircraft/BADA3/DUMMY/GA____.OPF +61 -0
  10. pyBADA/aircraft/BADA3/DUMMY/GA____.PTD +71 -0
  11. pyBADA/aircraft/BADA3/DUMMY/GA____.PTF +39 -0
  12. pyBADA/aircraft/BADA3/DUMMY/J2H___.APF +25 -0
  13. pyBADA/aircraft/BADA3/DUMMY/J2H___.OPF +61 -0
  14. pyBADA/aircraft/BADA3/DUMMY/J2H___.PTD +131 -0
  15. pyBADA/aircraft/BADA3/DUMMY/J2H___.PTF +69 -0
  16. pyBADA/aircraft/BADA3/DUMMY/J2M___.APF +25 -0
  17. pyBADA/aircraft/BADA3/DUMMY/J2M___.OPF +61 -0
  18. pyBADA/aircraft/BADA3/DUMMY/J2M___.PTD +123 -0
  19. pyBADA/aircraft/BADA3/DUMMY/J2M___.PTF +65 -0
  20. pyBADA/aircraft/BADA3/DUMMY/J4H___.APF +25 -0
  21. pyBADA/aircraft/BADA3/DUMMY/J4H___.OPF +61 -0
  22. pyBADA/aircraft/BADA3/DUMMY/J4H___.PTD +139 -0
  23. pyBADA/aircraft/BADA3/DUMMY/J4H___.PTF +73 -0
  24. pyBADA/aircraft/BADA3/DUMMY/ReleaseSummary +35 -0
  25. pyBADA/aircraft/BADA3/DUMMY/SYNONYM.NEW +155 -0
  26. pyBADA/aircraft/BADA3/DUMMY/TP2M__.APF +25 -0
  27. pyBADA/aircraft/BADA3/DUMMY/TP2M__.OPF +61 -0
  28. pyBADA/aircraft/BADA3/DUMMY/TP2M__.PTD +99 -0
  29. pyBADA/aircraft/BADA3/DUMMY/TP2M__.PTF +53 -0
  30. pyBADA/aircraft/BADA4/DUMMY/ACM_BADA4.xsd +556 -0
  31. pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.ATF +106 -0
  32. pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.xml +244 -0
  33. pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTD +182 -0
  34. pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTF +41 -0
  35. pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTD +182 -0
  36. pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTF +41 -0
  37. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.ATF +191 -0
  38. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.xml +540 -0
  39. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTD +218 -0
  40. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTF +49 -0
  41. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTD +218 -0
  42. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTF +49 -0
  43. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/LRC.dat +38 -0
  44. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/MEC.dat +58 -0
  45. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/MRC.dat +38 -0
  46. pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/OPTALT.dat +37 -0
  47. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.ATF +204 -0
  48. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.xml +648 -0
  49. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTD +281 -0
  50. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTF +63 -0
  51. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTD +281 -0
  52. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTF +63 -0
  53. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/ECON.OPT +37 -0
  54. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/LRC.OPT +38 -0
  55. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/MEC.OPT +58 -0
  56. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/MRC.OPT +38 -0
  57. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/OPTALT.OPT +37 -0
  58. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.ATF +238 -0
  59. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.xml +737 -0
  60. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTD +281 -0
  61. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTF +63 -0
  62. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTD +281 -0
  63. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTF +63 -0
  64. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/ECON.OPT +37 -0
  65. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/LRC.OPT +36 -0
  66. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MEC.OPT +56 -0
  67. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MRC.OPT +36 -0
  68. pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/OPTALT.OPT +37 -0
  69. pyBADA/aircraft/BADA4/DUMMY/GPF.xml +130 -0
  70. pyBADA/aircraft/BADA4/DUMMY/GPF_BADA4.xsd +75 -0
  71. pyBADA/aircraft/BADA4/DUMMY/aircraft_model_default.xml +311 -0
  72. pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH.ATF +97 -0
  73. pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH.xml +82 -0
  74. pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTD +632 -0
  75. pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTF +71 -0
  76. pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTD +632 -0
  77. pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTF +71 -0
  78. pyBADA/aircraft/BADAH/DUMMY/DUMH/LRC.OPT +142 -0
  79. pyBADA/aircraft/BADAH/DUMMY/DUMH/MEC.OPT +142 -0
  80. pyBADA/aircraft/BADAH/DUMMY/DUMH/MRC.OPT +142 -0
  81. pyBADA/aircraft.py +414 -0
  82. pyBADA/atmosphere.py +345 -0
  83. pyBADA/bada3.py +4566 -0
  84. pyBADA/bada4.py +5327 -0
  85. pyBADA/badaE.py +3317 -0
  86. pyBADA/badaH.py +3632 -0
  87. pyBADA/configuration.py +98 -0
  88. pyBADA/constants.py +64 -0
  89. pyBADA/conversions.py +197 -0
  90. pyBADA/data/magneticDeclinationGridData.json +247067 -0
  91. pyBADA/flightTrajectory.py +929 -0
  92. pyBADA/geodesic.py +760 -0
  93. pyBADA/magnetic.py +119 -0
  94. pyBADA/trajectoryPrediction.py +175 -0
  95. pybada-0.1.0.dist-info/METADATA +57 -0
  96. pybada-0.1.0.dist-info/RECORD +99 -0
  97. pybada-0.1.0.dist-info/WHEEL +4 -0
  98. pybada-0.1.0.dist-info/licenses/AUTHORS +2 -0
  99. pybada-0.1.0.dist-info/licenses/LICENCE.txt +287 -0
@@ -0,0 +1,98 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pyBADA
4
+ Common configuration 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 os
20
+ import sys
21
+ from pathlib import Path
22
+ import inspect
23
+
24
+ # get current and parent directory
25
+ currentDir = Path(os.path.dirname(os.path.realpath(__file__)))
26
+ parentDir = currentDir.parent
27
+
28
+
29
+ def getVersionsList(badaFamily):
30
+ # list file and directories
31
+ path = getBadaFamilyPath(badaFamily)
32
+ items = os.listdir(path)
33
+
34
+ versionsList = []
35
+ for item in items:
36
+ if os.path.isdir(os.path.join(path, item)):
37
+ versionsList.append(item)
38
+
39
+ return versionsList
40
+
41
+
42
+ def getAircraftList(badaFamily, badaVersion):
43
+ path = getBadaVersionPath(badaFamily, badaVersion)
44
+
45
+ if not os.path.exists(path):
46
+ return []
47
+ else:
48
+ items = os.listdir(path)
49
+
50
+ # check if I have BADA3 xml or standard ACSII files
51
+ xml = True
52
+ for item in items:
53
+ if "OPF" in item:
54
+ xml = False
55
+ break
56
+
57
+ if badaFamily == "BADA4" or badaFamily == "BADAH" or badaFamily == "BADAE" or xml:
58
+ aircraftList = []
59
+ for item in items:
60
+ if os.path.isdir(os.path.join(path, item)):
61
+ aircraftList.append(item)
62
+
63
+ elif badaFamily == "BADA3":
64
+ aircraftList = []
65
+ for item in items:
66
+ if len(item.split(".")) == 2:
67
+ if item.split(".")[0].rstrip("_") not in aircraftList and (
68
+ item.split(".")[1] == "PTD"
69
+ or item.split(".")[1] == "PTF"
70
+ or item.split(".")[1] == "OPF"
71
+ or item.split(".")[1] == "APF"
72
+ ):
73
+ aircraftList.append(item.split(".")[0].rstrip("_"))
74
+
75
+ return aircraftList
76
+
77
+
78
+ def getBadaFamilyPath(badaFamily):
79
+ path = os.path.join(getAircraftPath(), badaFamily)
80
+ return path
81
+
82
+
83
+ def getBadaVersionPath(badaFamily, badaVersion):
84
+ path = os.path.join(getAircraftPath(), badaFamily, badaVersion)
85
+ return path
86
+
87
+
88
+ def getAircraftPath():
89
+ # path = os.path.join(parentDir, "aircraft")
90
+ package_dir = os.path.dirname(__file__)
91
+ path = os.path.join(package_dir, "aircraft")
92
+ return path
93
+
94
+
95
+ def getDataPath():
96
+ package_dir = os.path.dirname(__file__)
97
+ path = os.path.join(package_dir, "data")
98
+ return path
pyBADA/constants.py ADDED
@@ -0,0 +1,64 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pyBADA
4
+ Common constants 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
+ # Gravitational acceleration
19
+ g = 9.80665
20
+
21
+ # Real gas constant for air
22
+ R = 287.05287
23
+
24
+ # ISA temperature gradient with altitude below the tropopause
25
+ temp_h = 0.0065
26
+
27
+ # Standard atmospheric temperature at MSL
28
+ temp_0 = 288.15
29
+
30
+ # Standard atmospheric temperature at tropopause (11km)
31
+ temp_11 = 216.65
32
+
33
+ # Tropopause geopotatial pressure altitude [m]
34
+ h_11 = 11000.0
35
+
36
+ # Standard atmospheric pressure at tropopause (11km)
37
+ p_11 = 22632.04
38
+
39
+ # Standard atmospheric pressure at MSL
40
+ p_0 = 101325.0
41
+
42
+ # Standard atmospheric density at MSL
43
+ rho_0 = 1.225
44
+
45
+ # Speed of sound
46
+ a_0 = 340.294
47
+
48
+ # Adiabatic index of air
49
+ Agamma = 1.4
50
+
51
+ # Adiabatic index of air - ratio
52
+ Amu = (Agamma - 1) / Agamma
53
+
54
+ # Average Earth radius [km] - https://en.wikipedia.org/wiki/Earth_radius#Mean_radius
55
+ AVG_EARTH_RADIUS_KM = 6371
56
+
57
+ # semi-major axis (WGS-84) [m]
58
+ a = 6378137.0
59
+
60
+ # semi-minor axis (WGS-84) [m]
61
+ b = 6356752.314245
62
+
63
+ # flattening (WGS-84)
64
+ f = (a - b) / a
pyBADA/conversions.py ADDED
@@ -0,0 +1,197 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pyBADA
4
+ Common unit conversions 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
+ from math import pi
20
+ from datetime import datetime
21
+ from time import mktime
22
+
23
+
24
+ def ft2m(val):
25
+ """
26
+ This function converts from ft to m s
27
+
28
+ :param val: value in ft
29
+ :returns: vaue in m
30
+ """
31
+ return round(float(val) * 0.3048, 10)
32
+
33
+
34
+ def nm2m(val):
35
+ """
36
+ This function converts from nautical miles to m
37
+
38
+ :param val: value in nautical miles
39
+ :returns: vaue in m
40
+ """
41
+ return val * 1852.0
42
+
43
+
44
+ def h2s(val):
45
+ """
46
+ This function converts from hours to m seconds
47
+
48
+ :param val: value in hours
49
+ :returns: vaue in seconds
50
+ """
51
+ return val * 3600.0
52
+
53
+
54
+ def kt2ms(val):
55
+ """
56
+ This function converts from kt to m s^-1
57
+
58
+ :param val: value in kt
59
+ :returns: vaue in m s^-1
60
+ """
61
+
62
+ if val is None:
63
+ return None
64
+ else:
65
+ return round(float(val) * 0.514444, 10)
66
+
67
+
68
+ def lb2kg(val):
69
+ """
70
+ This function converts from lb to kg
71
+
72
+ :param val: value in lb
73
+ :returns: vaue in kg
74
+ """
75
+ return val * 0.453592
76
+
77
+
78
+ def deg2rad(val):
79
+ """
80
+ This function converts from decimal degrees to radians
81
+
82
+ :param val: value in decimal degrees
83
+ :returns: vaue in radians
84
+ """
85
+ return val * pi / 180.0
86
+
87
+
88
+ def m2ft(val):
89
+ """
90
+ This function converts from meters to feets
91
+
92
+ :param val: value in meters
93
+ :returns: value in feets
94
+ """
95
+
96
+ return round(float(val) / 0.3048, 10)
97
+
98
+
99
+ def m2nm(val):
100
+ """
101
+ This function converts from meters to nautical miles
102
+
103
+ :param val: value in meters
104
+ :returns: value in nautical miles
105
+ """
106
+ return val / 1852.0
107
+
108
+
109
+ def s2h(val):
110
+ """
111
+ This function converts from seconds to hours
112
+
113
+ :param val: value in seconds
114
+ :returns: value in hours
115
+ """
116
+ return val / 3600.0
117
+
118
+
119
+ def ms2kt(val):
120
+ """
121
+ This function converts from m s^-1 to kt
122
+
123
+ :param val: value in m s^-1
124
+ :returns: value in kt
125
+ """
126
+
127
+ if val is None:
128
+ return None
129
+ else:
130
+ return round(float(val) / 0.514444, 10)
131
+
132
+
133
+ def kg2lb(val):
134
+ """
135
+ This function converts from kg to lb
136
+
137
+ :param val: value in kg
138
+ :returns: value in lb
139
+ """
140
+ return val / 0.453592
141
+
142
+
143
+ def rad2deg(val):
144
+ """
145
+ This function converts from radians to decimal degrees
146
+
147
+ :param val: value in radians
148
+ :returns: value in decimal degrees
149
+ """
150
+ return val / pi * 180.0
151
+
152
+
153
+ def hp2W(val):
154
+ """
155
+ This function converts from horsepower to watts
156
+
157
+ :param val: value in horsepower
158
+ :returns: value in watts
159
+ """
160
+ return val * 745.699872
161
+
162
+
163
+ def date2posix(val):
164
+ """
165
+ This function converts a date format to posix
166
+
167
+ :param val: date in %Y-%m-%d %H:%M:%S format
168
+ :returns: posix time referenced to 01-01-1970 [s]
169
+ """
170
+ return mktime(datetime.strptime(val, "%Y-%m-%d %H:%M:%S").timetuple())
171
+
172
+
173
+ def unix2date(val):
174
+ """
175
+ This function converts posix to date format
176
+
177
+ :param val: time referenced to 01-01-1970 [s]
178
+ :returns: date in %Y-%m-%d %H:%M:%S format
179
+ """
180
+ return datetime.fromtimestamp(int(val)).strftime("%Y-%m-%d %H:%M:%S")
181
+
182
+
183
+ convertFrom = {
184
+ "unix": unix2date,
185
+ "ft": ft2m,
186
+ "nm": nm2m,
187
+ "h": h2s,
188
+ "kt": kt2ms,
189
+ "lb": lb2kg,
190
+ "deg": deg2rad,
191
+ "date": date2posix,
192
+ "rad": rad2deg,
193
+ "ms": ms2kt,
194
+ "m": m2ft,
195
+ "kg": kg2lb,
196
+ "s": s2h,
197
+ }