pyBADA 0.1.5__tar.gz → 0.1.7__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 (150) hide show
  1. pybada-0.1.7/.gitignore +8 -0
  2. pybada-0.1.7/AMENDMENT_TO_EUPL_license.md +26 -0
  3. {pybada-0.1.5 → pybada-0.1.7}/PKG-INFO +15 -13
  4. {pybada-0.1.5 → pybada-0.1.7}/README.md +4 -3
  5. {pybada-0.1.5 → pybada-0.1.7}/examples/BADAData.py +1 -2
  6. pybada-0.1.7/examples/combinedSlopeAndDestination.py +53 -0
  7. pybada-0.1.7/examples/fuelFlow.py +215 -0
  8. pybada-0.1.5/examples/geodesic.py → pybada-0.1.7/examples/geodesicCalculations.py +0 -1
  9. pybada-0.1.7/examples/initialMass.py +70 -0
  10. pybada-0.1.5/examples/optimum_speed_altitude.py → pybada-0.1.7/examples/optimumSpeedAndAltitude.py +15 -16
  11. pybada-0.1.5/examples/ac_trajectory.py → pybada-0.1.7/examples/trajectoryAC.py +64 -64
  12. pybada-0.1.5/examples/ac_trajectory_GPS.py → pybada-0.1.7/examples/trajectoryAC_GPS.py +65 -65
  13. pybada-0.1.5/examples/heli_trajectory.py → pybada-0.1.7/examples/trajectoryHELI.py +20 -20
  14. {pybada-0.1.5 → pybada-0.1.7}/pyproject.toml +13 -11
  15. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/TCL.py +185 -192
  16. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/aircraft.py +15 -15
  17. pybada-0.1.7/src/pyBADA/atmosphere.py +544 -0
  18. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/bada3.py +226 -240
  19. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/bada4.py +346 -340
  20. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/badaH.py +220 -233
  21. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/configuration.py +2 -1
  22. pybada-0.1.7/src/pyBADA/conversions.py +149 -0
  23. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/flightTrajectory.py +2 -1
  24. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/geodesic.py +116 -10
  25. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/magnetic.py +2 -1
  26. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/trajectoryPrediction.py +4 -3
  27. pybada-0.1.7/src/pyBADA/utils.py +209 -0
  28. pybada-0.1.7/tests/atmosphereTest.py +1261 -0
  29. pybada-0.1.7/uv.lock +1279 -0
  30. pybada-0.1.5/.gitignore +0 -5
  31. pybada-0.1.5/examples/initial_mass.py +0 -62
  32. pybada-0.1.5/src/pyBADA/atmosphere.py +0 -379
  33. pybada-0.1.5/src/pyBADA/conversions.py +0 -172
  34. {pybada-0.1.5 → pybada-0.1.7}/.github/workflows/lint.yml +0 -0
  35. {pybada-0.1.5 → pybada-0.1.7}/.github/workflows/pytest.yml +0 -0
  36. {pybada-0.1.5 → pybada-0.1.7}/.github/workflows/release.yml +0 -0
  37. {pybada-0.1.5 → pybada-0.1.7}/.github/workflows/sphinx.yml +0 -0
  38. {pybada-0.1.5 → pybada-0.1.7}/.pre-commit-config.yaml +0 -0
  39. {pybada-0.1.5 → pybada-0.1.7}/AUTHORS +0 -0
  40. {pybada-0.1.5 → pybada-0.1.7}/LICENCE.txt +0 -0
  41. {pybada-0.1.5 → pybada-0.1.7}/docs/Makefile +0 -0
  42. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/TCL.rst +0 -0
  43. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/aircraft.rst +0 -0
  44. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/atmosphere.rst +0 -0
  45. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/bada3.rst +0 -0
  46. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/bada4.rst +0 -0
  47. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/badaH.rst +0 -0
  48. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/configuration.rst +0 -0
  49. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/constants.rst +0 -0
  50. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/conversions.rst +0 -0
  51. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/flightTrajectory.rst +0 -0
  52. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/geodesic.rst +0 -0
  53. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/magnetic.rst +0 -0
  54. {pybada-0.1.5 → pybada-0.1.7}/docs/source/API_reference/trajectoryPrediction.rst +0 -0
  55. {pybada-0.1.5 → pybada-0.1.7}/docs/source/_static/css/custom.css +0 -0
  56. {pybada-0.1.5 → pybada-0.1.7}/docs/source/_static/default_thumbnail.png +0 -0
  57. {pybada-0.1.5 → pybada-0.1.7}/docs/source/_static/pyBADA_architecture.png +0 -0
  58. {pybada-0.1.5 → pybada-0.1.7}/docs/source/_templates/footer.html +0 -0
  59. {pybada-0.1.5 → pybada-0.1.7}/docs/source/architecture.rst +0 -0
  60. {pybada-0.1.5 → pybada-0.1.7}/docs/source/conf.py +0 -0
  61. {pybada-0.1.5 → pybada-0.1.7}/docs/source/getting-started.rst +0 -0
  62. {pybada-0.1.5 → pybada-0.1.7}/docs/source/history.rst +0 -0
  63. {pybada-0.1.5 → pybada-0.1.7}/docs/source/index.rst +0 -0
  64. {pybada-0.1.5 → pybada-0.1.7}/docs/source/pyBADA.rst +0 -0
  65. {pybada-0.1.5 → pybada-0.1.7}/docs/source/userManual.rst +0 -0
  66. {pybada-0.1.5 → pybada-0.1.7}/docs/source/user_manual/examples.rst +0 -0
  67. {pybada-0.1.5 → pybada-0.1.7}/docs/source/user_manual/introduction.rst +0 -0
  68. {pybada-0.1.5 → pybada-0.1.7}/examples/GALLERY_HEADER.rst +0 -0
  69. pybada-0.1.5/examples/file_parser.py → pybada-0.1.7/examples/fileParser.py +0 -0
  70. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/BADA.GPF +0 -0
  71. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/BZJT__.APF +0 -0
  72. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/BZJT__.OPF +0 -0
  73. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/BZJT__.PTD +0 -0
  74. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/BZJT__.PTF +0 -0
  75. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/GA____.APF +0 -0
  76. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/GA____.OPF +0 -0
  77. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/GA____.PTD +0 -0
  78. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/GA____.PTF +0 -0
  79. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J2H___.APF +0 -0
  80. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J2H___.OPF +0 -0
  81. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J2H___.PTD +0 -0
  82. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J2H___.PTF +0 -0
  83. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J2M___.APF +0 -0
  84. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J2M___.OPF +0 -0
  85. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J2M___.PTD +0 -0
  86. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J2M___.PTF +0 -0
  87. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J4H___.APF +0 -0
  88. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J4H___.OPF +0 -0
  89. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J4H___.PTD +0 -0
  90. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/J4H___.PTF +0 -0
  91. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/ReleaseSummary +0 -0
  92. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/SYNONYM.NEW +0 -0
  93. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/TP2M__.APF +0 -0
  94. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/TP2M__.OPF +0 -0
  95. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/TP2M__.PTD +0 -0
  96. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA3/DUMMY/TP2M__.PTF +0 -0
  97. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/ACM_BADA4.xsd +0 -0
  98. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.ATF +0 -0
  99. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.xml +0 -0
  100. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTD +0 -0
  101. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTF +0 -0
  102. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTD +0 -0
  103. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTF +0 -0
  104. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.ATF +0 -0
  105. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.xml +0 -0
  106. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTD +0 -0
  107. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTF +0 -0
  108. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTD +0 -0
  109. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTF +0 -0
  110. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/LRC.OPT +0 -0
  111. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/MEC.OPT +0 -0
  112. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/MRC.OPT +0 -0
  113. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TBP/OPTALT.OPT +0 -0
  114. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.ATF +0 -0
  115. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.xml +0 -0
  116. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTD +0 -0
  117. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTF +0 -0
  118. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTD +0 -0
  119. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTF +0 -0
  120. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/ECON.OPT +0 -0
  121. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/LRC.OPT +0 -0
  122. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/MEC.OPT +0 -0
  123. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/MRC.OPT +0 -0
  124. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/OPTALT.OPT +0 -0
  125. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.ATF +0 -0
  126. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.xml +0 -0
  127. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTD +0 -0
  128. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTF +0 -0
  129. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTD +0 -0
  130. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTF +0 -0
  131. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/ECON.OPT +0 -0
  132. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/LRC.OPT +0 -0
  133. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MEC.OPT +0 -0
  134. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MRC.OPT +0 -0
  135. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/OPTALT.OPT +0 -0
  136. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/GPF.xml +0 -0
  137. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADA4/DUMMY/GPF_BADA4.xsd +0 -0
  138. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADAH/DUMMY/DUMH/DUMH.ATF +0 -0
  139. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADAH/DUMMY/DUMH/DUMH.xml +0 -0
  140. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTD +0 -0
  141. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTF +0 -0
  142. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTD +0 -0
  143. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTF +0 -0
  144. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADAH/DUMMY/DUMH/LRC.OPT +0 -0
  145. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADAH/DUMMY/DUMH/MEC.OPT +0 -0
  146. {pybada-0.1.5 → pybada-0.1.7}/src/aircraft/BADAH/DUMMY/DUMH/MRC.OPT +0 -0
  147. {pybada-0.1.5 → pybada-0.1.7}/src/data/magneticDeclinationGridData.json +0 -0
  148. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/__init__.py +0 -0
  149. {pybada-0.1.5 → pybada-0.1.7}/src/pyBADA/constants.py +0 -0
  150. {pybada-0.1.5 → pybada-0.1.7}/tests/load_test.py +1 -1
