pyBADA 0.1.1__tar.gz → 0.1.3__tar.gz

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 (142) hide show
  1. pybada-0.1.3/.github/workflows/pytest.yml +31 -0
  2. pybada-0.1.3/.github/workflows/release.yml +33 -0
  3. {pybada-0.1.1 → pybada-0.1.3}/.github/workflows/sphinx.yml +1 -0
  4. pybada-0.1.3/PKG-INFO +83 -0
  5. pybada-0.1.3/README.md +51 -0
  6. pybada-0.1.3/docs/source/_static/css/custom.css +15 -0
  7. pybada-0.1.3/docs/source/_templates/footer.html +10 -0
  8. {pybada-0.1.1 → pybada-0.1.3}/docs/source/conf.py +7 -0
  9. pybada-0.1.3/docs/source/getting-started.rst +65 -0
  10. {pybada-0.1.1 → pybada-0.1.3}/docs/source/index.rst +7 -2
  11. {pybada-0.1.1 → pybada-0.1.3}/examples/BADAData.py +7 -10
  12. {pybada-0.1.1 → pybada-0.1.3}/examples/ac_trajectory.py +10 -2
  13. {pybada-0.1.1 → pybada-0.1.3}/examples/file_parser.py +32 -16
  14. pybada-0.1.3/examples/initial_mass.py +64 -0
  15. {pybada-0.1.1 → pybada-0.1.3}/examples/optimum_speed_altitude.py +7 -4
  16. {pybada-0.1.1 → pybada-0.1.3}/pyproject.toml +22 -17
  17. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/TCL.py +589 -379
  18. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/aircraft.py +81 -134
  19. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/atmosphere.py +0 -3
  20. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/bada3.py +270 -316
  21. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/bada4.py +215 -260
  22. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/badaH.py +87 -173
  23. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/configuration.py +60 -3
  24. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/constants.py +0 -3
  25. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/conversions.py +0 -3
  26. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/flightTrajectory.py +78 -22
  27. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/geodesic.py +0 -3
  28. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/magnetic.py +0 -3
  29. pybada-0.1.3/src/pyBADA/trajectoryPrediction.py +209 -0
  30. pybada-0.1.3/tests/load_test.py +17 -0
  31. pybada-0.1.1/PKG-INFO +0 -72
  32. pybada-0.1.1/README.md +0 -44
  33. pybada-0.1.1/src/pyBADA/trajectoryPrediction.py +0 -176
  34. {pybada-0.1.1 → pybada-0.1.3}/.gitignore +0 -0
  35. {pybada-0.1.1 → pybada-0.1.3}/.pre-commit-config.yaml +0 -0
  36. {pybada-0.1.1 → pybada-0.1.3}/AUTHORS +0 -0
  37. {pybada-0.1.1 → pybada-0.1.3}/LICENCE.txt +0 -0
  38. {pybada-0.1.1 → pybada-0.1.3}/docs/Makefile +0 -0
  39. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/TCL.rst +0 -0
  40. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/aircraft.rst +0 -0
  41. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/atmosphere.rst +0 -0
  42. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/bada3.rst +0 -0
  43. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/bada4.rst +0 -0
  44. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/badaH.rst +0 -0
  45. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/configuration.rst +0 -0
  46. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/constants.rst +0 -0
  47. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/conversions.rst +0 -0
  48. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/flightTrajectory.rst +0 -0
  49. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/geodesic.rst +0 -0
  50. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/magnetic.rst +0 -0
  51. {pybada-0.1.1 → pybada-0.1.3}/docs/source/API_reference/trajectoryPrediction.rst +0 -0
  52. {pybada-0.1.1 → pybada-0.1.3}/docs/source/_static/default_thumbnail.png +0 -0
  53. {pybada-0.1.1 → pybada-0.1.3}/docs/source/_static/pyBADA_architecture.png +0 -0
  54. {pybada-0.1.1 → pybada-0.1.3}/docs/source/architecture.rst +0 -0
  55. {pybada-0.1.1 → pybada-0.1.3}/docs/source/history.rst +0 -0
  56. {pybada-0.1.1 → pybada-0.1.3}/docs/source/pyBADA.rst +0 -0
  57. {pybada-0.1.1 → pybada-0.1.3}/docs/source/userManual.rst +0 -0
  58. {pybada-0.1.1 → pybada-0.1.3}/docs/source/user_manual/examples.rst +0 -0
  59. {pybada-0.1.1 → pybada-0.1.3}/docs/source/user_manual/introduction.rst +0 -0
  60. {pybada-0.1.1 → pybada-0.1.3}/examples/GALLERY_HEADER.rst +0 -0
  61. {pybada-0.1.1 → pybada-0.1.3}/examples/ac_trajectory_GPS.py +0 -0
  62. {pybada-0.1.1 → pybada-0.1.3}/examples/geodesic.py +0 -0
  63. {pybada-0.1.1 → pybada-0.1.3}/examples/heli_trajectory.py +0 -0
  64. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/BADA.GPF +0 -0
  65. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/BZJT__.APF +0 -0
  66. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/BZJT__.OPF +0 -0
  67. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/BZJT__.PTD +0 -0
  68. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/BZJT__.PTF +0 -0
  69. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/GA____.APF +0 -0
  70. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/GA____.OPF +0 -0
  71. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/GA____.PTD +0 -0
  72. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/GA____.PTF +0 -0
  73. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J2H___.APF +0 -0
  74. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J2H___.OPF +0 -0
  75. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J2H___.PTD +0 -0
  76. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J2H___.PTF +0 -0
  77. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J2M___.APF +0 -0
  78. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J2M___.OPF +0 -0
  79. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J2M___.PTD +0 -0
  80. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J2M___.PTF +0 -0
  81. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J4H___.APF +0 -0
  82. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J4H___.OPF +0 -0
  83. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J4H___.PTD +0 -0
  84. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/J4H___.PTF +0 -0
  85. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/ReleaseSummary +0 -0
  86. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/SYNONYM.NEW +0 -0
  87. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/TP2M__.APF +0 -0
  88. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/TP2M__.OPF +0 -0
  89. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/TP2M__.PTD +0 -0
  90. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA3/DUMMY/TP2M__.PTF +0 -0
  91. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/ACM_BADA4.xsd +0 -0
  92. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.ATF +0 -0
  93. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.xml +0 -0
  94. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTD +0 -0
  95. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTF +0 -0
  96. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTD +0 -0
  97. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTF +0 -0
  98. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.ATF +0 -0
  99. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.xml +0 -0
  100. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTD +0 -0
  101. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTF +0 -0
  102. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTD +0 -0
  103. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTF +0 -0
  104. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/LRC.OPT +0 -0
  105. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/MEC.OPT +0 -0
  106. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/MRC.OPT +0 -0
  107. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TBP/OPTALT.OPT +0 -0
  108. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.ATF +0 -0
  109. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.xml +0 -0
  110. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTD +0 -0
  111. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTF +0 -0
  112. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTD +0 -0
  113. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTF +0 -0
  114. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/ECON.OPT +0 -0
  115. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/LRC.OPT +0 -0
  116. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/MEC.OPT +0 -0
  117. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/MRC.OPT +0 -0
  118. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/OPTALT.OPT +0 -0
  119. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.ATF +0 -0
  120. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.xml +0 -0
  121. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTD +0 -0
  122. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTF +0 -0
  123. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTD +0 -0
  124. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTF +0 -0
  125. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/ECON.OPT +0 -0
  126. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/LRC.OPT +0 -0
  127. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MEC.OPT +0 -0
  128. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MRC.OPT +0 -0
  129. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/OPTALT.OPT +0 -0
  130. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/GPF.xml +0 -0
  131. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADA4/DUMMY/GPF_BADA4.xsd +0 -0
  132. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADAH/DUMMY/DUMH/DUMH.ATF +0 -0
  133. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADAH/DUMMY/DUMH/DUMH.xml +0 -0
  134. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTD +0 -0
  135. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTF +0 -0
  136. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTD +0 -0
  137. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTF +0 -0
  138. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADAH/DUMMY/DUMH/LRC.OPT +0 -0
  139. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADAH/DUMMY/DUMH/MEC.OPT +0 -0
  140. {pybada-0.1.1 → pybada-0.1.3}/src/aircraft/BADAH/DUMMY/DUMH/MRC.OPT +0 -0
  141. {pybada-0.1.1 → pybada-0.1.3}/src/data/magneticDeclinationGridData.json +0 -0
  142. {pybada-0.1.1 → pybada-0.1.3}/src/pyBADA/__init__.py +0 -0
