FASTUAV 0.2.0b0__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 (212) hide show
  1. fastuav-0.2.0b0/PKG-INFO +174 -0
  2. fastuav-0.2.0b0/README.md +134 -0
  3. fastuav-0.2.0b0/pyproject.toml +141 -0
  4. fastuav-0.2.0b0/src/fastuav/__init__.py +0 -0
  5. fastuav-0.2.0b0/src/fastuav/configurations/__init__.py +0 -0
  6. fastuav-0.2.0b0/src/fastuav/configurations/doe_optimization_problem.yaml +189 -0
  7. fastuav-0.2.0b0/src/fastuav/configurations/doe_simple_model.yaml +17 -0
  8. fastuav-0.2.0b0/src/fastuav/configurations/doe_sobol_analysis.yaml +61 -0
  9. fastuav-0.2.0b0/src/fastuav/configurations/fixedwing_mdo.yaml +224 -0
  10. fastuav-0.2.0b0/src/fastuav/configurations/fixedwing_model.yaml +39 -0
  11. fastuav-0.2.0b0/src/fastuav/configurations/hybrid_mdo.yaml +321 -0
  12. fastuav-0.2.0b0/src/fastuav/configurations/hybrid_model.yaml +38 -0
  13. fastuav-0.2.0b0/src/fastuav/configurations/multirotor_mda.yaml +48 -0
  14. fastuav-0.2.0b0/src/fastuav/configurations/multirotor_mda_cots.yaml +61 -0
  15. fastuav-0.2.0b0/src/fastuav/configurations/multirotor_mdo.yaml +193 -0
  16. fastuav-0.2.0b0/src/fastuav/configurations/multirotor_mdo_cots.yaml +208 -0
  17. fastuav-0.2.0b0/src/fastuav/configurations/multirotor_model.yaml +33 -0
  18. fastuav-0.2.0b0/src/fastuav/configurations/multirotor_model_cots.yaml +36 -0
  19. fastuav-0.2.0b0/src/fastuav/configurations/multirotor_performance.yaml +11 -0
  20. fastuav-0.2.0b0/src/fastuav/constants.py +33 -0
  21. fastuav-0.2.0b0/src/fastuav/data/__init__.py +12 -0
  22. fastuav-0.2.0b0/src/fastuav/data/catalogues/Batteries/Non-Dominated-Augmented-Batteries.csv +498 -0
  23. fastuav-0.2.0b0/src/fastuav/data/catalogues/ESC/ESC_data.csv +75 -0
  24. fastuav-0.2.0b0/src/fastuav/data/catalogues/ESC/Non-Dominated-ESC.csv +27 -0
  25. fastuav-0.2.0b0/src/fastuav/data/catalogues/Motors/Motors_Data.csv +205 -0
  26. fastuav-0.2.0b0/src/fastuav/data/catalogues/Motors/Non-Dominated-Motors.csv +48 -0
  27. fastuav-0.2.0b0/src/fastuav/data/catalogues/Propeller/APC_propellers.csv +2039 -0
  28. fastuav-0.2.0b0/src/fastuav/data/catalogues/Propeller/APC_propellers_MR.csv +53 -0
  29. fastuav-0.2.0b0/src/fastuav/data/catalogues/Propeller/performances/Non-Dominated-Propeller.csv +406 -0
  30. fastuav-0.2.0b0/src/fastuav/data/catalogues/Propeller/performances/Propeller_Data.csv +2821 -0
  31. fastuav-0.2.0b0/src/fastuav/missions/missions_fixedwing.yaml +22 -0
  32. fastuav-0.2.0b0/src/fastuav/missions/missions_hybrid.yaml +24 -0
  33. fastuav-0.2.0b0/src/fastuav/missions/missions_multirotor.yaml +28 -0
  34. fastuav-0.2.0b0/src/fastuav/models/__init__.py +0 -0
  35. fastuav-0.2.0b0/src/fastuav/models/add_ons/__init__.py +0 -0
  36. fastuav-0.2.0b0/src/fastuav/models/add_ons/sample_discipline.py +35 -0
  37. fastuav-0.2.0b0/src/fastuav/models/aerodynamics/__init__.py +0 -0
  38. fastuav-0.2.0b0/src/fastuav/models/aerodynamics/aerodynamics_fixedwing.py +387 -0
  39. fastuav-0.2.0b0/src/fastuav/models/aerodynamics/aerodynamics_hybrid.py +144 -0
  40. fastuav-0.2.0b0/src/fastuav/models/aerodynamics/aerodynamics_multirotor.py +6 -0
  41. fastuav-0.2.0b0/src/fastuav/models/geometry/__init__.py +0 -0
  42. fastuav-0.2.0b0/src/fastuav/models/geometry/geometry_fixedwing.py +534 -0
  43. fastuav-0.2.0b0/src/fastuav/models/geometry/geometry_hybrid.py +207 -0
  44. fastuav-0.2.0b0/src/fastuav/models/geometry/geometry_multirotor.py +139 -0
  45. fastuav-0.2.0b0/src/fastuav/models/mtow/__init__.py +0 -0
  46. fastuav-0.2.0b0/src/fastuav/models/mtow/mtow.py +266 -0
  47. fastuav-0.2.0b0/src/fastuav/models/mtow/mtow_fixedwing.py +19 -0
  48. fastuav-0.2.0b0/src/fastuav/models/mtow/mtow_hybrid.py +19 -0
  49. fastuav-0.2.0b0/src/fastuav/models/mtow/mtow_multirotor.py +19 -0
  50. fastuav-0.2.0b0/src/fastuav/models/performance/__init__.py +0 -0
  51. fastuav-0.2.0b0/src/fastuav/models/performance/mission/__init__.py +0 -0
  52. fastuav-0.2.0b0/src/fastuav/models/performance/mission/flight_performance.py +358 -0
  53. fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_builder.py +247 -0
  54. fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_definition/__init__.py +0 -0
  55. fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_definition/resources/__init__.py +0 -0
  56. fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_definition/resources/mission_schema.json +267 -0
  57. fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_definition/schema.py +104 -0
  58. fastuav-0.2.0b0/src/fastuav/models/performance/mission/phase_builder.py +413 -0
  59. fastuav-0.2.0b0/src/fastuav/models/performance/mission/route_builder.py +234 -0
  60. fastuav-0.2.0b0/src/fastuav/models/performance/range_and_endurance.py +163 -0
  61. fastuav-0.2.0b0/src/fastuav/models/propulsion/__init__.py +0 -0
  62. fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/__init__.py +0 -0
  63. fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/__init__.py +0 -0
  64. fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/battery.py +39 -0
  65. fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/catalogue.py +275 -0
  66. fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/constraints.py +219 -0
  67. fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/definition_parameters.py +267 -0
  68. fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/estimation_models.py +355 -0
  69. fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/performance_analysis.py +75 -0
  70. fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/__init__.py +0 -0
  71. fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/catalogue.py +138 -0
  72. fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/constraints.py +157 -0
  73. fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/definition_parameters.py +161 -0
  74. fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/esc.py +33 -0
  75. fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/estimation_models.py +48 -0
  76. fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/performance_analysis.py +61 -0
  77. fastuav-0.2.0b0/src/fastuav/models/propulsion/gearbox/__init__.py +0 -0
  78. fastuav-0.2.0b0/src/fastuav/models/propulsion/gearbox/gearbox.py +60 -0
  79. fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/__init__.py +0 -0
  80. fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/catalogue.py +176 -0
  81. fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/constraints.py +158 -0
  82. fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/definition_parameters.py +132 -0
  83. fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/estimation_models.py +304 -0
  84. fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/motor.py +35 -0
  85. fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/performance_analysis.py +379 -0
  86. fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/__init__.py +0 -0
  87. fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/aerodynamics/__init__.py +0 -0
  88. fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/aerodynamics/surrogate_models.py +264 -0
  89. fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/catalogue.py +239 -0
  90. fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/constraints.py +127 -0
  91. fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/definition_parameters.py +213 -0
  92. fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/estimation_models.py +157 -0
  93. fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/performance_analysis.py +215 -0
  94. fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/propeller.py +37 -0
  95. fastuav-0.2.0b0/src/fastuav/models/propulsion/propulsion.py +92 -0
  96. fastuav-0.2.0b0/src/fastuav/models/propulsion/propulsion_fixedwing.py +19 -0
  97. fastuav-0.2.0b0/src/fastuav/models/propulsion/propulsion_hybrid.py +19 -0
  98. fastuav-0.2.0b0/src/fastuav/models/propulsion/propulsion_multirotor.py +19 -0
  99. fastuav-0.2.0b0/src/fastuav/models/scenarios/__init__.py +0 -0
  100. fastuav-0.2.0b0/src/fastuav/models/scenarios/scenarios_fixedwing.py +47 -0
  101. fastuav-0.2.0b0/src/fastuav/models/scenarios/scenarios_hybrid.py +62 -0
  102. fastuav-0.2.0b0/src/fastuav/models/scenarios/scenarios_multirotor.py +33 -0
  103. fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/__init__.py +0 -0
  104. fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/climb.py +164 -0
  105. fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/cruise.py +163 -0
  106. fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/flight_models.py +107 -0
  107. fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/hover.py +58 -0
  108. fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/takeoff.py +109 -0
  109. fastuav-0.2.0b0/src/fastuav/models/scenarios/wing_loading/__init__.py +0 -0
  110. fastuav-0.2.0b0/src/fastuav/models/scenarios/wing_loading/wing_loading.py +208 -0
  111. fastuav-0.2.0b0/src/fastuav/models/stability/__init__.py +0 -0
  112. fastuav-0.2.0b0/src/fastuav/models/stability/stability_fixedwing.py +33 -0
  113. fastuav-0.2.0b0/src/fastuav/models/stability/stability_hybrid.py +33 -0
  114. fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/__init__.py +0 -0
  115. fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/__init__.py +0 -0
  116. fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/cog.py +132 -0
  117. fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/components/__init__.py +0 -0
  118. fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/components/cog_airframe.py +232 -0
  119. fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/components/cog_load.py +134 -0
  120. fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/components/cog_propulsion.py +155 -0
  121. fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/neutral_point.py +45 -0
  122. fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/static_margin.py +95 -0
  123. fastuav-0.2.0b0/src/fastuav/models/structures/__init__.py +0 -0
  124. fastuav-0.2.0b0/src/fastuav/models/structures/fuselage.py +44 -0
  125. fastuav-0.2.0b0/src/fastuav/models/structures/structures_fixedwing.py +33 -0
  126. fastuav-0.2.0b0/src/fastuav/models/structures/structures_hybrid.py +35 -0
  127. fastuav-0.2.0b0/src/fastuav/models/structures/structures_multirotor.py +102 -0
  128. fastuav-0.2.0b0/src/fastuav/models/structures/tails.py +58 -0
  129. fastuav-0.2.0b0/src/fastuav/models/structures/wing/__init__.py +0 -0
  130. fastuav-0.2.0b0/src/fastuav/models/structures/wing/constraints.py +100 -0
  131. fastuav-0.2.0b0/src/fastuav/models/structures/wing/estimation_models.py +310 -0
  132. fastuav-0.2.0b0/src/fastuav/models/structures/wing/structural_analysis.py +115 -0
  133. fastuav-0.2.0b0/src/fastuav/models/structures/wing/wing.py +70 -0
  134. fastuav-0.2.0b0/src/fastuav/models/variable_descriptions.txt +816 -0
  135. fastuav-0.2.0b0/src/fastuav/models/wires/__init__.py +0 -0
  136. fastuav-0.2.0b0/src/fastuav/models/wires/wires.py +202 -0
  137. fastuav-0.2.0b0/src/fastuav/models/wires/wires_fixedwing.py +19 -0
  138. fastuav-0.2.0b0/src/fastuav/models/wires/wires_hybrid.py +19 -0
  139. fastuav-0.2.0b0/src/fastuav/models/wires/wires_multirotor.py +19 -0
  140. fastuav-0.2.0b0/src/fastuav/notebooks/0_Tutorial.ipynb +2601 -0
  141. fastuav-0.2.0b0/src/fastuav/notebooks/1_Multirotor_Design.ipynb +2557 -0
  142. fastuav-0.2.0b0/src/fastuav/notebooks/1b_Mission_performance.ipynb +2271 -0
  143. fastuav-0.2.0b0/src/fastuav/notebooks/1c_Multirotor_Design_Catalogues.ipynb +3853 -0
  144. fastuav-0.2.0b0/src/fastuav/notebooks/2_FixedWing_Design.ipynb +2345 -0
  145. fastuav-0.2.0b0/src/fastuav/notebooks/3_HybridVTOL_Design.ipynb +2337 -0
  146. fastuav-0.2.0b0/src/fastuav/notebooks/4_Uncertainty_analysis.ipynb +822 -0
  147. fastuav-0.2.0b0/src/fastuav/notebooks/5_Design_of_experiments_Tutorial.ipynb +400 -0
  148. fastuav-0.2.0b0/src/fastuav/notebooks/README.md +14 -0
  149. fastuav-0.2.0b0/src/fastuav/notebooks/__init__.py +0 -0
  150. fastuav-0.2.0b0/src/fastuav/notebooks/data/__init__.py +12 -0
  151. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/__init__.py +12 -0
  152. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/doe_optimization_problem.yaml +189 -0
  153. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/doe_simple_model.yaml +17 -0
  154. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/doe_sobol_analysis.yaml +61 -0
  155. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/fixedwing_mdo.yaml +224 -0
  156. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/fixedwing_model.yaml +39 -0
  157. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/hybrid_mdo.yaml +321 -0
  158. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/hybrid_model.yaml +38 -0
  159. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_mda.yaml +48 -0
  160. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_mda_cots.yaml +61 -0
  161. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_mdo.yaml +190 -0
  162. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_mdo_cots.yaml +208 -0
  163. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_model.yaml +33 -0
  164. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_model_cots.yaml +36 -0
  165. fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_performance.yaml +11 -0
  166. fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/__init__.py +12 -0
  167. fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_fixedwing.yaml +22 -0
  168. fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_hybrid.yaml +24 -0
  169. fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_multirotor.yaml +28 -0
  170. fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_multirotor_doe.yaml +27 -0
  171. fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_multirotor_off_design.yaml +41 -0
  172. fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/__init__.py +12 -0
  173. fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_DJI_M600.xml +442 -0
  174. fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_FW.xml +501 -0
  175. fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_doe.xml +126 -0
  176. fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_doe_optim.xml +442 -0
  177. fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_hybrid.xml +857 -0
  178. fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_outputs_DJI_M600_mdo.xml +715 -0
  179. fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_outputs_discrete_DJI_M600_mdo.xml +716 -0
  180. fastuav-0.2.0b0/src/fastuav/notebooks/img/uncertainty.gif +0 -0
  181. fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/doe_Morris.csv +25 -0
  182. fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/doe_Sobol.csv +769 -0
  183. fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/doe_Sobol_2.csv +769 -0
  184. fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/doe_fullfactorial.csv +101 -0
  185. fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/problem_morris.txt +1 -0
  186. fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/problem_sobol.txt +1 -0
  187. fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/x_morris.txt +1 -0
  188. fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/y_morris.txt +1 -0
  189. fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/y_sobol.txt +1 -0
  190. fastuav-0.2.0b0/src/fastuav/utils/__init__.py +0 -0
  191. fastuav-0.2.0b0/src/fastuav/utils/catalogues/__init__.py +0 -0
  192. fastuav-0.2.0b0/src/fastuav/utils/catalogues/estimators.py +353 -0
  193. fastuav-0.2.0b0/src/fastuav/utils/configurations_versatility.py +89 -0
  194. fastuav-0.2.0b0/src/fastuav/utils/drivers/__init__.py +0 -0
  195. fastuav-0.2.0b0/src/fastuav/utils/drivers/cmaes_driver.py +792 -0
  196. fastuav-0.2.0b0/src/fastuav/utils/drivers/cmaes_driver_legacy.py +490 -0
  197. fastuav-0.2.0b0/src/fastuav/utils/drivers/salib_doe_driver.py +213 -0
  198. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/__init__.py +0 -0
  199. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/analysis_and_plots.py +1035 -0
  200. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/__init__.py +0 -0
  201. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/monte_carlo.py +530 -0
  202. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/morris_0.py +297 -0
  203. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/morris_1.py +468 -0
  204. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/sobol_0.py +423 -0
  205. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/sobol_1.py +735 -0
  206. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/__init__.py +0 -0
  207. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/distribution_plot.py +113 -0
  208. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/doe_convergence_plot.py +301 -0
  209. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/morris_plot.py +133 -0
  210. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/sensitivity_analysis.py +1323 -0
  211. fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/sobol_plot.py +38 -0
  212. fastuav-0.2.0b0/src/fastuav/utils/uncertainty.py +240 -0