@@ -0,0 +1,8 @@
1
+ .idea
2
+ __pycache__
3
+ dist/
4
+ docs/build
5
+ env/
6
+
7
+ docs/source/auto_examples/
8
+ docs/source/sg_execution_times.rst
@@ -0,0 +1,26 @@
1
+ ## 1. Definitions
2
+
3
+ **The Licensor**: The natural or legal person that distributes or communicates the Work under the Licence $\color{red}{\text{(“EUROCONTROL”, the European Organisation for the Safety of Air Navigation)}}$.
4
+
5
+ ## 5. Obligations of the Licensee
6
+
7
+ **Legal Protection**: This Licence does not grant permission to use the $\color{red}{\text{official emblems}}$, trade names, trademarks, service marks, or names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the copyright notice.
8
+
9
+ ## 9. Additional agreements
10
+
11
+ ### $\color{red}{\text{9a. Processing of personal data}}$
12
+
13
+ $\color{red}{\text{Licensee processes the personal data it receives from Licensor under this Agreement for the sole purpose of making use of the Work under}}$ $\color{red}{\text{the terms of the License. EUROCONTROL processes the personal data in accordance with the EUROCONTROL Regulation on Personal Data}}$ $\color{red}{\text{Protection.}}$
14
+
15
+ $\color{red}{\text{Licensor processes the personal data it receives from the Licensee under the Licence for the sole purpose of distributing or communicates the }}$ $\color{red}{\text{Work under the Licence. Licensee processes the personal data in accordance with the data protection laws applicable to Licensee.}}$
16
+
17
+ $\color{red}{\text{To protect the personal data, the Licensee and Licensor shall implement appropriate organisational, technical and physical measures}}$ $\color{red}{\text{ which shall be kept up to date in accordance with generally accepted standards.}}$
18
+
19
+ ## 14. Jurisdiction
20
+ Without prejudice to specific agreement between parties, any litigation arising between other parties and resulting from the interpretation of this License, will be subject to the exclusive jurisdiction of the competent courts of $\color{red}{\text{Belgium}}$.
21
+
22
+ ## 15. Applicable Law
23
+ Without prejudice to specific agreement between parties, this Licence shall be governed by the law of $\color{red}{\text{Belgium}}$.
24
+
25
+ ## Appendix
26
+ The $\color{red}{\text{Licencor}}$ may update this Appendix to later versions of the above licences without producing a new version of the EUPL, as long as they provide the rights granted in Article 2 of this Licence and protect the covered Source Code from exclusive appropriation.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyBADA
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: Aircraft performance modelling, trajectory prediction and optimisation, and visualisation with EUROCONTROL's BADA.
5
5
  Project-URL: Homepage, https://github.com/eurocontrol-bada/pybada