@@ -0,0 +1,31 @@
1
+ name: Run unit tests
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - main
8
+
9
+ jobs:
10
+ test:
11
+ name: Run unit tests
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Checkout repository
16
+ uses: actions/checkout@v3
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v4
20
+ with:
21
+ python-version: "3.12"
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install .
27
+ pip install .[dev]
28
+
29
+ - name: Run Pytest
30
+ run: |
31
+ python -m pytest tests/ -s --junitxml=path
@@ -0,0 +1,33 @@
1
+ name: Release new version on PyPi
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - '*'
7
+
8
+ jobs:
9
+ test:
10
+ name: Build wheel and upload
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - name: Checkout repository
15
+ uses: actions/checkout@v3
16
+
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v4
19
+ with:
20
+ python-version: "3.12"
21
+
22
+ - name: Install dependencies
23
+ run: |
24
+ python -m pip install --upgrade pip
25
+ pip install .
26
+ pip install .[dev]
27
+
28
+ - name: Build pyBADA and upload wheel to PyPi
29
+ run: |
30
+ export TWINE_USERNAME=__token__
31
+ export TWINE_PASSWORD=${{ secrets.PYPI_API_TOKEN }}
32
+ python3 -m build
33
+ twine upload dist/*
@@ -1,6 +1,7 @@
1
1
  name: Publish updated version of the docs
2
2
 
3
3
  on:
4
+ pull_request:
4
5
  push:
5
6
  branches:
6
7
  - main
pybada-0.1.3/PKG-INFO ADDED
@@ -0,0 +1,83 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyBADA
3
+ Version: 0.1.3
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: black==25.1.0; extra == 'dev'
20
+ Requires-Dist: build; extra == 'dev'
21
+ Requires-Dist: flake8==7.1.2; extra == 'dev'
22
+ Requires-Dist: folium==0.19.5; extra == 'dev'
23
+ Requires-Dist: matplotlib==3.10.1; extra == 'dev'
24
+ Requires-Dist: pre-commit==4.1.0; extra == 'dev'
25
+ Requires-Dist: pytest==8.3.5; extra == 'dev'
26
+ Requires-Dist: readthedocs-sphinx-search>=0.3.2; extra == 'dev'
27
+ Requires-Dist: sphinx-gallery==0.19.0; extra == 'dev'
28
+ Requires-Dist: sphinx-rtd-theme==3.0.2; extra == 'dev'
29
+ Requires-Dist: sphinx==8.2.3; extra == 'dev'
30
+ Requires-Dist: twine; extra == 'dev'
31
+ Description-Content-Type: text/markdown
32
+
33
+ # pyBADA
34
+
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
+ # Optionally, 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
+
66
+ # Run unit tests
67
+ python3 -m pytest tests/
68
+ # Build the docs
69
+ cd docs
70
+ make html
71
+ ```
72
+
73
+
74
+ ### Running on unsupported environments
75
+
76
+ You won't receive support for it, but you can pass the flag `--ignore-requires-python` to install pyBADA on an unsupported Python version.
77
+
78
+
79
+ ## License
80
+
81
+ BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/).
82
+
83
+ 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.
pybada-0.1.3/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # pyBADA
2
+
3
+ <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>
4
+ <a href="https://pypi.org/project/pyBADA"><img alt="Released on PyPi" src="https://img.shields.io/pypi/v/pyBADA.svg"></a>
5
+ ![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB.svg?logo=python&logoColor=white)
6
+ <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>
7
+ [![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)
8
+
9
+ This package provides aircraft performance modelling, trajectory prediction and optimisation, and visualisation with [BADA](https://www.eurocontrol.int/model/bada) in Python.
10
+
11
+ To get started
12
+
13
+ ```bash
14
+ pip install pyBADA
15
+ ```
16
+
17
+ Examples, the user manual and the API reference can be found at the [pyBADA documentation website](https://eurocontrol-bada.github.io/pybada/index.html).
18
+
19
+ ## Development
20
+
21
+ ```bash
22
+ # Clone the repository
23
+ git clone https://github.com/eurocontrol-bada/pybada
24
+
25
+ # Optionally, set up a virtual env and activate it
26
+ python3 -m venv env
27
+ source env/bin/activate
28
+
29
+ # Install package
30
+ pip install .
31
+ # Install a couple of packages for formatting, linting and building the docs
32
+ pip install .[dev]
33
+
34
+ # Run unit tests
35
+ python3 -m pytest tests/
36
+ # Build the docs
37
+ cd docs
38
+ make html
39
+ ```
40
+
41
+
42
+ ### Running on unsupported environments
43
+
44
+ You won't receive support for it, but you can pass the flag `--ignore-requires-python` to install pyBADA on an unsupported Python version.
45
+
46
+
47
+ ## License
48
+
49
+ BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/).
50
+
51
+ 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.
@@ -0,0 +1,15 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Exo:ital,wght@0,100..900;1,100..900&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=K2D:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800&family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap');
2
+
3
+ .rst-content .toctree-wrapper > p.caption, h1, h2, h3, h4, h5, h6, legend, .wy-nav-side {
4
+ font-family: Exo;
5
+ }
6
+
7
+ .wy-side-scroll {
8
+ font-size: 18px;
9
+ }
10
+
11
+ .wy-side-nav-search {
12
+ background-image: linear-gradient(150deg,#004B8D 0%,#2990EA 100%);
13
+ padding-top: 2em;
14
+ padding-bottom: 2.5em;
15
+ }
@@ -0,0 +1,10 @@
1
+ {% extends "!footer.html" %}
2
+ {%- block contentinfo %}
3
+ {{ super }}
4
+
5
+
6
+
7
+ &copy; Copyright 2024 <img src="https://ansperformance.eu/nvctr/reference/figures/euctrl-logo-wide.svg" width="112" alt="EUROCONTROL"></a> <br>
8
+
9
+
10
+ {% endblock %}
@@ -18,6 +18,7 @@ extensions = [
18
18
  "sphinx.ext.viewcode",
19
19
  "sphinx.ext.autosummary",
20
20
  "sphinx_gallery.gen_gallery",
21
+ "sphinx_search.extension",
21
22
  ]
22
23
 
23
24
  sphinx_gallery_conf = {
@@ -39,6 +40,10 @@ autosummary_generate = True
39
40
  templates_path = ["_templates"]
40
41
  exclude_patterns = []
41
42
 
43
+ html_css_files = [
44
+ 'css/custom.css',
45
+ ]
46
+
42
47
  # add_module_names = False
43
48
  modindex_common_prefix = ["pyBADA."]
44
49
 
@@ -46,3 +51,5 @@ modindex_common_prefix = ["pyBADA."]
46
51
 
47
52
  html_theme = "sphinx_rtd_theme"
48
53
  html_static_path = ["_static"]
54
+
55
+ copyright = "2024, EUROCONTROL"
@@ -0,0 +1,65 @@
1
+ Getting started
2
+ ==================================
3
+
4
+ .. code-block:: bash
5
+
6
+ pip install pyBADA
7
+
8
+
9
+ Running on unsupported environments
10
+ -----------------------------------
11
+
12
+ You won't receive support for it, but you can pass the flag ``--ignore-requires-python`` to install pyBADA on an unsupported Python version.
13
+
14
+
15
+ Providing custom models
16
+ -----------------------
17
+
18
+ To load your own BADA models, when instantiating an aircraft, pass as ``filePath`` the parent folder containing the desired BADA models. For example:
19
+
20
+ E.g. If your ``/home/<USER>/bada-models/BADA4/4.3/`` folder contains:
21
+
22
+ .. code-block:: text
23
+
24
+ A320-212
25
+ .
26
+ ├── A320-212.ATF
27
+ ├── A320-212_final_.mat
28
+ ├── A320-212_ISA+20.PTD
29
+ ├── A320-212_ISA+20.PTF
30
+ ├── A320-212_ISA.PTD
31
+ ├── A320-212_ISA.PTF
32
+ ├── A320-212.xml
33
+ ├── ECON.OPT
34
+ ├── LRC.OPT
35
+ ├── MEC.OPT
36
+ ├── MRC.OPT
37
+ └── OPTALT.OPT
38
+ A320-232
39
+ .
40
+ ├── A320-232.ATF
41
+ ├── A320-232_final_.mat
42
+ ├── A320-232_ISA+20.PTD
43
+ ├── A320-232_ISA+20.PTF
44
+ ├── A320-232_ISA.PTD
45
+ ├── A320-232_ISA.PTF
46
+ ├── A320-232.xml
47
+ ├── ECON.OPT
48
+ ├── LRC.OPT
49
+ ├── MEC.OPT
50
+ ├── MRC.OPT
51
+ └── OPTALT.OPT
52
+
53
+ You can instantiate an A320-232 like this:
54
+
55
+ .. code-block:: python
56
+
57
+ AC = Bada4Aircraft(
58
+ badaVersion=badaVersion,
59
+ acName="A320-232",
60
+ filePath="/home/<USER>/bada-models/BADA4/4.3",
61
+ )
62
+
63
+ In the case of BADA3, this means directly pointing to the folder containing the model files.
64
+
65
+
@@ -10,6 +10,10 @@ To get started:
10
10
  pip install pybada
11
11
 
12
12
 
13
+ You can find the source code, report issues and contribute on the `GitHub repository <https://github.com/eurocontrol-bada/pybada>`_.
14
+
15
+ This package released as open source software under the terms of the `European Union Public Licence <https://commission.europa.eu/about/departments-and-executive-agencies/digital-services/open-source-strategy-history/european-union-public-licence_en>`_.
16
+
13
17
  About BADA
14
18
  ==========
15
19
 
@@ -17,7 +21,7 @@ Efficient air traffic operations rely on the capability of air traffic managemen
17
21
 
18
22
  To enable modelling and simulation of aircraft trajectories, every aircraft in operation shall have a corresponding Aircraft Performance Model (APM).
19
23
 
20
- This is why EUROCONTROL, in cooperation with aircraft manufacturers and operating airlines, has created and maintains an APM called BADA (Base of Aircraft Data).
24
+ This is why `EUROCONTROL <https://www.eurocontrol.int/>`_, in cooperation with aircraft manufacturers and operating airlines, has created and maintains an APM called `BADA (Base of Aircraft Data) <https://www.eurocontrol.int/model/bada>`_.
21
25
 
22
26
  Owning to this cooperation, BADA prevails as a unique product provided by EUROCONTROL to the aviation community worldwide
23
27
 
@@ -29,6 +33,7 @@ BADA APM is based on a kinetic approach to aircraft performance modelling. It is
29
33
  :maxdepth: 2
30
34
  :caption: Contents:
31
35
 
36
+ getting-started
32
37
  pyBADA
33
38
  architecture
34
39
  userManual
@@ -40,4 +45,4 @@ Indices and tables
40
45
 
41
46
  * :ref:`genindex`
42
47
  * :ref:`modindex`
43
- * :ref:`search`
48
+ * :ref:`search`
@@ -5,24 +5,23 @@ BADA Data Retrieval
5
5
  Example of BADA parametes retrieval for specific aircraft
6
6
  """
7
7
 
8
- from pyBADA.bada3 import Bada3Aircraft
9
8
  from pyBADA.bada3 import Parser as Bada3Parser
9
+ from pyBADA.aircraft import Bada
10
10
 
11
- badaVersion = "DUMMY"
12
11
 
13
12
  # loading all the BADA data into a dataframe
14
- allData = Bada3Parser.parseAll(badaVersion=badaVersion)
13
+ allData = Bada3Parser.parseAll(badaVersion="DUMMY")
15
14
 
16
15
  # retrieve specific data from the whole database, including synonyms
17
- params = Bada3Parser.getBADAParameters(
16
+ params = Bada.getBADAParameters(
18
17
  df=allData,
19
- acName=["B737", "A1", "P38", "AT45", "DA42"],
18
+ acName=["A1", "P38", "AT45", "DA42", "B789", "J2H"],
20
19
  parameters=["VMO", "MMO", "MTOW", "engineType"],
21
20
  )
22
21
  print(params)
23
22
  print("\n")
24
23
 
25
- params = Bada3Parser.getBADAParameters(
24
+ params = Bada.getBADAParameters(
26
25
  df=allData,
27
26
  acName=["B737"],
28
27
  parameters=["VMO", "MMO", "MTOW", "engineType"],
@@ -30,14 +29,12 @@ params = Bada3Parser.getBADAParameters(
30
29
  print(params)
31
30
  print("\n")
32
31
 
33
- params = Bada3Parser.getBADAParameters(
32
+ params = Bada.getBADAParameters(
34
33
  df=allData, acName="DA42", parameters=["VMO", "MMO", "MTOW", "engineType"]
35
34
  )
36
35
  print(params)
37
36
  print("\n")
38
37
 
39
- params = Bada3Parser.getBADAParameters(
40
- df=allData, acName="DA42", parameters="VMO"
41
- )
38
+ params = Bada.getBADAParameters(df=allData, acName="DA42", parameters="VMO")
42
39
  print(params)
43
40
  print("\n")
@@ -36,11 +36,19 @@ badaVersion = "DUMMY"
36
36
  allData = Bada4Parser.parseAll(badaVersion=badaVersion)
37
37
  print(allData)
38
38
 
39
- # AC = Bada3Aircraft(badaVersion=badaVersion, acName='J2H', allData=allData)
39
+ AC = Bada3Aircraft(badaVersion=badaVersion, acName="J2H", allData=allData)
40
40
  AC = Bada4Aircraft(
41
- badaVersion=badaVersion, acName="Dummy-TWIN", allData=allData
41
+ badaVersion=badaVersion,
42
+ acName="Dummy-TWIN",
43
+ allData=allData,
42
44
  )
43
45
 
46
+ # Example loading models from files on disk
47
+ # AC = Bada4Aircraft(
48
+ # badaVersion=badaVersion,
49
+ # acName="A320-232",
50
+ # filePath="/home/<USER>/ec/pybada-models/models/BADA4/4.3",
51
+ # )
44
52
 
45
53
  # create a Flight Trajectory object to store the output from TCL segment calculations
46
54
  ft = FT()
@@ -8,23 +8,30 @@ Example of BADA3, BADA4 and BADAH file parser
8
8
  from pyBADA.bada3 import Bada3Aircraft
9
9
  from pyBADA.bada4 import Bada4Aircraft
10
10
  from pyBADA.badaH import BadaHAircraft
11
- from pyBADA.bada3 import Parser as Bada3Parser
12
- from pyBADA.bada4 import Parser as Bada4Parser
13
- from pyBADA.badaH import Parser as BadaHParser
14
11
 
12
+ # initialization of BADAH
13
+ AC = BadaHAircraft(badaVersion="DUMMY", acName="DUMH")
15
14
 
16
- # initialization of BADA3, BADA4 and BADAH
17
- # uncomment for testing different BADA family if available
18
15
  # BADAH
19
- badaVersion = "DUMMY"
20
- AC = BadaHAircraft(badaVersion=badaVersion, acName="DUMH")
21
-
22
- # BADA4
23
- # AC = Bada4Aircraft(badaVersion=badaVersion, acName='Dummy-TBP')
24
-
25
- # BADA3
26
- # AC = Bada3Aircraft(badaVersion=badaVersion, acName='BZJT')
16
+ if AC.BADAFamily.BADAH:
17
+ ICAO = AC.ICAO
18
+ WTC = AC.WTC
19
+ MTOW = AC.MTOW
20
+ print(
21
+ "BADA Family:",
22
+ AC.BADAFamilyName,
23
+ "| BADA Version:",
24
+ AC.BADAVersion,
25
+ "| ICAO:",
26
+ ICAO,
27
+ "| WTC:",
28
+ WTC,
29
+ "| MTOW =",
30
+ MTOW,
31
+ )
27
32
 
33
+ # initialization of BADA4
34
+ AC = Bada4Aircraft(badaVersion="DUMMY", acName="Dummy-TBP")
28
35
 
29
36
  # BADA3 or BADA4
30
37
  if AC.BADAFamily.BADA3 or AC.BADAFamily.BADA4:
@@ -50,10 +57,15 @@ if AC.BADAFamily.BADA3 or AC.BADAFamily.BADA4:
50
57
  MTOW,
51
58
  )
52
59
 
53
- # BADAH
54
- if AC.BADAFamily.BADAH:
60
+ # initialization of BADA3
61
+ AC = Bada3Aircraft(badaVersion="DUMMY", acName="BZJT")
62
+
63
+ # BADA3 or BADA4
64
+ if AC.BADAFamily.BADA3 or AC.BADAFamily.BADA4:
55
65
  ICAO = AC.ICAO
56
66
  WTC = AC.WTC
67
+ VMO = AC.VMO
68
+ MMO = AC.MMO
57
69
  MTOW = AC.MTOW
58
70
  print(
59
71
  "BADA Family:",
@@ -62,8 +74,12 @@ if AC.BADAFamily.BADAH:
62
74
  AC.BADAVersion,
63
75
  "| ICAO:",
64
76
  ICAO,
65
- " |WTC:",
77
+ "| WTC:",
66
78
  WTC,
79
+ "| VMO =",
80
+ VMO,
81
+ "| MMO =",
82
+ MMO,
67
83
  "| MTOW =",
68
84
  MTOW,
69
85
  )
@@ -0,0 +1,64 @@
1
+ """
2
+ Initial Mass Calculation
3
+ ========================
4
+
5
+ Example calculation of aircraft initial mass
6
+
7
+ """
8
+
9
+ from pyBADA.bada3 import Bada3Aircraft
10
+ from pyBADA import trajectoryPrediction as TP
11
+ from pyBADA import atmosphere as atm
12
+ from pyBADA import conversions as conv
13
+
14
+
15
+ # calculate estimations for the fuel flow, and aircraft initial mass
16
+ AC = Bada3Aircraft(badaVersion='DUMMY', acName="J2M")
17
+
18
+
19
+ deltaTemp = 0 # deviation from ISA temperature [K or deg C]
20
+ M = 0.7 # Mach number [-]
21
+ altitude = conv.ft2m(30000) # cruise altitude[m]
22
+ distance = conv.nm2m(100) # flown distance [NM]
23
+ payload = 80 # payload mass [% of the maximum payload mass]
24
+ fuelReserve = 3600 # reserve of the fuel [s]
25
+ flightPlanInitialMass = None # planned initial/takeoff mass [kg]
26
+
27
+ # fuel flow in cruise
28
+ cruiseFuelFlow = TP.cruiseFuelConsumption(
29
+ AC=AC, altitude=altitude, M=M, deltaTemp=deltaTemp
30
+ )
31
+
32
+ # in case of no wind, the ground speed is the same as true airspeed
33
+ [theta, delta, sigma] = atm.atmosphereProperties(
34
+ h=altitude, DeltaTemp=deltaTemp
35
+ )
36
+ TAS = atm.mach2Tas(Mach=M, theta=theta)
37
+ GS = TAS
38
+
39
+ # distance based initial mass
40
+ breguetLeducInitialMass = TP.breguetLeducInitialMass(
41
+ AC=AC,
42
+ distance=distance,
43
+ GS=GS,
44
+ cruiseFuelFlow=cruiseFuelFlow,
45
+ payload=payload,
46
+ fuelReserve=fuelReserve,
47
+ )
48
+
49
+ # calculation of initial mass taking into account flight plan data and aircraft flight envelope
50
+ initMass = TP.getInitialMass(
51
+ AC=AC,
52
+ distance=distance,
53
+ altitude=altitude,
54
+ M=M,
55
+ payload=payload,
56
+ fuelReserve=fuelReserve,
57
+ flightPlanInitialMass=flightPlanInitialMass,
58
+ deltaTemp=deltaTemp,
59
+ )
60
+
61
+ print(f"cruiseFuelFlow: {cruiseFuelFlow} [kg/s]")
62
+ print(f"breguetLeducInitialMass: {breguetLeducInitialMass} [kg]")
63
+ print(f"initMass: {initMass} [kg]")
64
+
@@ -13,11 +13,11 @@ from pyBADA.badaH import BadaHAircraft
13
13
  from pyBADA.bada4 import Parser as Bada4Parser
14
14
  from pyBADA.badaH import Parser as BadaHParser
15
15
 
16
- # initialization of BADA3, BADA4 and BADAH
17
- # uncomment for testing different BADA family if available
18
16
  badaVersion = "DUMMY"
19
- AC = BadaHAircraft(badaVersion=badaVersion, acName="DUMH")
20
- # AC = Bada4Aircraft(badaVersion=badaVersion, acName='DUMMY-TWIN')
17
+
18
+ # initialization of BADA4
19
+ AC = Bada4Aircraft(badaVersion=badaVersion, acName="Dummy-TWIN")
20
+ print("BADA4 Optimum Speed and Altitude:")
21
21
 
22
22
  # BADA4
23
23
  if AC.BADAFamily.BADA4:
@@ -77,6 +77,9 @@ if AC.BADAFamily.BADA4:
77
77
  optAlt_precomputed = AC.OPT.getOPTParam("OPTALT", M, mass)
78
78
  print("optAlt_precomputed = ", optAlt_precomputed)
79
79
 
80
+ # initialization of BADAH
81
+ AC = BadaHAircraft(badaVersion=badaVersion, acName="DUMH")
82
+ print("\nBADAH Optimum Speed and Altitude:")
80
83
 
81
84
  # BADAH
82
85
  if AC.BADAFamily.BADAH:
@@ -4,40 +4,45 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pyBADA"
7
- version = "0.1.1"
7
+ version = "0.1.3"
8
8
  authors = [
9
9
  { name="Henrich Glaser-Opitz", email="henrich.glaser-opitz@eurocontrol.int" }
10
10
  ]
11
11
  description = "pyBADA"
12
12
  readme = "README.md"
13
- requires-python = ">=3.11"
13
+ requires-python = ">=3.12"
14
14
  classifiers = [
15
15
  "Programming Language :: Python :: 3",
16
16
  "License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)"
17
17
  ]
18
18
  dependencies = [
19
- "scipy==1.11.3",
20
- "numpy==1.26.1",
21
- "pandas==2.2.3",
22
- "simplekml==1.3.6",
23
- "XlsxWriter==3.2.0"
19
+ "scipy>=1.15.2",
20
+ "numpy>=2.2.3",
21
+ "pandas>=2.2.3",
22
+ "simplekml>=1.3.6",
23
+ "XlsxWriter>=3.2.2"
24
24
  ]
25
25
  license = { text = "EUPL-1.2" }
26
26
 
27
27
  # Some additional deps not needed to run the package but to develop on it
28
28
  # linter, formatter, to build the docs, ..
29
29
  [project.optional-dependencies]
30
- dev = ["black==23.9.1",
31
- "flake8==6.1.0",
32
- "sphinx-rtd-theme==2.0.0",
33
- "Sphinx==7.4.7",
34
- "pre-commit==3.8.0",
35
- "sphinx-gallery==0.17.1",
36
- "matplotlib==3.9.2",
37
- "folium==0.17.0"]
30
+ dev = ["black==25.1.0",
31
+ "flake8==7.1.2",
32
+ "sphinx-rtd-theme==3.0.2",
33
+ "Sphinx==8.2.3",
34
+ "pre-commit==4.1.0",
35
+ "sphinx-gallery==0.19.0",
36
+ "matplotlib==3.10.1",
37
+ "folium==0.19.5",
38
+ "pytest==8.3.5",
39
+ "build",
40
+ "twine",
41
+ "readthedocs-sphinx-search>=0.3.2"
42
+ ]
38
43
 
39
44
  [project.urls]
40
- "Homepage" = "https://github.com/eurocontrol/pybada"
45
+ "Homepage" = "https://github.com/eurocontrol-bada/pybada"
41
46
 
42
47
  [tool.black]
43
48
  target-version = ['py312']
@@ -64,4 +69,4 @@ packages = ["src/pyBADA"]
64
69
  "src/aircraft/BADA3/DUMMY" = "pyBADA/aircraft/BADA3/DUMMY"
65
70
  "src/aircraft/BADA4/DUMMY" = "pyBADA/aircraft/BADA4/DUMMY"
66
71
  "src/aircraft/BADAH/DUMMY" = "pyBADA/aircraft/BADAH/DUMMY"
67
- "src/data" = "pyBADA/data"
72
+ "src/data" = "pyBADA/data"