RCAIDE-GUI 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. common_widgets/__init__.py +6 -0
  2. common_widgets/animated_toggle.py +141 -0
  3. common_widgets/color.py +17 -0
  4. common_widgets/data_entry_widget.py +337 -0
  5. common_widgets/image_widget.py +21 -0
  6. common_widgets/unit_picker_widget.py +48 -0
  7. main.py +168 -0
  8. rcaide_gui-1.0.0.dist-info/METADATA +96 -0
  9. rcaide_gui-1.0.0.dist-info/RECORD +170 -0
  10. rcaide_gui-1.0.0.dist-info/WHEEL +5 -0
  11. rcaide_gui-1.0.0.dist-info/entry_points.txt +2 -0
  12. rcaide_gui-1.0.0.dist-info/top_level.txt +5 -0
  13. rcaide_io.py +818 -0
  14. tabs/__init__.py +10 -0
  15. tabs/aircraft_configs/__init__.py +3 -0
  16. tabs/aircraft_configs/aircraft_configs.py +301 -0
  17. tabs/analysis/__init__.py +4 -0
  18. tabs/analysis/analysis.py +92 -0
  19. tabs/analysis/widgets/__init__.py +13 -0
  20. tabs/analysis/widgets/aeroacoustics_widget.py +158 -0
  21. tabs/analysis/widgets/aerodynamics_widget.py +108 -0
  22. tabs/analysis/widgets/analysis_data_widget.py +29 -0
  23. tabs/analysis/widgets/atmosphere_widget.py +49 -0
  24. tabs/analysis/widgets/costs_widget.py +35 -0
  25. tabs/analysis/widgets/energy_widget.py +32 -0
  26. tabs/analysis/widgets/geometry_widget.py +55 -0
  27. tabs/analysis/widgets/planets_widget.py +34 -0
  28. tabs/analysis/widgets/propulsion_widget.py +53 -0
  29. tabs/analysis/widgets/stability_widget.py +34 -0
  30. tabs/analysis/widgets/weights_widget.py +94 -0
  31. tabs/geometry/__init__.py +6 -0
  32. tabs/geometry/aircraft_configs.py +232 -0
  33. tabs/geometry/frames/__init__.py +15 -0
  34. tabs/geometry/frames/booms/__init__.py +5 -0
  35. tabs/geometry/frames/booms/boom_frame.py +238 -0
  36. tabs/geometry/frames/cargo_bays/__init__.py +5 -0
  37. tabs/geometry/frames/cargo_bays/cargo_bay_frame.py +159 -0
  38. tabs/geometry/frames/default_frame.py +23 -0
  39. tabs/geometry/frames/energy_network/__init__.py +2 -0
  40. tabs/geometry/frames/energy_network/turbofan_network/__init__.py +3 -0
  41. tabs/geometry/frames/energy_network/turbofan_network/frames/__init__.py +1 -0
  42. tabs/geometry/frames/energy_network/turbofan_network/widgets/__init__.py +1 -0
  43. tabs/geometry/frames/fuselages/__init__.py +5 -0
  44. tabs/geometry/frames/fuselages/fuselage_frame.py +294 -0
  45. tabs/geometry/frames/geometry_frame.py +91 -0
  46. tabs/geometry/frames/landing_gears/__init__.py +5 -0
  47. tabs/geometry/frames/landing_gears/landing_gear_frame.py +189 -0
  48. tabs/geometry/frames/nacelles/__init__.py +1 -0
  49. tabs/geometry/frames/powertrain/__init__.py +6 -0
  50. tabs/geometry/frames/powertrain/converters/__init__.py +5 -0
  51. tabs/geometry/frames/powertrain/converters/converter_frame.py +137 -0
  52. tabs/geometry/frames/powertrain/distributors/__init__.py +5 -0
  53. tabs/geometry/frames/powertrain/distributors/distributor_frame.py +143 -0
  54. tabs/geometry/frames/powertrain/nacelles/__init__.py +5 -0
  55. tabs/geometry/frames/powertrain/nacelles/nacelle_frame.py +283 -0
  56. tabs/geometry/frames/powertrain/powertrain_frame.py +259 -0
  57. tabs/geometry/frames/powertrain/propulsors/__init__.py +5 -0
  58. tabs/geometry/frames/powertrain/propulsors/propulsor_frame.py +146 -0
  59. tabs/geometry/frames/powertrain/sources/__init__.py +6 -0
  60. tabs/geometry/frames/powertrain/sources/energy_source_frame.py +147 -0
  61. tabs/geometry/frames/vehicle_frame.py +171 -0
  62. tabs/geometry/frames/wings/__init__.py +5 -0
  63. tabs/geometry/frames/wings/wings_frame.py +457 -0
  64. tabs/geometry/geometry.py +513 -0
  65. tabs/geometry/widgets/__init__.py +12 -0
  66. tabs/geometry/widgets/booms/__init__.py +6 -0
  67. tabs/geometry/widgets/booms/boom_section_widget.py +109 -0
  68. tabs/geometry/widgets/cargo_bays/__init__.py +1 -0
  69. tabs/geometry/widgets/fuselages/__init__.py +8 -0
  70. tabs/geometry/widgets/fuselages/cabin_class_widget.py +188 -0
  71. tabs/geometry/widgets/fuselages/cabin_widget.py +217 -0
  72. tabs/geometry/widgets/fuselages/fuselage_section_widget.py +190 -0
  73. tabs/geometry/widgets/geometry_data_widget.py +25 -0
  74. tabs/geometry/widgets/landing_gears/__init__.py +6 -0
  75. tabs/geometry/widgets/nacelles/__init__.py +1 -0
  76. tabs/geometry/widgets/powertrain/__init__.py +9 -0
  77. tabs/geometry/widgets/powertrain/converters/__init__.py +5 -0
  78. tabs/geometry/widgets/powertrain/converters/turboelectric_generator_widget.py +74 -0
  79. tabs/geometry/widgets/powertrain/distributors/__init__.py +5 -0
  80. tabs/geometry/widgets/powertrain/distributors/fuel_line_widget.py +81 -0
  81. tabs/geometry/widgets/powertrain/modulators/__init__.py +5 -0
  82. tabs/geometry/widgets/powertrain/modulators/esc_widget.py +58 -0
  83. tabs/geometry/widgets/powertrain/nacelles/__init__.py +5 -0
  84. tabs/geometry/widgets/powertrain/nacelles/nacelle_section_widget.py +115 -0
  85. tabs/geometry/widgets/powertrain/powertrain_connector_widget.py +136 -0
  86. tabs/geometry/widgets/powertrain/powertrain_widget.py +206 -0
  87. tabs/geometry/widgets/powertrain/propulsors/__init__.py +5 -0
  88. tabs/geometry/widgets/powertrain/propulsors/turbofan_widget.py +462 -0
  89. tabs/geometry/widgets/powertrain/sources/__init__.py +6 -0
  90. tabs/geometry/widgets/powertrain/sources/fuel_tank_widget.py +103 -0
  91. tabs/geometry/widgets/powertrain/sources/source_selector_widget.py +35 -0
  92. tabs/geometry/widgets/wings/__init__.py +7 -0
  93. tabs/geometry/widgets/wings/wing_cs_widget.py +198 -0
  94. tabs/geometry/widgets/wings/wing_section_widget.py +298 -0
  95. tabs/home/__init__.py +3 -0
  96. tabs/home/home.py +585 -0
  97. tabs/mission/__init__.py +4 -0
  98. tabs/mission/mission.py +1124 -0
  99. tabs/mission/widgets/__init__.py +3 -0
  100. tabs/mission/widgets/flight_controls_widget.py +186 -0
  101. tabs/mission/widgets/mission_analysis_widget.py +166 -0
  102. tabs/mission/widgets/mission_segment_helper.py +358 -0
  103. tabs/mission/widgets/mission_segment_widget.py +358 -0
  104. tabs/solve/__init__.py +4 -0
  105. tabs/solve/plots/__init__.py +12 -0
  106. tabs/solve/plots/aeroacoustics/__init__.py +6 -0
  107. tabs/solve/plots/aeroacoustics/plot_2D_noise_contour.py +184 -0
  108. tabs/solve/plots/aeroacoustics/plot_3D_noise_contour.py +219 -0
  109. tabs/solve/plots/aeroacoustics/plot_noise_certification_contour.py +115 -0
  110. tabs/solve/plots/aeroacoustics/plot_noise_level.py +118 -0
  111. tabs/solve/plots/aerodynamics/__init__.py +10 -0
  112. tabs/solve/plots/aerodynamics/plot_aerodynamic_coefficients.py +156 -0
  113. tabs/solve/plots/aerodynamics/plot_aerodynamic_forces.py +155 -0
  114. tabs/solve/plots/aerodynamics/plot_aircraft_aerodynamics.py +136 -0
  115. tabs/solve/plots/aerodynamics/plot_drag_components.py +157 -0
  116. tabs/solve/plots/aerodynamics/plot_lift_distribution.py +107 -0
  117. tabs/solve/plots/aerodynamics/plot_rotor_conditions.py +255 -0
  118. tabs/solve/plots/aerodynamics/plot_rotor_disc_performance.py +144 -0
  119. tabs/solve/plots/aerodynamics/plot_rotor_performance.py +124 -0
  120. tabs/solve/plots/common/__init__.py +4 -0
  121. tabs/solve/plots/common/plot_style.py +71 -0
  122. tabs/solve/plots/common/set_axes.py +55 -0
  123. tabs/solve/plots/create_plot_widgets.py +34 -0
  124. tabs/solve/plots/emissions/__init__.py +3 -0
  125. tabs/solve/plots/emissions/plot_emissions.py +167 -0
  126. tabs/solve/plots/energy/__init__.py +12 -0
  127. tabs/solve/plots/energy/plot_altitude_sfc_weight.py +134 -0
  128. tabs/solve/plots/energy/plot_battery_cell_conditions.py +154 -0
  129. tabs/solve/plots/energy/plot_battery_degradation.py +157 -0
  130. tabs/solve/plots/energy/plot_battery_module_C_rates.py +139 -0
  131. tabs/solve/plots/energy/plot_battery_module_conditions.py +157 -0
  132. tabs/solve/plots/energy/plot_battery_pack_conditions.py +164 -0
  133. tabs/solve/plots/energy/plot_battery_ragone_diagram.py +97 -0
  134. tabs/solve/plots/energy/plot_battery_temperature.py +136 -0
  135. tabs/solve/plots/energy/plot_electric_propulsor_efficiencies.py +136 -0
  136. tabs/solve/plots/energy/plot_propulsor_throttles.py +119 -0
  137. tabs/solve/plots/mission/__init__.py +5 -0
  138. tabs/solve/plots/mission/plot_aircraft_velocities.py +145 -0
  139. tabs/solve/plots/mission/plot_flight_conditions.py +236 -0
  140. tabs/solve/plots/mission/plot_flight_trajectory.py +172 -0
  141. tabs/solve/plots/stability/__init__.py +5 -0
  142. tabs/solve/plots/stability/plot_flight_forces_and_moments.py +163 -0
  143. tabs/solve/plots/stability/plot_lateral_stability.py +151 -0
  144. tabs/solve/plots/stability/plot_longitudinal_stability.py +173 -0
  145. tabs/solve/plots/thermal_management/__init__.py +7 -0
  146. tabs/solve/plots/thermal_management/plot_air_cooled_conditions.py +152 -0
  147. tabs/solve/plots/thermal_management/plot_cross_flow_heat_exchanger_conditions.py +185 -0
  148. tabs/solve/plots/thermal_management/plot_reservoir_conditions.py +141 -0
  149. tabs/solve/plots/thermal_management/plot_thermal_management_performance.py +105 -0
  150. tabs/solve/plots/thermal_management/plot_wavy_channel_conditions.py +161 -0
  151. tabs/solve/plots/weights/__init__.py +4 -0
  152. tabs/solve/plots/weights/plot_load_diagram.py +163 -0
  153. tabs/solve/plots/weights/plot_weight_breakdown.py +164 -0
  154. tabs/solve/solve.py +1498 -0
  155. tabs/style_sheet.py +114 -0
  156. tabs/tab_widget.py +14 -0
  157. tabs/visualize_geometry/__init__.py +4 -0
  158. tabs/visualize_geometry/core_3d_viewer.py +253 -0
  159. tabs/visualize_geometry/features/__init__.py +10 -0
  160. tabs/visualize_geometry/features/axes_gizmo.py +173 -0
  161. tabs/visualize_geometry/features/background.py +161 -0
  162. tabs/visualize_geometry/features/blueprint.py +685 -0
  163. tabs/visualize_geometry/features/camera.py +364 -0
  164. tabs/visualize_geometry/features/drag_aircraft.py +219 -0
  165. tabs/visualize_geometry/features/grid.py +194 -0
  166. tabs/visualize_geometry/features/measurement.py +367 -0
  167. tabs/visualize_geometry/features/screenshot.py +91 -0
  168. tabs/visualize_geometry/geometry_helper_functions.py +3 -0
  169. tabs/visualize_geometry/visualize_geometry.py +731 -0
  170. utilities.py +257 -0