6
6
  Author-email: Henrich Glaser-Opitz <henrich.glaser-opitz@eurocontrol.int>, Antonio Vivace <antonio.vivace@eurocontrol.int>
@@ -10,19 +10,20 @@ License-File: LICENCE.txt
10
10
  Classifier: License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)
11
11
  Classifier: Programming Language :: Python :: 3
12
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
13
+ Requires-Dist: numpy>=2.3.2
14
+ Requires-Dist: pandas>=2.3.2
15
+ Requires-Dist: scipy>=1.16.1
16
16
  Requires-Dist: simplekml>=1.3.6
17
- Requires-Dist: xlsxwriter>=3.2.2
17
+ Requires-Dist: xarray>=2025.9.0
18
+ Requires-Dist: xlsxwriter>=3.2.5
18
19
  Provides-Extra: dev
19
20
  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'
21
+ Requires-Dist: folium==0.20.0; extra == 'dev'
22
+ Requires-Dist: matplotlib==3.10.6; extra == 'dev'
23
+ Requires-Dist: pre-commit==4.2.0; extra == 'dev'
24
+ Requires-Dist: pytest==8.4.2; extra == 'dev'
24
25
  Requires-Dist: readthedocs-sphinx-search>=0.3.2; extra == 'dev'
25
- Requires-Dist: ruff==0.11.5; extra == 'dev'
26
+ Requires-Dist: ruff==0.12.12; extra == 'dev'
26
27
  Requires-Dist: sphinx-gallery==0.19.0; extra == 'dev'
27
28
  Requires-Dist: sphinx-rtd-theme==3.0.2; extra == 'dev'
28
29
  Requires-Dist: sphinx==8.2.3; extra == 'dev'
@@ -33,10 +34,10 @@ Description-Content-Type: text/markdown
33
34
 