@@ -0,0 +1,174 @@
1
+ Metadata-Version: 2.4
2
+ Name: FASTUAV
3
+ Version: 0.2.0b0
4
+ Summary: FAST-UAV is a framework for performing rapid Overall Aircraft Design for Unmanned Aerial Vehicles
5
+ License-Expression: GPL-3.0-only
6
+ Keywords: uav,design,multi-disciplinary
7
+ Author: Félix POLLET
8
+ Author-email: felix.pollet@isae-supaero.fr
9
+ Requires-Python: >=3.10,<3.15
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Education
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
15
+ Classifier: Natural Language :: English
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Operating System :: Microsoft :: Windows
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Topic :: Scientific/Engineering :: Physics
26
+ Provides-Extra: jupyterlab
27
+ Requires-Dist: SALib (>=1.5.0,<2.0.0)
28
+ Requires-Dist: cma (>=4.0.0,<5.0.0)
29
+ Requires-Dist: fast-oad-core (>=1.10.0) ; python_version < "3.15"
30
+ Requires-Dist: ipywidgets (>=8.1.8,<9.0.0)
31
+ Requires-Dist: jupyterlab ; extra == "jupyterlab"
32
+ Requires-Dist: kaleido (==0.2.1)
33
+ Requires-Dist: plotly (>=6.0.0,<7.0.0)
34
+ Requires-Dist: psutil
35
+ Requires-Dist: pyzmq (>=26)
36
+ Requires-Dist: scikit-learn (>=1.0.2,<2.0.0)
37
+ Requires-Dist: seaborn (>=0.13.0,<0.14.0)
38
+ Project-URL: Homepage, https://github.com/SizingLab/FAST-UAV
39
+ Description-Content-Type: text/markdown
40
+
41
+ <p align="center">
42
+ <img src="docs/assets/banner.png" width="75%" alt="FASTUAV" align="center" />
43
+ </p>
44
+
45
+ Future Aircraft Sizing Tool - Unmanned Aerial Vehicles
46
+ ===============================================================
47
+
48
+ <div align="center">
49
+ <a href="#">
50
+ <img src="https://img.shields.io/badge/Python-3.9, 3.10, 3.11, 3.12-efefef">
51
+ </a>
52
+ <a href="#">
53
+ <img src="https://img.shields.io/badge/License-GPLv3-blue.svg">
54
+ </a>
55
+ </div>
56
+ <br>
57
+
58
+
59
+
60
+ <b>FAST-UAV</b> is a Python tool dedicated to optimal drone design with a multi-disciplinary approach.
61
+
62
+ Based on the [FAST-OAD](https://github.com/fast-aircraft-design/FAST-OAD) and [OpenMDAO](https://openmdao.org/) frameworks, it allows to easily switch between models to address different types of configurations.
63
+
64
+ Currently, FAST-UAV is bundled with analytical models for multi-rotor, fixed-wing and quad-plane (hybrid VTOL) UAVs.
65
+
66
+ 🚀 Quick start
67
+ -------
68
+
69
+ FAST-UAV requires Python 3.9 or greater. It is recommended to install FAST-UAV in a virtual environment ([conda](https://docs.conda.io/en/latest/), [venv](https://docs.python.org/3/library/venv.html)...):
70
+
71
+ ```{.bash}
72
+ conda create --name <env_name> python=3.9
73
+ conda activate <env_name>
74
+ ```
75
+
76
+ To install FAST-UAV, run the following commands in a terminal:
77
+ ```{.bash}
78
+ pip install fastuav
79
+ ```
80
+
81
+ Now that FAST-UAV is installed, you can start using it through [Jupyter notebooks](https://jupyter.org/).
82
+ To do so, create a new folder for FAST-UAV, `cd` into this folder, and type this command in your terminal:
83
+ ```{.bash}
84
+ fastoad notebooks -p fastuav
85
+ ```
86
+ Then run the Jupyter server as indicated in the obtained message.
87
+
88
+ 📚 Citation
89
+ ------------
90
+ This project is part of Félix Pollet's PhD thesis, which is available [here](http://www.theses.fr/2024ESAE0013/document).
91
+ If you use FAST-UAV as part of your work in a scientific publication, please consider citing the following papers:
92
+ ```
93
+ @phdthesis{pollet_design_2024,
94
+ type = {{PhD} {Thesis}},
95
+ title = {Design optimization of unmanned aerial vehicles : a multidisciplinary approach with uncertainty, fault-tolerance, and environmental impact assessments},
96
+ url = {http://www.theses.fr/2024ESAE0013/document},
97
+ school = {Institut Supérieur de l'Aéronautique et de l'Espace},
98
+ author = {Pollet, F{\'e}lix},
99
+ collaborator = {Moschetta, Jean-Marc and Budinger, Marc and Delbecq, Scott},
100
+ month = mar,
101
+ year = {2024},
102
+ }
103
+
104
+ @inproceedings{pollet2022common,
105
+ title = {A common framework for the design optimization of fixed-wing, multicopter and {VTOL} {UAV} configurations},
106
+ author = {Pollet, F{\'e}lix and Delbecq, Scott and Budinger, Marc and Moschetta, Jean-Marc and Liscou{\"e}t, Jonathan},
107
+ booktitle = {33rd {Congress} of the {International} {Council} of the {Aeronautical} {Sciences}},
108
+ address = {Stockholm, Sweden},
109
+ month = sep,
110
+ year = {2022},
111
+ }
112
+
113
+ @inproceedings{pollet2021design,
114
+ title = {Design optimization of multirotor drones in forward flight},
115
+ author = {Pollet, F{\'e}lix and Delbecq, Scott and Budinger, Marc and Moschetta, Jean-Marc},
116
+ booktitle = {32nd {Congress} of the {International} {Council} of the {Aeronautical} {Sciences}},
117
+ address = {Shanghai, China},
118
+ month = sep,
119
+ year = {2021},
120
+ }
121
+
122
+ @article{delbecq2020efficient,
123
+ title = {Efficient sizing and optimization of multirotor drones based on scaling laws and similarity models},
124
+ author = {Delbecq, Scott and Budinger, Marc and Ochotorena, Aithor and Reysset, Aur{\'e}lien and Defay, Francois},
125
+ journal = {Aerospace Science and Technology},
126
+ volume = {102},
127
+ doi = {10.1016/j.ast.2020.105873},
128
+ month = jul,
129
+ year = {2020},
130
+ pages = {105873},
131
+ }
132
+ ```
133
+
134
+
135
+ 🔥 Related publications
136
+ ------------
137
+ > M. Budinger, A. Reysset, A. Ochotorena, and S. Delbecq. Scaling laws and similarity models for the preliminary design of multirotor drones. Aerospace Science and Technology, 2020, 98, pp.1-15. https://doi.org/10.1016/j.ast.2019.105658. https://hal.science/hal-02997598.
138
+
139
+ > S. Delbecq, M. Budinger, A. Ochotorena, A. Reysset, and F. Defay. Efficient sizing and optimization of multirotor drones based on scaling laws and similarity models. Aerospace Science
140
+ and Technology, 2020, 102, pp.1-23. https://doi.org/10.1016/j.ast.2020.105873. https://hal.science/hal-02997596.
141
+
142
+ > F. Pollet, S. Delbecq, M. Budinger, and J.-M. Moschetta. Design optimization of multirotor drones in cruise. 32nd Congress of the International Council of the Aeronautical Sciences, Sep 2021, Shanghai, China. https://hal.science/hal-03832135/.
143
+
144
+ > S. Delbecq, M. Budinger, C. Coic, and N. Bartoli. Trajectory and design optimization of multirotor drones with system simulation. AIAA Scitech 2021 Forum, Jan. 2021, VIRTUAL EVENT, United States. https://doi.org/10.2514/6.2021-0211. https://hal.science/hal-03121520.
145
+
146
+ > J. Liscouet, F. Pollet, J. Jézégou, M. Budinger, S. Delbecq, and J.-M. Moschetta. A Methodology to Integrate Reliability into the Conceptual Design of Safety-Critical Multirotor Unmanned Aerial Vehicles. Aerospace Science and Technology, 2022, 127, pp.107681. https://doi.org/10.1016/j.ast.2022.107681. https://hal.science/hal-03956142.
147
+
148
+ > F. Pollet, S. Delbecq, M. Budinger, J.-M. Moschetta, and J. Liscouët. A Common Framework for the Design Optimization of Fixed-Wing, Multicopter and VTOL UAV Configurations. 33rd Congress of the International Council of the Aeronautical Sciences, Sep. 2022, Stockholm, Sweden. https://hal.science/hal-03832115/
149
+
150
+ > F. Pollet, M. Budinger, S. Delbecq, J. -M. Moschetta, and J. Liscouët. Quantifying and Mitigating Uncertainties in Design Optimization Including Off-the-Shelf Components: Application to an Electric Multirotor UAV. Aerospace Science and Technology, 2023, pp.108179. https://doi.org/10.1016/j.ast.2023.108179.
151
+
152
+ > F. Pollet, M. Budinger, S. Delbecq, J. -M. Moschetta, and T. Planès. Environmental Life Cycle Assessments for the Design Exploration of Electric UAVs. Aerospace Europe Conference 2023 – 10th EUCASS – 9th CEAS, Jul. 2023, Lausanne, Switzerland. https://doi.org/10.13009/EUCASS2023-548. https://hal.science/hal-04229799.
153
+
154
+ > [DroneApp](https://github.com/SizingLab/droneapp-legacy) sizing tool
155
+
156
+
157
+ 📝 License
158
+ ------------
159
+ The software is released under <a href="https://www.gnu.org/licenses/gpl-3.0.en.html"> The GNU General Public License v3.0</a>.
160
+
161
+
162
+ 🤝 Questions and contributions
163
+ ------------
164
+ Feel free to contact us if you have any question or suggestion, or if you wish to contribute with us on FAST-UAV!
165
+ * Scott DELBECQ [scott.delbecq@isae-supaero.fr](scott.delbecq@isae-supaero.fr)
166
+ * Félix POLLET [felix.pollet@isae-supaero.fr](felix.pollet@isae-supaero.fr)
167
+ * Marc BUDINGER [mbudinge@insa-toulouse.fr](mbudinge@insa-toulouse.fr)
168
+
169
+ For developers, please follow the following procedure:
170
+ 1. [Fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) the GitHub repository of FAST-UAV
171
+ 2. Clone your forked repository onto your local machine with `git clone`
172
+ 3. `cd` into your FAST-UAV project and install the required dependencies with [Poetry](https://python-poetry.org/docs/) using the `poetry install` command.
173
+ 4. Start making changes to the forked repository
174
+ 5. Open a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) to merge those changes back into the original repository of FAST-UAV.
@@ -0,0 +1,134 @@
1
+ <p align="center">
2
+ <img src="docs/assets/banner.png" width="75%" alt="FASTUAV" align="center" />
3
+ </p>
4
+
5
+ Future Aircraft Sizing Tool - Unmanned Aerial Vehicles
6
+ ===============================================================
7
+
8
+ <div align="center">
9
+ <a href="#">
10
+ <img src="https://img.shields.io/badge/Python-3.9, 3.10, 3.11, 3.12-efefef">
11
+ </a>
12
+ <a href="#">
13
+ <img src="https://img.shields.io/badge/License-GPLv3-blue.svg">
14
+ </a>
15
+ </div>
16
+ <br>
17
+
18
+
19
+
20
+ <b>FAST-UAV</b> is a Python tool dedicated to optimal drone design with a multi-disciplinary approach.
21
+
22
+ Based on the [FAST-OAD](https://github.com/fast-aircraft-design/FAST-OAD) and [OpenMDAO](https://openmdao.org/) frameworks, it allows to easily switch between models to address different types of configurations.
23
+
24
+ Currently, FAST-UAV is bundled with analytical models for multi-rotor, fixed-wing and quad-plane (hybrid VTOL) UAVs.
25
+
26
+ 🚀 Quick start
27
+ -------
28
+
29
+ FAST-UAV requires Python 3.9 or greater. It is recommended to install FAST-UAV in a virtual environment ([conda](https://docs.conda.io/en/latest/), [venv](https://docs.python.org/3/library/venv.html)...):
30
+
31
+ ```{.bash}
32
+ conda create --name <env_name> python=3.9
33
+ conda activate <env_name>
34
+ ```
35
+
36
+ To install FAST-UAV, run the following commands in a terminal:
37
+ ```{.bash}
38
+ pip install fastuav
39
+ ```
40
+
41
+ Now that FAST-UAV is installed, you can start using it through [Jupyter notebooks](https://jupyter.org/).
42
+ To do so, create a new folder for FAST-UAV, `cd` into this folder, and type this command in your terminal:
43
+ ```{.bash}
44
+ fastoad notebooks -p fastuav
45
+ ```
46
+ Then run the Jupyter server as indicated in the obtained message.
47
+
48
+ 📚 Citation
49
+ ------------
50
+ This project is part of Félix Pollet's PhD thesis, which is available [here](http://www.theses.fr/2024ESAE0013/document).
51
+ If you use FAST-UAV as part of your work in a scientific publication, please consider citing the following papers:
52
+ ```
53
+ @phdthesis{pollet_design_2024,
54
+ type = {{PhD} {Thesis}},
55
+ title = {Design optimization of unmanned aerial vehicles : a multidisciplinary approach with uncertainty, fault-tolerance, and environmental impact assessments},
56
+ url = {http://www.theses.fr/2024ESAE0013/document},
57
+ school = {Institut Supérieur de l'Aéronautique et de l'Espace},
58
+ author = {Pollet, F{\'e}lix},
59
+ collaborator = {Moschetta, Jean-Marc and Budinger, Marc and Delbecq, Scott},
60
+ month = mar,
61
+ year = {2024},
62
+ }
63
+
64
+ @inproceedings{pollet2022common,
65
+ title = {A common framework for the design optimization of fixed-wing, multicopter and {VTOL} {UAV} configurations},
66
+ author = {Pollet, F{\'e}lix and Delbecq, Scott and Budinger, Marc and Moschetta, Jean-Marc and Liscou{\"e}t, Jonathan},
67
+ booktitle = {33rd {Congress} of the {International} {Council} of the {Aeronautical} {Sciences}},
68
+ address = {Stockholm, Sweden},
69
+ month = sep,
70
+ year = {2022},
71
+ }
72
+
73
+ @inproceedings{pollet2021design,
74
+ title = {Design optimization of multirotor drones in forward flight},
75
+ author = {Pollet, F{\'e}lix and Delbecq, Scott and Budinger, Marc and Moschetta, Jean-Marc},
76
+ booktitle = {32nd {Congress} of the {International} {Council} of the {Aeronautical} {Sciences}},
77
+ address = {Shanghai, China},
78
+ month = sep,
79
+ year = {2021},
80
+ }
81
+
82
+ @article{delbecq2020efficient,
83
+ title = {Efficient sizing and optimization of multirotor drones based on scaling laws and similarity models},
84
+ author = {Delbecq, Scott and Budinger, Marc and Ochotorena, Aithor and Reysset, Aur{\'e}lien and Defay, Francois},
85
+ journal = {Aerospace Science and Technology},
86
+ volume = {102},
87
+ doi = {10.1016/j.ast.2020.105873},
88
+ month = jul,
89
+ year = {2020},
90
+ pages = {105873},
91
+ }
92
+ ```
93
+
94
+
95
+ 🔥 Related publications
96
+ ------------
97
+ > M. Budinger, A. Reysset, A. Ochotorena, and S. Delbecq. Scaling laws and similarity models for the preliminary design of multirotor drones. Aerospace Science and Technology, 2020, 98, pp.1-15. https://doi.org/10.1016/j.ast.2019.105658. https://hal.science/hal-02997598.
98
+
99
+ > S. Delbecq, M. Budinger, A. Ochotorena, A. Reysset, and F. Defay. Efficient sizing and optimization of multirotor drones based on scaling laws and similarity models. Aerospace Science
100
+ and Technology, 2020, 102, pp.1-23. https://doi.org/10.1016/j.ast.2020.105873. https://hal.science/hal-02997596.
101
+
102
+ > F. Pollet, S. Delbecq, M. Budinger, and J.-M. Moschetta. Design optimization of multirotor drones in cruise. 32nd Congress of the International Council of the Aeronautical Sciences, Sep 2021, Shanghai, China. https://hal.science/hal-03832135/.
103
+
104
+ > S. Delbecq, M. Budinger, C. Coic, and N. Bartoli. Trajectory and design optimization of multirotor drones with system simulation. AIAA Scitech 2021 Forum, Jan. 2021, VIRTUAL EVENT, United States. https://doi.org/10.2514/6.2021-0211. https://hal.science/hal-03121520.
105
+
106
+ > J. Liscouet, F. Pollet, J. Jézégou, M. Budinger, S. Delbecq, and J.-M. Moschetta. A Methodology to Integrate Reliability into the Conceptual Design of Safety-Critical Multirotor Unmanned Aerial Vehicles. Aerospace Science and Technology, 2022, 127, pp.107681. https://doi.org/10.1016/j.ast.2022.107681. https://hal.science/hal-03956142.
107
+
108
+ > F. Pollet, S. Delbecq, M. Budinger, J.-M. Moschetta, and J. Liscouët. A Common Framework for the Design Optimization of Fixed-Wing, Multicopter and VTOL UAV Configurations. 33rd Congress of the International Council of the Aeronautical Sciences, Sep. 2022, Stockholm, Sweden. https://hal.science/hal-03832115/
109
+
110
+ > F. Pollet, M. Budinger, S. Delbecq, J. -M. Moschetta, and J. Liscouët. Quantifying and Mitigating Uncertainties in Design Optimization Including Off-the-Shelf Components: Application to an Electric Multirotor UAV. Aerospace Science and Technology, 2023, pp.108179. https://doi.org/10.1016/j.ast.2023.108179.
111
+
112
+ > F. Pollet, M. Budinger, S. Delbecq, J. -M. Moschetta, and T. Planès. Environmental Life Cycle Assessments for the Design Exploration of Electric UAVs. Aerospace Europe Conference 2023 – 10th EUCASS – 9th CEAS, Jul. 2023, Lausanne, Switzerland. https://doi.org/10.13009/EUCASS2023-548. https://hal.science/hal-04229799.
113
+
114
+ > [DroneApp](https://github.com/SizingLab/droneapp-legacy) sizing tool
115
+
116
+
117
+ 📝 License
118
+ ------------
119
+ The software is released under <a href="https://www.gnu.org/licenses/gpl-3.0.en.html"> The GNU General Public License v3.0</a>.
120
+
121
+
122
+ 🤝 Questions and contributions
123
+ ------------
124
+ Feel free to contact us if you have any question or suggestion, or if you wish to contribute with us on FAST-UAV!
125
+ * Scott DELBECQ [scott.delbecq@isae-supaero.fr](scott.delbecq@isae-supaero.fr)
126
+ * Félix POLLET [felix.pollet@isae-supaero.fr](felix.pollet@isae-supaero.fr)
127
+ * Marc BUDINGER [mbudinge@insa-toulouse.fr](mbudinge@insa-toulouse.fr)
128
+
129
+ For developers, please follow the following procedure:
130
+ 1. [Fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) the GitHub repository of FAST-UAV
131
+ 2. Clone your forked repository onto your local machine with `git clone`
132
+ 3. `cd` into your FAST-UAV project and install the required dependencies with [Poetry](https://python-poetry.org/docs/) using the `poetry install` command.
133
+ 4. Start making changes to the forked repository
134
+ 5. Open a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) to merge those changes back into the original repository of FAST-UAV.
@@ -0,0 +1,141 @@
1
+ # Project metadata (PEP 621) ===================================================
2
+ [project]
3
+ name = "FASTUAV"
4
+ description = "FAST-UAV is a framework for performing rapid Overall Aircraft Design for Unmanned Aerial Vehicles"
5
+ readme = "README.md"
6
+ license = "GPL-3.0-only"
7
+ keywords = ["uav", "design", "multi-disciplinary"]
8
+ authors = [
9
+ {name = "Félix POLLET", email = "felix.pollet@isae-supaero.fr"},
10
+ {name = "Scott DELBECQ", email = "scott.delbecq@isae-supaero.fr"},
11
+ {name = "Marc BUDINGER", email = "marc.budinger@insa-toulouse.fr"},
12
+ ]
13
+ requires-python = ">=3.10,<3.15"
14
+ dynamic = ["classifiers"] # Needed to use poetry-dynamic-versioning
15
+
16
+ # User dependencies ------------------------------------------------------------
17
+ dependencies = [
18
+ # IMPORTANT: when modifying this list, docs/requirements.txt must be updated for
19
+ # ReadTheDocs to be able to compile the documentation.
20
+ # A pre-commit hook has been added to do this task. As a result, any modification
21
+ # of poetry.lock file will modify docs/requirements.txt and make
22
+ # the commit fail because "files were modified by this hook". In that case,
23
+ # doing again the commit including changes in docs/requirements.txt will succeed.
24
+ "fast-oad-core>=1.10.0; python_version<'3.15'",
25
+ "cma>=4.0.0,<5.0.0",
26
+ "scikit-learn>=1.0.2,<2.0.0",
27
+ "psutil",
28
+ "kaleido==0.2.1",
29
+ "SALib>=1.5.0,<2.0.0",
30
+ "seaborn>=0.13.0,<0.14.0",
31
+ "pyzmq>=26", # Lower bound for Ubuntu 24.04 / Python 3.12 issue; 27+ needed for Python 3.14 wheels (esp. Windows)
32
+ "plotly>=6.0.0,<7.0.0",
33
+ "ipywidgets>=8.1.8,<9.0.0",
34
+ ]
35
+ version = "0.2.0-beta"
36
+
37
+ [project.optional-dependencies]
38
+ jupyterlab = ["jupyterlab"]
39
+
40
+ [project.urls]
41
+ homepage = "https://github.com/SizingLab/FAST-UAV"
42
+
43
+ # Entry points -----------------------------------------------------------------
44
+ [project.entry-points."fastoad.plugins"]
45
+ uav = "fastuav"
46
+
47
+
48
+ # Poetry settings ==============================================================
49
+ [tool.poetry]
50
+ requires-poetry = ">=2.0"
51
+ packages = [{include = "fastuav", from = "src"}]
52
+ exclude = ["**/tests/**"]
53
+
54
+ # Suitable classifiers based on python requirement and license are not automatically added if classifiers are statically defined in the project section
55
+ classifiers = [
56
+ "Development Status :: 4 - Beta",
57
+ "Environment :: Console",
58
+ "Intended Audience :: Education",
59
+ "Intended Audience :: Science/Research",
60
+ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
61
+ "Natural Language :: English",
62
+ "Operating System :: MacOS",
63
+ "Operating System :: Microsoft :: Windows",
64
+ "Operating System :: POSIX :: Linux",
65
+ "Programming Language :: Python :: 3",
66
+ "Programming Language :: Python :: 3.10",
67
+ "Programming Language :: Python :: 3.11",
68
+ "Programming Language :: Python :: 3.12",
69
+ "Programming Language :: Python :: 3.13",
70
+ "Programming Language :: Python :: 3.14",
71
+ "Topic :: Scientific/Engineering :: Physics",
72
+ ]
73
+
74
+ # Development dependencies -----------------------------------------------------
75
+ [tool.poetry.group.test.dependencies]
76
+ pytest = "^8.0"
77
+ pytest-cov = "^6.0"
78
+ coverage = {version = "^7.0", extras = ["toml"]}
79
+ nbval = "^0.9.6"
80
+
81
+ [tool.poetry.group.doc.dependencies]
82
+ sphinx = "^4.1.2"
83
+ sphinx-rtd-theme = "^1.0"
84
+ sphinxcontrib-bibtex = "^2.3.0"
85
+
86
+ [tool.poetry.group.lint.dependencies]
87
+ pre-commit = "^2.14.1"
88
+ nbstripout = "^0.5.0"
89
+ ruff = "0.15.0"
90
+
91
+ # Poetry plugins ===============================================================
92
+ [tool.poetry.requires-plugins]
93
+ poetry-plugin-export = ">=1.9" # Used for the poetry export hook in pre-commit
94
+
95
+
96
+ # Dynamic versioning settings ==================================================
97
+ [tool.poetry-dynamic-versioning]
98
+ enable = false
99
+ vcs = "git"
100
+ style = "semver"
101
+
102
+
103
+ # Packaging system =============================================================
104
+ [build-system]
105
+ requires = ["poetry-core>=2.0.0,<3.0.0", "poetry-dynamic-versioning>=1.0.0,<2.0.0"]
106
+ build-backend = "poetry_dynamic_versioning.backend"
107
+
108
+
109
+ # Pytest settings ==============================================================
110
+ [tool.pytest.ini_options]
111
+ minversion = "8.0"
112
+ addopts = "--cov-report term-missing --cov-report html --verbose"
113
+ testpaths = ["src"]
114
+ norecursedirs = ["dist", "build", ".tox", ".ipynb_checkpoints"]
115
+ filterwarnings = ["default"]
116
+
117
+
118
+ # Coverage settings ============================================================
119
+ [tool.coverage.run]
120
+ branch = true
121
+ source = ["fastuav"]
122
+ omit = ["*/test/*", "*/tests/*"]
123
+
124
+ [tool.coverage.paths]
125
+ source = ["src/"]
126
+
127
+ [tool.coverage.report]
128
+ # Regexes for lines to exclude from consideration
129
+ exclude_lines = [
130
+ # Have to re-enable the standard pragma
131
+ "pragma: no cover",
132
+ # Don't complain about missing debug-only code:
133
+ "def __repr__",
134
+ "if self.debug",
135
+ # Don't complain if tests don't hit defensive assertion code:
136
+ "raise AssertionError",
137
+ "raise NotImplementedError",
138
+ # Don't complain if non-runnable code isn't run:
139
+ "if 0:",
140
+ "if __name__ == .__main__.:",
141
+ ]
File without changes
File without changes
@@ -0,0 +1,189 @@
1
+ title: Multirotor Drone MDO
2
+
3
+ # List of folder paths where user added custom registered OpenMDAO components
4
+ module_folders:
5
+
6
+ # Input and output files
7
+ input_file: ../../workdir/problem_inputs.xml
8
+ output_file: ../../workdir/problem_outputs.xml
9
+
10
+ # Definition of problem driver assuming the OpenMDAO convention import openmdao.api as om
11
+ driver: om.ScipyOptimizeDriver(tol=1e-6, optimizer='SLSQP', maxiter=30)
12
+
13
+ # Definition of OpenMDAO model
14
+ model:
15
+ scenarios:
16
+ id: fastuav.scenarios.multirotor
17
+ propulsion:
18
+ id: fastuav.propulsion.multirotor
19
+ gearbox: False
20
+ geometry:
21
+ id: fastuav.geometry.multirotor
22
+ structures:
23
+ id: fastuav.structures.multirotor
24
+ wires:
25
+ id: fastuav.propulsion.wires.multirotor
26
+ mtow:
27
+ id: fastuav.mtow.multirotor
28
+ performance:
29
+ endurance:
30
+ id: fastuav.performance.endurance.multirotor
31
+ missions:
32
+ id: fastuav.performance.mission
33
+ file_path: ../missions/missions_multirotor.yaml
34
+
35
+
36
+ # This section is needed only if optimization process is run
37
+ optimization:
38
+
39
+ design_variables:
40
+
41
+ ## GLOBAL ##
42
+ - name: optimization:variables:weight:mtow:k # over estimation coefficient on the load mass
43
+ upper: 40.0
44
+ lower: 1.0
45
+
46
+ ## PROPULSION ##
47
+ - name: optimization:variables:propulsion:multirotor:propeller:ND:k # slow down propeller coef : k_ND: ND / NDmax
48
+ lower: 0.01
49
+ upper: 1.0
50
+
51
+ - name: optimization:variables:propulsion:multirotor:propeller:beta # pitch/diameter ratio of the propeller
52
+ lower: 0.3
53
+ upper: 0.6
54
+
55
+ - name: optimization:variables:propulsion:multirotor:propeller:advance_ratio:climb # climbing advance ratio
56
+ lower: 0.01
57
+ upper: 0.5
58
+
59
+ - name: optimization:variables:propulsion:multirotor:propeller:advance_ratio:cruise # cruise advance ratio
60
+ lower: 0.01
61
+ upper: 2.0
62
+
63
+ - name: optimization:variables:propulsion:multirotor:motor:torque:k # over estimation coefficient on the motor torque
64
+ lower: 1.0
65
+ upper: 20.0
66
+
67
+ - name: optimization:variables:propulsion:multirotor:motor:speed:k # over estimation coefficient on the motor speed
68
+ lower: 0.1
69
+ upper: 10.0
70
+
71
+ - name: optimization:variables:propulsion:multirotor:battery:energy:k # over estimation coefficient on the battery energy
72
+ lower: 0.1
73
+ upper: 20.0
74
+
75
+ - name: optimization:variables:propulsion:multirotor:battery:voltage:k # over estimation coefficient on the battery voltage
76
+ lower: 1.0
77
+ upper: 10.0
78
+
79
+ - name: optimization:variables:propulsion:multirotor:esc:power:k # over estimation coefficient on the ESC power
80
+ lower: 1.0
81
+ upper: 15.0
82
+
83
+ - name: optimization:variables:propulsion:multirotor:esc:voltage:k # over estimation coefficient on the ESC voltage
84
+ lower: 1.0
85
+ upper: 15.0
86
+
87
+ # - name: data:propulsion:multirotor:gearbox:N_red # gearbox reduction ratio (if 'gearbox' option is true)
88
+ # lower: 1.0
89
+ # upper: 20.0
90
+
91
+ ## STRUCTURE ##
92
+ - name: optimization:variables:structures:arms:diameter:k # aspect ratio D_out/D_in for the arms
93
+ lower: 0.05
94
+ upper: 0.99
95
+
96
+
97
+ constraints:
98
+
99
+ ## GLOBAL ##
100
+ - name: optimization:constraints:weight:mtow:consistency # Mass consistency
101
+ lower: 0.0
102
+
103
+ #- name: optimization:constraints:weight:mtow:requirement # MTOW requirement
104
+ # lower: 0.0
105
+
106
+ ## PROPULSION ##
107
+ - name: optimization:constraints:propulsion:multirotor:propeller:airspeed:climb # climb speed requirement
108
+ lower: 0.0
109
+ upper: 0.01
110
+
111
+ - name: optimization:constraints:propulsion:multirotor:propeller:airspeed:cruise # cruise speed requirement
112
+ lower: 0.0
113
+ upper: 0.01
114
+
115
+ - name: optimization:constraints:propulsion:multirotor:propeller:rpm:climb # propeller rpm in climb
116
+ lower: 0.0
117
+
118
+ - name: optimization:constraints:propulsion:multirotor:propeller:rpm:cruise # propeller rpm in cruise
119
+ lower: 0.0
120
+
121
+ - name: optimization:constraints:propulsion:multirotor:motor:torque:climb # motor torque in climb
122
+ lower: 0.0
123
+
124
+ - name: optimization:constraints:propulsion:multirotor:motor:torque:hover # motor torque in hover
125
+ lower: 0.0
126
+
127
+ - name: optimization:constraints:propulsion:multirotor:motor:torque:cruise # motor torque in cruise
128
+ lower: 0.0
129
+
130
+ #- name: optimization:constraints:propulsion:multirotor:motor:speed:constant:min # min bound for Kv w.r.t. Tmax (to match commercially available components)
131
+ # lower: 0.0
132
+
133
+ #- name: optimization:constraints:propulsion:multirotor:motor:speed:constant:max # max bound for Kv w.r.t. Tmax (to match commercially available components)
134
+ # lower: 0.0
135
+
136
+ - name: optimization:constraints:propulsion:multirotor:battery:power:takeoff # battery power at takeoff
137
+ lower: 0.0
138
+
139
+ - name: optimization:constraints:propulsion:multirotor:battery:power:climb # battery power in climb
140
+ lower: 0.0
141
+
142
+ - name: optimization:constraints:propulsion:multirotor:battery:power:cruise # battery power in cruise
143
+ lower: 0.0
144
+
145
+ - name: optimization:constraints:propulsion:multirotor:battery:voltage:climb # battery voltage in climb
146
+ lower: 0.0
147
+
148
+ - name: optimization:constraints:propulsion:multirotor:battery:voltage:cruise # battery voltage in cruise
149
+ lower: 0.0
150
+
151
+ #- name: optimization:constraints:propulsion:multirotor:battery:voltage:min # min bound for voltage w.r.t. power (to match commercially available components)
152
+ # lower: 0.0
153
+
154
+ #- name: optimization:constraints:propulsion:multirotor:battery:voltage:max # max bound for voltage w.r.t. power (to match commercially available components)
155
+ # lower: 0.0
156
+
157
+ - name: optimization:constraints:propulsion:multirotor:esc:power:climb # ESC power in climb
158
+ lower: 0.0
159
+
160
+ - name: optimization:constraints:propulsion:multirotor:esc:power:cruise # ESC power in cruise
161
+ lower: 0.0
162
+
163
+ - name: optimization:constraints:propulsion:multirotor:esc:voltage:min # min bound for voltage w.r.t. power (to match commercially available components)
164
+ lower: 0.0
165
+
166
+ - name: optimization:constraints:propulsion:multirotor:esc:voltage:max # max bound for voltage w.r.t. power (to match commercially available components)
167
+ lower: 0.0
168
+
169
+ ## MISSION ##
170
+ - name: optimization:constraints:mission:sizing:energy:multirotor # energy requirement to fulfill mission (e.g. for mass minimization objective)
171
+ lower: 0.0
172
+
173
+ objective:
174
+ # MASS MINIMIZATION
175
+ - name: data:weight:mtow
176
+ scaler: 1e-1
177
+
178
+ # ENERGY MINIMIZATION
179
+ #- name: mission:sizing:energy
180
+ # scaler: 1e-3
181
+
182
+ # MAX. RANGE MAXIMIZATION
183
+ #- name: data:performance:endurance:cruise
184
+ # scaler: -1e-3
185
+
186
+ # HOVER AUTONOMY MAXIMIZATION
187
+ #- name: data:performance:endurance:hover:max
188
+ # scaler: -1e-1
189
+
@@ -0,0 +1,17 @@
1
+ title: Multirotor Drone MDO with LCA
2
+
3
+ # List of folder paths where user added custom registered OpenMDAO components
4
+ module_folders:
5
+
6
+ # Input and output files
7
+ input_file: ../../workdir/problem_inputs.xml
8
+ output_file: ../../workdir/problem_outputs.xml
9
+
10
+ # Definition of OpenMDAO model
11
+ model:
12
+ missions:
13
+ id: fastuav.performance.mission
14
+ file_path: ../missions/missions_multirotor_doe.yaml # path to the mission definition file
15
+
16
+
17
+