main.py ADDED
@@ -0,0 +1,168 @@
1
+
2
+ from PyQt6.QtWidgets import QApplication, QMainWindow, QTabWidget, QFileDialog
3
+ from PyQt6.QtGui import QAction, QIcon
4
+ from PyQt6.QtCore import QFileInfo
5
+ from qt_material import apply_stylesheet
6
+ import rcaide_io
7
+ from tabs import *
8
+ from tabs.visualize_geometry import visualize_geometry
9
+
10
+ import sys
11
+ import os
12
+
13
+ _ROOT = os.path.dirname(os.path.abspath(__file__))
14
+ _IMG = os.path.join(_ROOT, "app_data", "images")
15
+
16
+ if sys.platform == "win32":
17
+ import ctypes
18
+
19
+ ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("LEADS.RCAIDE.GUI")
20
+
21
+ class App(QMainWindow):
22
+ def __init__(self):
23
+ super().__init__()
24
+
25
+ self.setWindowTitle("RCAIDE GUI")
26
+ self.setWindowIcon(QIcon(os.path.join(_IMG, "logo.png")))
27
+
28
+ menubar = self.menuBar()
29
+ if menubar is None:
30
+ return
31
+
32
+ # File menu
33
+ file_menu = menubar.addMenu("File")
34
+ if file_menu is None:
35
+ return
36
+
37
+ load_action = QAction("Load", self)
38
+ load_action.triggered.connect(self.load_all)
39
+
40
+ save_action = QAction("Save", self)
41
+ save_action.triggered.connect(self.save_all)
42
+
43
+ file_menu.addAction(load_action)
44
+ file_menu.addAction(save_action)
45
+ file_menu.addSeparator()
46
+
47
+ file_menu.addSeparator()
48
+ file_menu.addAction("Quit")
49
+
50
+ menubar.addMenu("Documentation")
51
+
52
+ self.tabs = QTabWidget()
53
+ self.tabs.setTabPosition(QTabWidget.TabPosition.North)
54
+
55
+ self.tabs.currentChanged.connect(self.on_tab_change)
56
+
57
+ self.widgets = []
58
+ self.widgets.append((home.get_widget(), "Home"))
59
+ self.widgets.append((geometry.get_widget(), "Vehicle Setup"))
60
+ self.widgets.append((visualize_geometry.get_widget(), "Geometry Visualization"))
61
+ self.widgets.append((aircraft_configs.get_widget(), "Configurations Setup"))
62
+ self.widgets.append((analysis.get_widget(), "Analyses Setup"))
63
+ self.widgets.append((mission.get_widget(), "Mission Setup"))
64
+ self.widgets.append((solve.get_widget(), "Mission Simulation"))
65
+ # self.widgets.append((shared_analysis_widget, "Multidisciplinary Analyses"))
66
+
67
+ for widget, name in self.widgets:
68
+ self.tabs.addTab(widget, name)
69
+
70
+ self.setCentralWidget(self.tabs)
71
+ self.resize(1280, 720)
72
+
73
+ def on_tab_change(self, index: int):
74
+ current_frame = self.tabs.currentWidget()
75
+ assert isinstance(current_frame, TabWidget)
76
+
77
+ current_frame.update_layout()
78
+
79
+ def save_all(self):
80
+ for widget, name in self.widgets:
81
+ assert isinstance(widget, TabWidget)
82
+
83
+ json_data = rcaide_io.write_to_json()
84
+ name = QFileDialog.getSaveFileName(self, 'Save As', os.path.join(_ROOT, "app_data", "aircraft"), "JSON (*.json)")[0]
85
+
86
+ if not name:
87
+ return
88
+ if not QFileInfo(name).suffix():
89
+ name += ".json"
90
+
91
+ with open(name, 'w') as f:
92
+ f.write(json_data)
93
+ rcaide_io.current_file_path = name
94
+
95
+ def load_all(self):
96
+ name = QFileDialog.getOpenFileName(self, 'Open File', os.path.join(_ROOT, "app_data", "aircraft"), "JSON (*.json)")[0]
97
+
98
+ try:
99
+ file = open(name, 'r')
100
+ except FileNotFoundError:
101
+ return
102
+
103
+ data_str = file.read()
104
+ file.close()
105
+ rcaide_io.current_file_path = name
106
+ rcaide_io.read_from_json(data_str, source_dir=os.path.dirname(os.path.abspath(name)))
107
+ # Recreate geometry tab on each load so the component tree doesn't append duplicates across reloads
108
+ for i, (widget, tab_name) in enumerate(self.widgets):
109
+ if tab_name == "Vehicle Setup":
110
+ # Keep the loaded geometry data before rebuilding the widget
111
+ loaded_geometry = rcaide_io.rcaide_vehicle
112
+ loaded_vehicle = rcaide_io.vehicle
113
+ # Remembers which tab the user was on
114
+ current_index = self.tabs.currentIndex()
115
+ # Remove the old Geometry tab (it holds duplicated UI state)
116
+ self.tabs.removeTab(i)
117
+ # Create a fresh Geometry widget
118
+ new_widget = geometry.get_widget()
119
+ # Restore the loaded geometry data for load_from_values()
120
+ rcaide_io.rcaide_vehicle = loaded_geometry
121
+ rcaide_io.vehicle = loaded_vehicle
122
+ # Insert the fresh tab back into the same position
123
+ self.tabs.insertTab(i, new_widget, tab_name)
124
+ # Update our cached widgets list.
125
+ self.widgets[i] = (new_widget, tab_name)
126
+ # Put the user back on the same tab if they were on Geometry
127
+ if current_index == i:
128
+ self.tabs.setCurrentIndex(i)
129
+ break
130
+ for widget, name in self.widgets:
131
+ assert isinstance(widget, TabWidget)
132
+ widget.load_from_values()
133
+ self._go_to_geometry_visualization_tab()
134
+
135
+ def _go_to_geometry_visualization_tab(self):
136
+ for index in range(self.tabs.count()):
137
+ if self.tabs.tabText(index).strip().lower() == "geometry visualization":
138
+ self.tabs.setCurrentIndex(index)
139
+ current_widget = self.tabs.widget(index)
140
+ if isinstance(current_widget, TabWidget):
141
+ current_widget.update_layout()
142
+ return
143
+
144
+ def main():
145
+ app = QApplication(sys.argv)
146
+ app.setWindowIcon(QIcon(os.path.join(_IMG, "logo.png")))
147
+ window = App()
148
+ extra = {
149
+ 'density_scale': '-2',
150
+ 'delete': '#b0220c',
151
+ 'save': '#0291de',
152
+ 'menubar': '#021a32',
153
+ 'font_size': '15px'
154
+ }
155
+ apply_stylesheet(app, theme=os.path.join(_ROOT, "app_data", "style_sheets", "rcaide_dark_theme.xml"), extra=extra)
156
+ custom_qss = app.styleSheet() + """
157
+ QPushButton {
158
+ border: 1px solid;
159
+ border-radius: 4px;
160
+ border-color: #ffffff;
161
+ }
162
+ """
163
+ app.setStyleSheet(custom_qss)
164
+ window.show()
165
+ sys.exit(app.exec())
166
+
167
+ if __name__ == '__main__':
168
+ main()
@@ -0,0 +1,96 @@
1
+ Metadata-Version: 2.4
2
+ Name: RCAIDE-GUI
3
+ Version: 1.0.0
4
+ Summary: RCAIDE Graphical User Interface: interactive desktop application for aircraft design and analysis
5
+ License: GNU Affero General Public License v3.0
6
+ Classifier: Development Status :: 4 - Beta
7
+ Classifier: Intended Audience :: Developers
8
+ Classifier: Intended Audience :: Education
9
+ Classifier: Intended Audience :: Science/Research
10
+ Classifier: License :: OSI Approved :: GNU Affero General Public License v3
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Topic :: Scientific/Engineering
18
+ Requires-Python: >=3.9
19
+ Description-Content-Type: text/markdown
20
+ Requires-Dist: RCAIDE-LEADS
21
+ Requires-Dist: PyQt6>=6.9.0
22
+ Requires-Dist: pyqtgraph>=0.14.0
23
+ Requires-Dist: pyvista>=0.46.0
24
+ Requires-Dist: pyvistaqt>=0.11.0
25
+ Requires-Dist: qt-material>=2.17
26
+ Requires-Dist: numpy
27
+ Requires-Dist: scipy
28
+ Requires-Dist: matplotlib
29
+ Requires-Dist: plotly
30
+ Requires-Dist: pandas
31
+ Requires-Dist: pillow
32
+ Requires-Dist: trimesh
33
+ Requires-Dist: vtk
34
+ Requires-Dist: contourpy
35
+ Requires-Dist: cycler
36
+ Requires-Dist: fonttools
37
+ Requires-Dist: geographiclib
38
+ Requires-Dist: geopy
39
+ Requires-Dist: joblib
40
+ Requires-Dist: kaleido
41
+ Requires-Dist: python-dateutil
42
+ Requires-Dist: pytz
43
+ Requires-Dist: scikit-learn
44
+ Requires-Dist: six
45
+ Requires-Dist: tenacity
46
+ Requires-Dist: threadpoolctl
47
+
48
+ # RCAIDE GUI: Research Community Aircraft Interdisciplinary Design Environment — Graphical User Interface
49
+
50
+ The RCAIDE GUI is an interactive desktop application for [RCAIDE](https://pypi.org/project/RCAIDE-LEADS/), a powerful open-source Python platform for aircraft design and analysis. It provides an intuitive visual workflow for aerospace engineers, researchers, and students to design, configure, and simulate aircraft without writing Python scripts directly.
51
+
52
+ ## Features
53
+
54
+ - **Vehicle Setup** — Build up aircraft geometry using a component tree (wings, fuselages, nacelles, landing gear, booms, propulsors) with a live 3D preview
55
+ - **Geometry Visualization** — Full 3D VTK rendering environment; inspect component placement and export top/front/side view images
56
+ - **Configurations Setup** — Define base, takeoff, cruise, and landing configurations with control surface deflections and active propulsor settings
57
+ - **Analyses Setup** — Configure multidisciplinary solvers (aerodynamics, atmosphere, weights, acoustics) and toggle fidelity levels
58
+ - **Mission Setup** — Chain flight segments (takeoff, climb, cruise, descent) with custom altitudes, speeds, and linked analyses
59
+ - **Mission Simulation** — Execute the backend RCAIDE solvers and view numerical and graphical results (performance, payload-range, stability)
60
+
61
+ ## Installation
62
+
63
+ ```bash
64
+ pip install RCAIDE-GUI
65
+ ```
66
+
67
+ Installing `RCAIDE-GUI` automatically installs [RCAIDE-LEADS](https://pypi.org/project/RCAIDE-LEADS/) and all required dependencies.
68
+
69
+ ## Launch
70
+
71
+ ```bash
72
+ rcaide-gui
73
+ ```
74
+
75
+ Or via Python:
76
+
77
+ ```bash
78
+ python -m main
79
+ ```
80
+
81
+ ## Requirements
82
+
83
+ - Python ≥ 3.9
84
+ - PyQt6
85
+ - pyvista / pyvistaqt
86
+ - RCAIDE-LEADS (installed automatically)
87
+
88
+ Refer to the [installation guide](https://www.docs.rcaide.leadsresearchgroup.com/install.html) for platform-specific notes.
89
+
90
+ ## Contributing
91
+
92
+ We welcome contributions! Please see our [contribution guidelines](https://www.docs.rcaide.leadsresearchgroup.com/contributing.html).
93
+
94
+ ## Contact
95
+
96
+ For feedback, issues, or feature requests, use our [GitHub Issues](https://github.com/leadsgroup/RCAIDE_GUI/issues) or join our [Discussions](https://github.com/leadsgroup/RCAIDE_GUI/discussions).
@@ -0,0 +1,170 @@
1
+ main.py,sha256=_f2HjXstiggXcVReT4YD42SnvsjySZ5LwONKrmimzZw,6068
2
+ rcaide_io.py,sha256=btC58hPrlQdRtiJb2pNa8SA9sXogrRiCfsdflDiUJoY,35231
3
+ utilities.py,sha256=Kokcrg2CildF5xQW6iEmuYoCk2D6O0_xgpo7ndlYa3E,9089
4
+ common_widgets/__init__.py,sha256=f4BVe8j74mO52OeQZpKJfKtMuKjRiJn2Vp07rWa0GQ0,210
5
+ common_widgets/animated_toggle.py,sha256=3DwMjxKayHdzzVelvuSJCK0u6-K_-B0PzT3bV75OP_c,5034
6
+ common_widgets/color.py,sha256=1pA-LOcw41IkAa0XxBL8WDI4vRhecUHetsDdrcM1zck,616
7
+ common_widgets/data_entry_widget.py,sha256=o1qW9R1zTvSJ8jjYKZU3ByGMskXcs1alrDBcZjqr6lc,15528
8
+ common_widgets/image_widget.py,sha256=Yo757yp8K16w6ZikFMxMBydIj4PTNYZqDZ_D3_77Zh4,694
9
+ common_widgets/unit_picker_widget.py,sha256=pav7IiN85HD2sVcBuiyqxY2YGixZsXtSNlWCWzBllJs,1692
10
+ tabs/__init__.py,sha256=QKdyfr0j1Vh7Ge1UHU_ZXBDvL1nkbfaBEbFEQL4zbJQ,239
11
+ tabs/style_sheet.py,sha256=vEV-haCsCIaGR1wC9KXfAymD5lvkYeXPIgfFrttrgI8,5271
12
+ tabs/tab_widget.py,sha256=v77TmBC7Sg72lsDuWI-rt8wtqS4qI__wq3Kw_aQhYoo,374
13
+ tabs/aircraft_configs/__init__.py,sha256=oBKlQdrwyfmNHpsW7NV3M_Aa0OoL2dppPdW3WmbblV8,82
14
+ tabs/aircraft_configs/aircraft_configs.py,sha256=Gpa61WAar-AmmdQ0G0kWRsrkBSLW_DxEQXItpeyJsJk,11435
15
+ tabs/analysis/__init__.py,sha256=xdLapn5IQSKBHCTxCcmWDwCZJRYpCAXbteKLAPdoggo,86
16
+ tabs/analysis/analysis.py,sha256=l3nMokRXaH4tbdh6sf-n-SXMpDxLVdj_MZxdhdWTwxk,3385
17
+ tabs/analysis/widgets/__init__.py,sha256=HCicz3JEr_-sGGymSGMecpOzNj6qawxV158mf7nIH10,840
18
+ tabs/analysis/widgets/aeroacoustics_widget.py,sha256=qhDdq-l9yzG9JQzQyp4Uge-OoIAI-149mPcmhIaE5LY,7486
19
+ tabs/analysis/widgets/aerodynamics_widget.py,sha256=_weKnyAoGmxfna8FKAIcUSTU-0NXwhZDSBBXjnyiT9U,4633
20
+ tabs/analysis/widgets/analysis_data_widget.py,sha256=7sxISKJ8IY9hT7LlZvutQyCc1QE7vNeGBKTb20KHND0,974
21
+ tabs/analysis/widgets/atmosphere_widget.py,sha256=J1cWwJuP0FB_8Pp72tyOmxtiV87BGj_q6eLmS_7uzsw,1925
22
+ tabs/analysis/widgets/costs_widget.py,sha256=vv8W8seeh1R19hl3T1AFH_hHxztVvs64C3RG0MqG1Yg,1326
23
+ tabs/analysis/widgets/energy_widget.py,sha256=c-Uqd4iJUV0k29h446XTx6TPBRC_HCez8vIbCBS5Lps,1183
24
+ tabs/analysis/widgets/geometry_widget.py,sha256=RKy2KKuhY1w1LjBt5XbRErU-ribsNJl7_YWrs62N0Vo,2077
25
+ tabs/analysis/widgets/planets_widget.py,sha256=tuOL9UT5hLldLvYhUeLxHwd1BebOKEaVxFcHCvSwGHE,1292
26
+ tabs/analysis/widgets/propulsion_widget.py,sha256=q7lD41jsyHaL6yyVHidJ-ab2z4EEIhQWpqx9pRNZtis,2084
27
+ tabs/analysis/widgets/stability_widget.py,sha256=kYyDbolX5edVu2L2JznzJQDLRv49XUxpBiOLDynzpgU,1344
28
+ tabs/analysis/widgets/weights_widget.py,sha256=2XQI0C39YKNA60Y03np7rMqD9-dkpQUlK7v11Y9SwJ8,3876
29
+ tabs/geometry/__init__.py,sha256=qHYbl7sROEeW2FPL2O7ZTeFQkOEER4OrntKo5aFhAyg,142
30
+ tabs/geometry/aircraft_configs.py,sha256=ixCIUk0iDrE_8Vli90A7NSZuv6fqzOutD9IaJtX7FO8,7984
31
+ tabs/geometry/geometry.py,sha256=EF2ExGNQ9-88s6pR-ud8ogR9EgZAfMCZLfrZ813-RCg,20917
32
+ tabs/geometry/frames/__init__.py,sha256=bwC1CTXGKzTPW3uzocH8e5UneMpo-d0AvWY9fQwPPTU,772
33
+ tabs/geometry/frames/default_frame.py,sha256=g-n_yQ3yIqPM-Eb_KZoh-DQAKdWHIuBua9GR8M-CLLw,888
34
+ tabs/geometry/frames/geometry_frame.py,sha256=utbBhi6uv9RPUWvYx9l82m2y4wutna-H1DTlbYdny5o,3312
35
+ tabs/geometry/frames/vehicle_frame.py,sha256=NwW1QOjwR8jRXLMUz21whZF1X_bAEzU3uJkhe9Nv1HY,8986
36
+ tabs/geometry/frames/booms/__init__.py,sha256=5MgeX-ouD4df6vGx233uUEryDha0soqhyPUuB-ie95I,370
37
+ tabs/geometry/frames/booms/boom_frame.py,sha256=mILAk_3in6sxjzX5hnzhK80_LeArVGFK9q_x4Dh3iUY,9770
38
+ tabs/geometry/frames/cargo_bays/__init__.py,sha256=5ze8QpuqbqH5gTW-7uuv7uXd6JXbCLnbWQd83TLBgy4,389
39
+ tabs/geometry/frames/cargo_bays/cargo_bay_frame.py,sha256=791lgk3-U1-W44A0-ztgNG7ALP6Htej2TFiJbFWK9_g,6499
40
+ tabs/geometry/frames/energy_network/__init__.py,sha256=3TmsUPwlWv3oUls6speXagWP1hBDpgN1b17--8tji3E,92
41
+ tabs/geometry/frames/energy_network/turbofan_network/__init__.py,sha256=5iOJ0jDYA_eRbAX1MydrMYPgGsqK8so3YSQmDfnBP1s,121
42
+ tabs/geometry/frames/energy_network/turbofan_network/frames/__init__.py,sha256=i1DSenH1_fjDnp4aFwiFG1_B4_z3QzmVCW6dwt3yzu0,85
43
+ tabs/geometry/frames/energy_network/turbofan_network/widgets/__init__.py,sha256=tLSL-G4BlIwuunTTVa6IjjEFc9xYVVmXKA7_vVkcl-w,86
44
+ tabs/geometry/frames/fuselages/__init__.py,sha256=gMmPmqwvyfZrSPj0bpSZHz1nSuJQEkShUkqriMKYW6c,386
45
+ tabs/geometry/frames/fuselages/fuselage_frame.py,sha256=2YyqdIxKJAFdvkc1jdYcSprll_RFn_PndWrpIpHYHJE,12589
46
+ tabs/geometry/frames/landing_gears/__init__.py,sha256=ICVT3EM1vJlxAA3ukktPhyVZL9eHtFlBC0_0P4OOwoM,401
47
+ tabs/geometry/frames/landing_gears/landing_gear_frame.py,sha256=IKy_vVA50WdhKyeZe58CptktdkzgIAbaY87KFScwPNY,8359
48
+ tabs/geometry/frames/nacelles/__init__.py,sha256=PqHMrXtnQ3LekDYQvbjIQDngQFqMjwQmTRty6xaTwUU,55
49
+ tabs/geometry/frames/powertrain/__init__.py,sha256=QA3yk2awNqh24ulQMJFw8qu18oRDsdIkx7-VQnki8CI,394
50
+ tabs/geometry/frames/powertrain/powertrain_frame.py,sha256=eiTRzsJOtLuQKY4gQa_86BM6YaB-R8a0jEtBz7MsDWM,9760
51
+ tabs/geometry/frames/powertrain/converters/__init__.py,sha256=Wsa-h4fzc96GXpli1A7XzzyWcolQv4ZpY-_Mtz4phBo,411
52
+ tabs/geometry/frames/powertrain/converters/converter_frame.py,sha256=Npwg8lMvDXqqyBnraYOu-aSCyz9Ea274JPRAArwEcfs,5210
53
+ tabs/geometry/frames/powertrain/distributors/__init__.py,sha256=jtHgsiXPiJAfgLlWacB4tOpJnIztEnAF7WtxUvy4vNY,420
54
+ tabs/geometry/frames/powertrain/distributors/distributor_frame.py,sha256=1FWDuu_WAl8SxUyv0JfaCa2RA19YCGgv2BEnTw7RZEg,5487
55
+ tabs/geometry/frames/powertrain/nacelles/__init__.py,sha256=Ee2kd-spN-Ao76i0r7GkxYsBpV9rhQMLXXUPpDs_fTg,399
56
+ tabs/geometry/frames/powertrain/nacelles/nacelle_frame.py,sha256=UaU0hVt1FyPvwgqvni9fS0IMRso5wH5Eny6VmuG2P10,11933
57
+ tabs/geometry/frames/powertrain/propulsors/__init__.py,sha256=6-nSSX4ehZCjO8-jmEH5U5MqwUT5hsM3qA7CMGsXEh4,416
58
+ tabs/geometry/frames/powertrain/propulsors/propulsor_frame.py,sha256=JJ6q8KarBRVhcxpc2D7ZniMnR_KZVQ8kQrxuZF1ZFDw,5553
59
+ tabs/geometry/frames/powertrain/sources/__init__.py,sha256=Jxu5VdTfjVZI6wYenf6kF3Ry-2eWrzgUun3kN_5toX4,415
60
+ tabs/geometry/frames/powertrain/sources/energy_source_frame.py,sha256=SMqj_31Op42-53fbzJD6jgD5X54jwU4ZFAT5IrPbl1g,5297
61
+ tabs/geometry/frames/wings/__init__.py,sha256=5NFdrn2LKSfW0pu2ngS8BkOuq1tfjn9rq_ipkNu-JWY,372
62
+ tabs/geometry/frames/wings/wings_frame.py,sha256=bks7Qu-GAP4Xu6c9pVXEWXXxu0sv6CugFjOXQJHAk2w,19864
63
+ tabs/geometry/widgets/__init__.py,sha256=gexLgbzhrwJYWM0_ELTt_drxamnuTnCfLqVtdFl2W2Y,660
64
+ tabs/geometry/widgets/geometry_data_widget.py,sha256=diYQvaNqBndpR92eNYGlcvEllAVQJK_r1yDRQ8TKv8s,693
65
+ tabs/geometry/widgets/booms/__init__.py,sha256=lJ41XpqZo-d4zHmoSQndo-13SyI3ZpzZAcZJGEJ9CMI,389
66
+ tabs/geometry/widgets/booms/boom_section_widget.py,sha256=Ov9Q2-ctGLZci2IKTX6GZEaFOGs3_6faUQcciAk7tiw,4496
67
+ tabs/geometry/widgets/cargo_bays/__init__.py,sha256=Bwqi22PMoLKhi3R4rocOew-DB3nkK7XbjguuIDt9IG4,58
68
+ tabs/geometry/widgets/fuselages/__init__.py,sha256=XyLj2iwdLkcOgsyXDl7pqjGJmq9rVx6XaBzxRiG-8iA,574
69
+ tabs/geometry/widgets/fuselages/cabin_class_widget.py,sha256=1qVGj5y4Vnja1St3kTVgzmJ4YpJ5DtHy_-jJJmwVHG0,7791
70
+ tabs/geometry/widgets/fuselages/cabin_widget.py,sha256=KMNAfb2KuC8DnHv7YMJNqqXqhb1iXmsk-VeBcPcgaaw,8598
71
+ tabs/geometry/widgets/fuselages/fuselage_section_widget.py,sha256=DLLzpPKpoZGvo4-Wb_en-kVD1OJoQVjChNNB-yYjbyI,8909
72
+ tabs/geometry/widgets/landing_gears/__init__.py,sha256=QfYtO-G8Cobzaf5UD-qepKF0WpdCE4BVTAGWOt81ZJE,319
73
+ tabs/geometry/widgets/nacelles/__init__.py,sha256=yoAv0O-OEqYyiWD71Q_hfJyqlft2kVDoGqZI5zuy1bQ,56
74
+ tabs/geometry/widgets/powertrain/__init__.py,sha256=er-JMw7sEgEd5uW6n1m0wDXlqSgHNbZJDq-UP4sklwM,548
75
+ tabs/geometry/widgets/powertrain/powertrain_connector_widget.py,sha256=Pe86EO_v8NqdVxnkD9yvwaqOkJknJizT2NPgR5J0vWk,5043
76
+ tabs/geometry/widgets/powertrain/powertrain_widget.py,sha256=L0dwjFQ_dePxSSZL0fF6b3fFqjLiq-j-Aq6stCMH5us,8297
77
+ tabs/geometry/widgets/powertrain/converters/__init__.py,sha256=NMhncVJhJ2Y9XoWq7LNav6FDbNj8BTgbgrslEhkPb1s,445
78
+ tabs/geometry/widgets/powertrain/converters/turboelectric_generator_widget.py,sha256=Sg86UgDlIlfwqGgci6uvJG1zluoZDMWxCP7ShU6NdUQ,2711
79
+ tabs/geometry/widgets/powertrain/distributors/__init__.py,sha256=wMl0vwRR-9odx1O2eKq33TPjNy-SK-KixdH48O1xHE4,421
80
+ tabs/geometry/widgets/powertrain/distributors/fuel_line_widget.py,sha256=qGVsuhXy1SbCF7nhDowCoIUbXJbrtMYi_a-UTbaH7PI,2991
81
+ tabs/geometry/widgets/powertrain/modulators/__init__.py,sha256=MQSpMObMKym4AbTN7WwnZEmL8AVubHi9vBPSirnxLf8,406
82
+ tabs/geometry/widgets/powertrain/modulators/esc_widget.py,sha256=y7tIL8ftqE0WiqeTFZXAGJbZqwIKSoIw7FDtB_OHB9Y,2081
83
+ tabs/geometry/widgets/powertrain/nacelles/__init__.py,sha256=RK6luhO4m-XAZ9LVYlK-rl05NoSobvRawzwg5hPb0JM,408
84
+ tabs/geometry/widgets/powertrain/nacelles/nacelle_section_widget.py,sha256=EMK6GwP67bCW5cgihU4PjmxR_u1fI3eoy_ht-t65fBA,4317
85
+ tabs/geometry/widgets/powertrain/propulsors/__init__.py,sha256=F3HSOW8yqDCKKbwjMpk4Ym3AoJe2qZ1qkHXkBnxbdP8,418
86
+ tabs/geometry/widgets/powertrain/propulsors/turbofan_widget.py,sha256=fHqI0TfkrjIeNU01MnpH8CSN1xvYmoQRsknBo_u_taE,21418
87
+ tabs/geometry/widgets/powertrain/sources/__init__.py,sha256=AlQkpgVk7ECc-1A6UjKr7FLCh1FSN9p06DxZhzPTloQ,526
88
+ tabs/geometry/widgets/powertrain/sources/fuel_tank_widget.py,sha256=3qK2k2p-abGdQZLCrmsn8JBX18octY21IlqkYPH55jU,3988
89
+ tabs/geometry/widgets/powertrain/sources/source_selector_widget.py,sha256=TVVne9v47iPknGRqly99L0UjstMrIzvvwyj2lUcUAr0,1327
90
+ tabs/geometry/widgets/wings/__init__.py,sha256=7aHicnOMddYzysbRHrhm5A8j1N-Nu1_5bk3gTopskWE,463
91
+ tabs/geometry/widgets/wings/wing_cs_widget.py,sha256=Rm4vxQMj_7uiOlCkRRg_L0UHRG8Ju2eKf7guwHmENmc,7565
92
+ tabs/geometry/widgets/wings/wing_section_widget.py,sha256=uJIZ4Frlxa6E_0oL0gA9Kft_5uAn9mZKBPdXr9ehy_M,12930
93
+ tabs/home/__init__.py,sha256=b_aXBenoLDFMO8Y0pZHSVsPrhXjaBXYXfkM5-b6abT4,56
94
+ tabs/home/home.py,sha256=5dHeIIAG1jSnxTxcvZQltu9XHCwzzlDRhlAQSQmt3tM,22621
95
+ tabs/mission/__init__.py,sha256=CarCUPm2-crFirdxTE4CqKA6vYmKzavrI2Vaoj0MWnk,84
96
+ tabs/mission/mission.py,sha256=tGPDA9VsXT2N6UTcnbvqOAu3hZZdZKbbhXOgvE3k7_M,45988
97
+ tabs/mission/widgets/__init__.py,sha256=hkAK93PzCjK6dChINaqdlH85sueKvuz2KgssUE3xCws,236
98
+ tabs/mission/widgets/flight_controls_widget.py,sha256=Ze1L4jPps93k_dV7ygFx0cN6EUHEXPXFx3RdgPocZ4I,7964
99
+ tabs/mission/widgets/mission_analysis_widget.py,sha256=SMnOYEJpHIgxXaHSKJJRAKf_FaoFa2peVybsOtZcMvU,6156
100
+ tabs/mission/widgets/mission_segment_helper.py,sha256=znyfk4WDes4iWy9Ts5OTZys2fU4QEcOhAYCKo-jdR20,18321
101
+ tabs/mission/widgets/mission_segment_widget.py,sha256=8OyvHXRpqZdat_icLkuecHx9O7gBvjhfrubDwwpFluA,14521
102
+ tabs/solve/__init__.py,sha256=osgG5vVqnJc-Y5SAmjimfdaKXcTqpWMmI4qA5lkfoPQ,79
103
+ tabs/solve/solve.py,sha256=ulnCEzYzQbgYgYiuRk-pYUpvPpUomMT-c0qxbdvfYQo,63032
104
+ tabs/solve/plots/__init__.py,sha256=0RCnzTTdhgwvDiVEBk4zFyXUqnf5sTEdgGNFwwyK1gw,411
105
+ tabs/solve/plots/create_plot_widgets.py,sha256=dAYplhfSqmTRtR2GNlQg-g_BAT4l4e0WkRkFyjEuSok,1251
106
+ tabs/solve/plots/aeroacoustics/__init__.py,sha256=D4SFHYfVOwen-lRIqPCOOEWpmncFwK7othT4WYh_lXU,335
107
+ tabs/solve/plots/aeroacoustics/plot_2D_noise_contour.py,sha256=OSFIXWAldYowZA9jAz2ck8PvwQoeeMB71NbUaq8J8dI,6910
108
+ tabs/solve/plots/aeroacoustics/plot_3D_noise_contour.py,sha256=usoG6-Fo2tsWTDlRs4zAErGFLzDU-2UhugmPhlsW6ZU,9394
109
+ tabs/solve/plots/aeroacoustics/plot_noise_certification_contour.py,sha256=CaYuB9ATBIsgHdW465XtcvMpiV_LaJLUuG-X2JqG5Og,5198
110
+ tabs/solve/plots/aeroacoustics/plot_noise_level.py,sha256=dn6Y4ilSX1CrV73iLRuw8uPNl-UoysZVyAKOMAp740I,4035
111
+ tabs/solve/plots/aerodynamics/__init__.py,sha256=cQT9DHD-FxrtzOf_rndCsLcCBrXsv8H8kPpmWmyVvvE,694
112
+ tabs/solve/plots/aerodynamics/plot_aerodynamic_coefficients.py,sha256=RgRy02axI5b1wxQhAAziN9pHys9snPlSems8yhqohHE,5762
113
+ tabs/solve/plots/aerodynamics/plot_aerodynamic_forces.py,sha256=U7Y39ReTdFBRAUdIVcoLmlHJj4UPDVKr8ElVroGVLJY,5563
114
+ tabs/solve/plots/aerodynamics/plot_aircraft_aerodynamics.py,sha256=8i-k9qYESSh5gqe5AZvXXdc5sto5nNzh0rxPt3BhyYg,4424
115
+ tabs/solve/plots/aerodynamics/plot_drag_components.py,sha256=yuWSAKq-i36IvCNghi6ck883sIVEWYtylBM9YyzDEuw,6513
116
+ tabs/solve/plots/aerodynamics/plot_lift_distribution.py,sha256=WkMXTngsew5DDjIMXMLpFP3eWQ9lgYBWaFvT0qSEpmQ,3697
117
+ tabs/solve/plots/aerodynamics/plot_rotor_conditions.py,sha256=h9jHidkWJAkCrF6y0wwka10NItSSGoQpw9cEfXFJK6s,9911
118
+ tabs/solve/plots/aerodynamics/plot_rotor_disc_performance.py,sha256=ejGd9htmt8uqhNNroNewsaDv0B8xUV-CjIkVBhK4JZ0,4443
119
+ tabs/solve/plots/aerodynamics/plot_rotor_performance.py,sha256=_0_UKOgqrrUDDzECqTMofKtISNXpS1AZWsOXRKaYIL4,4688
120
+ tabs/solve/plots/common/__init__.py,sha256=05wn_a-ndmzqCgBSbmBBwrnvJeZeGARmh4Txcv4NdIw,136
121
+ tabs/solve/plots/common/plot_style.py,sha256=i_3t8K5MsQaEYDIYx0m3V_agJcLkoHutx-Vm7wyvO6c,2519
122
+ tabs/solve/plots/common/set_axes.py,sha256=mfRSmEvF3lHfLwjbTnfAbWUoP6VwdSzdmuP63yzcCII,1621
123
+ tabs/solve/plots/emissions/__init__.py,sha256=xu8OEw3mdSw1zSriyG1CZQTOfuQ7NNFcXE-_XEwYG8I,101
124
+ tabs/solve/plots/emissions/plot_emissions.py,sha256=gIvR9UZNMgUpGfc9OOTV3RyxOSW3nUZTDwV116Qog5o,7320
125
+ tabs/solve/plots/energy/__init__.py,sha256=yDnteOkCKm9epGI-sjSZ2LQJI7w3cclRcQbEU_U-doc,882
126
+ tabs/solve/plots/energy/plot_altitude_sfc_weight.py,sha256=xUX88M3perz-nRce3g_tfaEWdVwKKba8XgsqwOvOKz0,4898
127
+ tabs/solve/plots/energy/plot_battery_cell_conditions.py,sha256=xg5q2vNz2FLJ0zVCWj6HLbEQsZap-lh8Wa7ysRGZi6k,6780
128
+ tabs/solve/plots/energy/plot_battery_degradation.py,sha256=vitX6ZeIqW3ZzEag5MQk-aIRg6M8Pvvvj78GL_B3lS4,6872
129
+ tabs/solve/plots/energy/plot_battery_module_C_rates.py,sha256=cVXWhe67UIlUqXoVZKpzZYJB-0YMERDRWrtnGb2hkKI,5618
130
+ tabs/solve/plots/energy/plot_battery_module_conditions.py,sha256=aPZ1SJp1j6yE0qcbJG52gAyMu3RqJl_MMdKAecdykfM,6786
131
+ tabs/solve/plots/energy/plot_battery_pack_conditions.py,sha256=nI4LbceSksuEX4BtXqbXkfBsd4XDoYEevwAMtKnvVvI,6875
132
+ tabs/solve/plots/energy/plot_battery_ragone_diagram.py,sha256=Dc3McPYzpb2Wi9JIUXIxhnADSySj73c0Ct7jD-DSnnI,3432
133
+ tabs/solve/plots/energy/plot_battery_temperature.py,sha256=PuDbQrXvDM0mpQRm3dlYsLIAxDXux3ywBN2b0K84a2c,5663
134
+ tabs/solve/plots/energy/plot_electric_propulsor_efficiencies.py,sha256=Asl70z_LY1dtW5R8I1cRSYa32NI99mfgGMwxIFzGt4c,5491
135
+ tabs/solve/plots/energy/plot_propulsor_throttles.py,sha256=TFNeW80rYsdHVBMCfajaD8l4dDnZ29tN8veGMPblFwo,4370
136
+ tabs/solve/plots/mission/__init__.py,sha256=JPu6Ov-r65q8CECGo4keUtEH-qH-Lj-XLxUpYyjWOp0,248
137
+ tabs/solve/plots/mission/plot_aircraft_velocities.py,sha256=HJ2TbONhg7yn5xsjY6STi9igv0oAdimz4FHvzLGRno4,6372
138
+ tabs/solve/plots/mission/plot_flight_conditions.py,sha256=K9JA2CZpyE3IK2Rmbivr106Q8qsrxA10OWowF4YUD54,10594
139
+ tabs/solve/plots/mission/plot_flight_trajectory.py,sha256=NOm-UVk_cA-XuPHzTCIA5A-R09_tPtFxysjokH-n2OI,6110
140
+ tabs/solve/plots/stability/__init__.py,sha256=lf6lH_M5bkJkr0c2Q3JIC-pSCXUaK4jhB-KAtmyR0fc,267
141
+ tabs/solve/plots/stability/plot_flight_forces_and_moments.py,sha256=D-8vHkVjbmN33Pi8aMt2GXHRqTVbmTAOHW1Wak2e4ws,6214
142
+ tabs/solve/plots/stability/plot_lateral_stability.py,sha256=4NJjbmMFYD6ZkiHIR_LlhxMpP1nhltNMW3dOg9c_9UE,5811
143
+ tabs/solve/plots/stability/plot_longitudinal_stability.py,sha256=XWQGHg0qE8eGlzoy_COE2-4akVRcqzAO5CHDgewc10A,6792
144
+ tabs/solve/plots/thermal_management/__init__.py,sha256=KQy5MiJhWicfjbv50iGpUdTaj1b9PcmI_Kmj1VelzyY,523
145
+ tabs/solve/plots/thermal_management/plot_air_cooled_conditions.py,sha256=XkhePsRwEDo3xabv7RLQ3fA5HTWRAJUhi9HN0mJK708,6278
146
+ tabs/solve/plots/thermal_management/plot_cross_flow_heat_exchanger_conditions.py,sha256=5NWMcGTuD_R9TQfwMd4Ww-Ir0Q7GizEFg7VdSuO5HCQ,8614
147
+ tabs/solve/plots/thermal_management/plot_reservoir_conditions.py,sha256=scdie_2GyFMFpsUmuN39iGskcu8oROjgJ3aTZ9v-bno,5672
148
+ tabs/solve/plots/thermal_management/plot_thermal_management_performance.py,sha256=4bnfxhcyLjP9ULoJRtnsjnMUy8Y8ELcOjX0ODipEDZo,4574
149
+ tabs/solve/plots/thermal_management/plot_wavy_channel_conditions.py,sha256=9IWGCWr2xBi95d-VIBiLlwt5Mf_ir8_P62y2EBgokls,6951
150
+ tabs/solve/plots/weights/__init__.py,sha256=POJFeIu3OevvH_8TgZHm1ZjyDfBKOQN9ODZqmGuGX24,161
151
+ tabs/solve/plots/weights/plot_load_diagram.py,sha256=VVvQVlj6vrplu_uBbauaX5cwloEH5Kq12k-dBj2tiv0,6549
152
+ tabs/solve/plots/weights/plot_weight_breakdown.py,sha256=LNsbO-plSGOqG4IN6FovowrIY0gPevxA1p4p_9_VxRc,5846
153
+ tabs/visualize_geometry/__init__.py,sha256=qr9gYJUxtpJjGyy7uriTPmnsiPfn1xERyjoa-ayHuGI,136
154
+ tabs/visualize_geometry/core_3d_viewer.py,sha256=h4jQg0SikUAVIOSdkZCAmUK8DU-wrPvlfKi3t_POn60,11454
155
+ tabs/visualize_geometry/geometry_helper_functions.py,sha256=7s1n8wjsfdlOCLlsrcTEHs6BIpEpMYjQYvgGJO0uq20,247
156
+ tabs/visualize_geometry/visualize_geometry.py,sha256=qZlflqkhxVT35L1wCix71hePYvyG4XhSwxX0VmCvR10,33197
157
+ tabs/visualize_geometry/features/__init__.py,sha256=tviPiQwSpfNH0ymomPIpJbkj0n1XWKmF_-F2XEyC5qA,260
158
+ tabs/visualize_geometry/features/axes_gizmo.py,sha256=ru0TrzsmGiSzRITFeCUPFTA6zOclKTv9HzCFYUir4gc,5079
159
+ tabs/visualize_geometry/features/background.py,sha256=Zb4rriL4EmvOQBdLlttc2ICUUdFAciqiSdbOR3ZgYAo,5490
160
+ tabs/visualize_geometry/features/blueprint.py,sha256=fiaWhKid9ByiRa-Z_NwlkhdbjQuuyvqiwjbgKh7CqJ4,20911
161
+ tabs/visualize_geometry/features/camera.py,sha256=HzoDxI36CKQZUiySoK2NFYZocrbDHFAVT59D-mPmJxQ,11705
162
+ tabs/visualize_geometry/features/drag_aircraft.py,sha256=azffZ3MXaC2ApK0V-92fpb57uKq5uP_pmS8IyvaWanQ,6731
163
+ tabs/visualize_geometry/features/grid.py,sha256=hlhGjrSznZ_CrdeOYG9Alqu-Ea0737KsEilmRsxWxRc,5381
164
+ tabs/visualize_geometry/features/measurement.py,sha256=lef7T8F_ojkDgauWR9MKNBKB2QrQR_hpzBqiVvknvko,11510
165
+ tabs/visualize_geometry/features/screenshot.py,sha256=knFebGeod61-3m8Bmgu8LJQ7BbH1G7n9iM-7oOr0PF8,2987
166
+ rcaide_gui-1.0.0.dist-info/METADATA,sha256=dt4NiGIsjH5V3wZ2GsC1GrKFciFyeQCddkG6ZLeMKvM,3749
167
+ rcaide_gui-1.0.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
168
+ rcaide_gui-1.0.0.dist-info/entry_points.txt,sha256=i_c7Au3-P_Xdy4vn_Nfam8Ql6Zu-VfQn6Op3uP2hLdg,41
169
+ rcaide_gui-1.0.0.dist-info/top_level.txt,sha256=mBZ6P2dzTSIvJSYuKOfjJZuuZloUYFxhqBF08iazQTA,45
170
+ rcaide_gui-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ rcaide-gui = main:main
@@ -0,0 +1,5 @@
1
+ common_widgets
2
+ main
3
+ rcaide_io
4
+ tabs
5
+ utilities