34
35
  [![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
36
  <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)
37
+ <a href="https://pypi.org/project/pyBADA"><img alt="Released on PyPi" src="https://img.shields.io/pypi/v/pyBADA.svg"></a> <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dw/pybada"> ![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB.svg?logo=python&logoColor=white)
38
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
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
+ [![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/pyBADA_dev?style=social&label=Follow%20%40pyBADA_dev)](https://x.com/intent/follow?screen_name=pyBADA_dev)
40
41
 
41
42
  This package provides aircraft performance modelling, trajectory prediction and optimisation, and visualisation with [BADA](https://www.eurocontrol.int/model/bada) in Python.
42
43
 
@@ -89,4 +90,5 @@ You won't receive support for it, but you can pass the flag `--ignore-requires-p
89
90
 
90
91
  BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/model/bada).
91
92
 
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.
93
+ This project is released under the European Union Public License v1.2 - see the [LICENCE](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12) file for details.
94
+ See the [Amendment to the EUPL](./AMENDMENT_TO_EUPL_license.md) for additional terms.
@@ -2,10 +2,10 @@
2
2
 
3
3
  [![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)
4
4
  <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>
5
- <a href="https://pypi.org/project/pyBADA"><img alt="Released on PyPi" src="https://img.shields.io/pypi/v/pyBADA.svg"></a>
6
- ![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB.svg?logo=python&logoColor=white)
5
+ <a href="https://pypi.org/project/pyBADA"><img alt="Released on PyPi" src="https://img.shields.io/pypi/v/pyBADA.svg"></a> <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dw/pybada"> ![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB.svg?logo=python&logoColor=white)
7
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>
8
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
+ [![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/pyBADA_dev?style=social&label=Follow%20%40pyBADA_dev)](https://x.com/intent/follow?screen_name=pyBADA_dev)
9
9
 
10
10
  This package provides aircraft performance modelling, trajectory prediction and optimisation, and visualisation with [BADA](https://www.eurocontrol.int/model/bada) in Python.
11
11
 
@@ -58,4 +58,5 @@ You won't receive support for it, but you can pass the flag `--ignore-requires-p
58
58
 
59
59
  BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/model/bada).
60
60
 
61
- 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.
61
+ This project is released under the European Union Public License v1.2 - see the [LICENCE](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12) file for details.
62
+ See the [Amendment to the EUPL](./AMENDMENT_TO_EUPL_license.md) for additional terms.
@@ -5,9 +5,8 @@ BADA Data Retrieval
5
5
  Example of BADA parametes retrieval for specific aircraft
6
6
  """
7
7
 
8
- from pyBADA.bada3 import Parser as Bada3Parser
9
8
  from pyBADA.aircraft import Bada
10
-
9
+ from pyBADA.bada3 import Parser as Bada3Parser
11
10
 
12
11
  # loading all the BADA data into a dataframe
13
12
  allData = Bada3Parser.parseAll(badaVersion="DUMMY")
@@ -0,0 +1,53 @@
1
+ """
2
+ Required Slope & Destination Point Applying Slope For Distance and Bearing
3
+ ==========================================================================
4
+ 1. Computes the required climb/descent slope and horizontal distance between two WGS84 waypoints.
5
+ 2. Computes the destination waypoint (lat, lon, alt) from an initial waypoint, given a slope,
6
+ horizontal distance and bearing.
7
+ Uses three different geodesic algorithms: Vincenty, Haversine, and Rhumb-Line.
8
+ """
9
+
10
+ from pyBADA import conversions as conv
11
+ from pyBADA import geodesic as geo
12
+
13
+ # ——— Inputs for required–slope example ———
14
+ waypoint1 = {
15
+ "latitude": 52.2367946579192,
16
+ "longitude": 20.7129809016565,
17
+ "altitude": 3500.0, # ft
18
+ }
19
+ waypoint2 = {
20
+ "latitude": 52.1697191213371,
21
+ "longitude": 20.9519554471793,
22
+ "altitude": 412.0, # ft
23
+ }
24
+
25
+ # ——— Inputs for destination–point example ———
26
+ initial_waypoint = waypoint1.copy()
27
+ slope_deg = 3.5 # degrees (positive = climb)
28
+ distance_nm = 12.0 # nautical miles
29
+ bearing_deg = 75.0 # degrees from true north
30
+
31
+ # ——— Run both examples for each algorithm ———
32
+ for algo_name, Algo in [
33
+ ("Vincenty", geo.Vincenty),
34
+ ("Haversine", geo.Haversine),
35
+ ("RhumbLine", geo.RhumbLine),
36
+ ]:
37
+ print(f"\n=== {algo_name} ===")
38
+
39
+ # 1) Required slope & horizontal distance
40
+ slope_req_deg, dist_m = Algo.requiredSlope(waypoint1, waypoint2)
41
+ dist_nm = conv.m2nm(dist_m)
42
+ print("Required slope from waypoint1 → waypoint2:")
43
+ print(f" Slope = {slope_req_deg:.8f}°")
44
+ print(f" Horizontal distance = {dist_nm:.8f} NM")
45
+
46
+ # 2) Destination point given a slope, distance & bearing
47
+ dest_wp = Algo.destinationPointApplyingSlopeForDistance(
48
+ initial_waypoint, slope_deg, distance_nm, bearing_deg
49
+ )
50
+ print("Destination waypoint applying slope & distance:")
51
+ print(f" Latitude = {dest_wp['latitude']:.6f}°")
52
+ print(f" Longitude = {dest_wp['longitude']:.6f}°")
53
+ print(f" Altitude = {dest_wp['altitude']:.2f} ft")
@@ -0,0 +1,215 @@
1
+ """
2
+ Fuel Flow Calculation
3
+ ========================
4
+
5
+ Example calculation of aircraft fuel flow in descent
6
+
7
+ """
8
+
9
+ from math import sin
10
+
11
+ import matplotlib.pyplot as plt
12
+ import numpy as np
13
+
14
+ from pyBADA import atmosphere as atm
15
+ from pyBADA import constants as const
16
+ from pyBADA import conversions as conv
17
+ from pyBADA import utils
18
+ from pyBADA.bada3 import Bada3Aircraft
19
+ from pyBADA.bada4 import Bada4Aircraft
20
+
21
+ # create an aircraft
22
+ ACList = [
23
+ Bada4Aircraft(badaVersion="DUMMY", acName="Dummy-TWIN"),
24
+ Bada3Aircraft(badaVersion="DUMMY", acName="J2M"),
25
+ ]
26
+
27
+ # deviation from ISA temperature
28
+ deltaTemp = 0
29
+
30
+ # definition of altitude range
31
+ fl_array = np.arange(0, 401, 10)
32
+ altitude_array = conv.ft2m(fl_array * 100)
33
+
34
+ # --- collect per-aircraft series here ---
35
+ series = [] # list of dicts: {"label": str, "alt_ft": list[float], "ff": list[float]}
36
+
37
+ for AC in ACList:
38
+ # define aircraft mass - here as reference mass
39
+ mass = AC.MREF
40
+
41
+ # get the original speed schedule for descent for this aircraft
42
+ [Vdes1, Vdes2, Mdes] = AC.flightEnvelope.getSpeedSchedule(phase="Descent")
43
+
44
+ # crossover altitude
45
+ crossAlt = atm.crossOver(cas=Vdes2, Mach=Mdes)
46
+
47
+ label = f"({AC.BADAFamilyName}) {AC.acName.strip('_')} (BADA {getattr(AC, 'BADAVersion')}) {mass} kg"
48
+
49
+ alt_ft_vals = []
50
+ ff_vals = []
51
+
52
+ print(
53
+ f"\n=== {AC.__class__.__name__} | BADA {AC.BADAVersion} | Mass: {mass:.0f} kg ==="
54
+ )
55
+ print(
56
+ f"{'FL':>4} {'Alt(ft)':>8} {'Cfg':>3} {'M':>6} {'FF (kg/s)':>10}"
57
+ )
58
+ print("-" * 39)
59
+
60
+ for alt in altitude_array:
61
+ # atmosphere properties
62
+ theta, delta, sigma = atm.atmosphereProperties(
63
+ h=alt, deltaTemp=deltaTemp
64
+ )
65
+
66
+ # determine the speed acording to BADA ARPM
67
+ [cas, speedUpdated] = AC.ARPM.descentSpeed(
68
+ h=alt, mass=mass, theta=theta, delta=delta, deltaTemp=deltaTemp
69
+ )
70
+ # general speed conversion
71
+ [M, CAS, TAS] = atm.convertSpeed(
72
+ v=conv.ms2kt(cas),
73
+ speedType="CAS",
74
+ theta=theta,
75
+ delta=delta,
76
+ sigma=sigma,
77
+ )
78
+
79
+ # determine the aerodynamic configuration if necesary
80
+ config = AC.flightEnvelope.getConfig(
81
+ h=alt, phase="Descent", v=CAS, mass=mass, deltaTemp=deltaTemp
82
+ )
83
+
84
+ # calculate Energy Share Factor depending if aircraft is flying constant M or CAS (based on crossover altitude)
85
+ if alt < crossAlt:
86
+ ESF = AC.esf(
87
+ h=alt, flightEvolution="constCAS", M=M, deltaTemp=deltaTemp
88
+ )
89
+ else:
90
+ ESF = AC.esf(
91
+ h=alt, flightEvolution="constM", M=M, deltaTemp=deltaTemp
92
+ )
93
+
94
+ # =====
95
+ # BADA4
96
+ # =====
97
+ if AC.BADAFamily.BADA4:
98
+ # =================================================================================
99
+ # for altitudes where aircraft descends on 3degree slope in AP and LD configuration
100
+ # =================================================================================
101
+ if config == "AP" or config == "LD":
102
+ gamma = -3.0
103
+ temp_const = (theta * const.temp_0) / (
104
+ theta * const.temp_0 - deltaTemp
105
+ )
106
+ ROCD_gamma = sin(conv.deg2rad(gamma)) * TAS * (1 / temp_const)
107
+
108
+ n = 1.0
109
+ [HLid, LG] = AC.flightEnvelope.getAeroConfig(config=config)
110
+ CL = AC.CL(M=M, delta=delta, mass=mass, nz=n)
111
+ CD = AC.CD(M=M, CL=CL, HLid=HLid, LG=LG)
112
+ Drag = AC.D(M=M, delta=delta, CD=CD)
113
+ Thrust = (ROCD_gamma * mass * const.g) * temp_const / (
114
+ ESF * TAS
115
+ ) + Drag
116
+ CT = AC.CT(Thrust=Thrust, delta=delta)
117
+ ff = AC.ff(
118
+ CT=CT, delta=delta, theta=theta, M=M, deltaTemp=deltaTemp
119
+ )
120
+
121
+ # =============================================================
122
+ # for altitudes where aircraft descends in IDLE engine settings
123
+ # =============================================================
124
+ else:
125
+ ff = AC.ff(
126
+ rating="LIDL",
127
+ delta=delta,
128
+ theta=theta,
129
+ M=M,
130
+ deltaTemp=deltaTemp,
131
+ ) # [kg/s]
132
+
133
+ # =====
134
+ # BADA3
135
+ # =====
136
+ elif AC.BADAFamily.BADA3:
137
+ adaptedThrust = False
138
+ if AC.engineType in ("PISTON", "ELECTRIC"):
139
+ # PISTON and ELECTRIC uses LIDL throughout the whole descent phase
140
+ config = "CR"
141
+ adaptedThrust = True
142
+
143
+ # =================================================================================
144
+ # for altitudes where aircraft descends on 3degree slope in AP and LD configuration
145
+ # =================================================================================
146
+ if config in ("AP", "LD"):
147
+ gamma = -3.0
148
+ temp_const = (theta * const.temp_0) / (
149
+ theta * const.temp_0 - deltaTemp
150
+ )
151
+ ROCD_gamma = sin(conv.deg2rad(gamma)) * TAS * (1 / temp_const)
152
+
153
+ n = 1.0
154
+ CL = AC.CL(sigma=sigma, mass=mass, tas=TAS, nz=n)
155
+ CD = AC.CD(CL=CL, config=config)
156
+ Drag = AC.D(sigma=sigma, tas=TAS, CD=CD)
157
+ Thrust = AC.Thrust(
158
+ rating="ADAPTED",
159
+ v=TAS,
160
+ config=config,
161
+ h=alt,
162
+ ROCD=ROCD_gamma,
163
+ mass=mass,
164
+ acc=0,
165
+ deltaTemp=deltaTemp,
166
+ Drag=Drag,
167
+ )
168
+ ff = AC.ff(
169
+ flightPhase="Descent",
170
+ v=TAS,
171
+ h=alt,
172
+ T=Thrust,
173
+ config=config,
174
+ adapted=adaptedThrust,
175
+ )
176
+
177
+ # =============================================================
178
+ # for altitudes where aircraft descends in IDLE engine settings
179
+ # =============================================================
180
+ else:
181
+ ff = AC.ff(
182
+ v=TAS,
183
+ h=alt,
184
+ T=Thrust,
185
+ flightPhase="Descent",
186
+ config=config,
187
+ )
188
+
189
+ fl = int(utils.proper_round(conv.m2ft(alt) / 100))
190
+ alt_ft = conv.m2ft(alt)
191
+ print(f"{fl:>4d} {alt_ft:>8.0f} {config:>3} {M:>6.3f} {ff:>10.6f}")
192
+
193
+ alt_ft_vals.append(alt_ft)
194
+ ff_vals.append(float(ff))
195
+
196
+ series.append(
197
+ {
198
+ "label": label,
199
+ "alt_ft": np.array(alt_ft_vals),
200
+ "ff": np.array(ff_vals),
201
+ }
202
+ )
203
+
204
+ # --- PLOT: Fuel flow vs Altitude for all aircraft ---
205
+ plt.figure(figsize=(8, 5))
206
+ for s in series:
207
+ plt.plot(s["alt_ft"], s["ff"], label=s["label"])
208
+
209
+ plt.xlabel("Altitude (ft)")
210
+ plt.ylabel("Fuel Flow (kg/s)")
211
+ plt.title("Descent Fuel Flow vs Altitude")
212
+ plt.grid(True, which="both", linestyle="--", linewidth=0.5)
213
+ plt.legend()
214
+ plt.tight_layout()
215
+ plt.show()
@@ -11,7 +11,6 @@ import folium
11
11
 
12
12
  from pyBADA import geodesic as geo
13
13
 
14
-
15
14
  # input parameters
16
15
  LAT_init = 48.596289
17
16
  LON_init = 2.351640
@@ -0,0 +1,70 @@
1
+ """
2
+ Initial Mass Calculation
3
+ ========================
4
+
5
+ Example calculation of aircraft initial mass
6
+
7
+ """
8
+
9
+ from pyBADA import atmosphere as atm
10
+ from pyBADA import conversions as conv
11
+ from pyBADA import trajectoryPrediction as TP
12
+ from pyBADA.bada3 import Bada3Aircraft
13
+ from pyBADA.bada4 import Bada4Aircraft
14
+ from pyBADA.badaH import BadaHAircraft
15
+
16
+ # calculate estimations for the fuel flow, and aircraft initial mass
17
+ AC = Bada3Aircraft(badaVersion="DUMMY", acName="J2M")
18
+
19
+ # Common inputs
20
+ deltaTemp = 0 # deviation from ISA temperature [K]
21
+ M = 0.7 # Mach number [-]
22
+ altitude = conv.ft2m(30000) # cruise altitude [m]
23
+ distance = conv.nm2m(100) # flown distance [m]
24
+ payload = 80 # payload mass [% of max payload]
25
+ fuelReserve = 3600 # fuel reserve [s]
26
+ flightPlanInitMass = None # planned takeoff mass [kg]
27
+
28
+ # Precompute atmosphere & speed inputs
29
+ theta, delta, sigma = atm.atmosphereProperties(h=altitude, deltaTemp=deltaTemp)
30
+ TAS = atm.mach2Tas(Mach=M, theta=theta)
31
+ GS = TAS # assume no wind
32
+
33
+ # Specify acName per model
34
+ for model_name, ACClass, acName in [
35
+ ("BADA3", Bada3Aircraft, "J2M"),
36
+ ("BADA4", Bada4Aircraft, "Dummy-TWIN-plus"),
37
+ ("BADAH", BadaHAircraft, "DUMH"),
38
+ ]:
39
+ print(f"\n=== {model_name} ===")
40
+ AC = ACClass(badaVersion="DUMMY", acName=acName)
41
+
42
+ # 1) Cruise fuel flow [kg/s]
43
+ cruiseFuelFlow = TP.cruiseFuelConsumption(
44
+ AC=AC, altitude=altitude, M=M, deltaTemp=deltaTemp
45
+ )
46
+ print(f"cruiseFuelFlow: {cruiseFuelFlow:.6f} kg/s")
47
+
48
+ # 2) Distance based initial mass via Breguet–Leduc
49
+ breguetInitialMass = TP.breguetLeducInitialMass(
50
+ AC=AC,
51
+ distance=distance,
52
+ GS=GS,
53
+ cruiseFuelFlow=cruiseFuelFlow,
54
+ payload=payload,
55
+ fuelReserve=fuelReserve,
56
+ )
57
+ print(f"breguetLeducInitialMass: {breguetInitialMass:.2f} kg")
58
+
59
+ # 3) Initial mass using limited by flight envelope (OEW, MTOW)
60
+ initMass = TP.getInitialMass(
61
+ AC=AC,
62
+ distance=distance,
63
+ altitude=altitude,
64
+ M=M,
65
+ payload=payload,
66
+ fuelReserve=fuelReserve,
67
+ flightPlanInitialMass=flightPlanInitMass,
68
+ deltaTemp=deltaTemp,
69
+ )
70
+ print(f"initMass(limited): {initMass:.2f} kg")
@@ -7,7 +7,6 @@ Example of BADA4 and BADAH optimum speed and altitude calculation
7
7
 
8
8
  from pyBADA import atmosphere as atm
9
9
  from pyBADA import conversions as conv
10
-
11
10
  from pyBADA.bada4 import Bada4Aircraft
12
11
  from pyBADA.badaH import BadaHAircraft
13
12
 
@@ -21,17 +20,17 @@ print("BADA4 Optimum Speed and Altitude:")
21
20
  if AC.BADAFamily.BADA4:
22
21
  mass = AC.MTOW # [kg] AC weight
23
22
  h = conv.ft2m(33000) # [m] AC flight altitdue
24
- DeltaTemp = 0 # [K] temperature deviation from ISA
23
+ deltaTemp = 0 # [K] temperature deviation from ISA
25
24
  cI = 50 # [kg min^-1] cost index
26
25
  wS = 0 # [m s^-1] longitudinal wind speed
27
26
 
28
27
  [theta, delta, sigma] = atm.atmosphereProperties(
29
- h=h, DeltaTemp=DeltaTemp
28
+ h=h, deltaTemp=deltaTemp
30
29
  ) # atmosphere properties
31
30
 
32
31
  # Economic Mach Cruise Speed
33
32
  econMach = AC.OPT.econMach(
34
- theta=theta, delta=delta, mass=mass, DeltaTemp=DeltaTemp, cI=cI, wS=wS
33
+ theta=theta, delta=delta, mass=mass, deltaTemp=deltaTemp, cI=cI, wS=wS
35
34
  )
36
35
  print("EconMach = ", econMach)
37
36
 
@@ -42,7 +41,7 @@ if AC.BADAFamily.BADA4:
42
41
 
43
42
  # Maximum Range Cruise (MRC) Mach speed
44
43
  MRC = AC.OPT.MRC(
45
- theta=theta, delta=delta, mass=mass, DeltaTemp=DeltaTemp, wS=wS
44
+ theta=theta, delta=delta, mass=mass, deltaTemp=deltaTemp, wS=wS
46
45
  )
47
46
  print("MRC = ", MRC)
48
47
 
@@ -51,7 +50,7 @@ if AC.BADAFamily.BADA4:
51
50
 
52
51
  # Long Range Cruise (LRC) Mach speed
53
52
  LRC = AC.OPT.LRC(
54
- theta=theta, delta=delta, mass=mass, DeltaTemp=DeltaTemp, wS=wS
53
+ theta=theta, delta=delta, mass=mass, deltaTemp=deltaTemp, wS=wS
55
54
  )
56
55
  print("LRC = ", LRC)
57
56
 
@@ -60,7 +59,7 @@ if AC.BADAFamily.BADA4:
60
59
 
61
60
  # Maximum Endurance Cruise (MEC) Mach speed
62
61
  MEC = AC.OPT.MEC(
63
- theta=theta, delta=delta, mass=mass, DeltaTemp=DeltaTemp, wS=wS
62
+ theta=theta, delta=delta, mass=mass, deltaTemp=deltaTemp, wS=wS
64
63
  )
65
64
  print("MEC = ", MEC)
66
65
 
@@ -69,7 +68,7 @@ if AC.BADAFamily.BADA4:
69
68
 
70
69
  # optimum flight altitude at given M speed
71
70
  M = MRC
72
- optAlt = AC.OPT.optAltitude(M=M, mass=mass, DeltaTemp=DeltaTemp)
71
+ optAlt = AC.OPT.optAltitude(M=M, mass=mass, deltaTemp=deltaTemp)
73
72
  print("optAlt =", optAlt)
74
73
 
75
74
  optAlt_precomputed = AC.OPT.getOPTParam("OPTALT", M, mass)
@@ -84,31 +83,31 @@ if AC.BADAFamily.BADAH:
84
83
  mass = 1600 # [kg] AC weight
85
84
  Hp = 14000 # [ft] AC flight altitude
86
85
  h = conv.ft2m(Hp) # [m] AC flight altitude
87
- DeltaTemp = 20 # [K] temperature deviation from ISA
86
+ deltaTemp = 20 # [K] temperature deviation from ISA
88
87
  wS = 0 # [m s^-1] longitudinal wind speed
89
88
 
90
89
  [theta, delta, sigma] = atm.atmosphereProperties(
91
- h=h, DeltaTemp=DeltaTemp
90
+ h=h, deltaTemp=deltaTemp
92
91
  ) # atmoshpere properties
93
92
 
94
93
  # Maximum Range Cruise (MRC) Mach speed
95
- MRC = AC.OPT.MRC(h=h, mass=mass, DeltaTemp=DeltaTemp, wS=wS)
94
+ MRC = AC.OPT.MRC(h=h, mass=mass, deltaTemp=deltaTemp, wS=wS)
96
95
  # print("MRC = ", conv.ms2kt(MRC))
97
96
  print("MRC = ", (MRC))
98
97
 
99
- MRC_precomputed = AC.OPT.getOPTParam("MRC", Hp, mass, DeltaTemp)
98
+ MRC_precomputed = AC.OPT.getOPTParam("MRC", Hp, mass, deltaTemp)
100
99
  print("MRC_precomputed = ", conv.kt2ms(MRC_precomputed))
101
100
 
102
101
  # Long Range Cruise (LRC) Mach speed
103
- LRC = AC.OPT.LRC(h=h, mass=mass, DeltaTemp=DeltaTemp, wS=wS)
102
+ LRC = AC.OPT.LRC(h=h, mass=mass, deltaTemp=deltaTemp, wS=wS)
104
103
  print("LRC = ", (LRC))
105
104
 
106
- LRC_precomputed = AC.OPT.getOPTParam("LRC", Hp, mass, DeltaTemp)
105
+ LRC_precomputed = AC.OPT.getOPTParam("LRC", Hp, mass, deltaTemp)
107
106
  print("LRC_precomputed = ", conv.kt2ms(LRC_precomputed))
108
107
 
109
108
  # Maximum Endurance Cruise (MEC) Mach speed
110
- MEC = AC.OPT.MEC(h=h, mass=mass, DeltaTemp=DeltaTemp, wS=wS)
109
+ MEC = AC.OPT.MEC(h=h, mass=mass, deltaTemp=deltaTemp, wS=wS)
111
110
  print("MEC = ", (MEC))
112
111
 
113
- MEC_precomputed = AC.OPT.getOPTParam("MEC", Hp, mass, DeltaTemp)
112
+ MEC_precomputed = AC.OPT.getOPTParam("MEC", Hp, mass, deltaTemp)
114
113
  print("MEC_precomputed = ", conv.kt2ms(MEC_precomputed))