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.
- common_widgets/__init__.py +6 -0
- common_widgets/animated_toggle.py +141 -0
- common_widgets/color.py +17 -0
- common_widgets/data_entry_widget.py +337 -0
- common_widgets/image_widget.py +21 -0
- common_widgets/unit_picker_widget.py +48 -0
- main.py +168 -0
- rcaide_gui-1.0.0.dist-info/METADATA +96 -0
- rcaide_gui-1.0.0.dist-info/RECORD +170 -0
- rcaide_gui-1.0.0.dist-info/WHEEL +5 -0
- rcaide_gui-1.0.0.dist-info/entry_points.txt +2 -0
- rcaide_gui-1.0.0.dist-info/top_level.txt +5 -0
- rcaide_io.py +818 -0
- tabs/__init__.py +10 -0
- tabs/aircraft_configs/__init__.py +3 -0
- tabs/aircraft_configs/aircraft_configs.py +301 -0
- tabs/analysis/__init__.py +4 -0
- tabs/analysis/analysis.py +92 -0
- tabs/analysis/widgets/__init__.py +13 -0
- tabs/analysis/widgets/aeroacoustics_widget.py +158 -0
- tabs/analysis/widgets/aerodynamics_widget.py +108 -0
- tabs/analysis/widgets/analysis_data_widget.py +29 -0
- tabs/analysis/widgets/atmosphere_widget.py +49 -0
- tabs/analysis/widgets/costs_widget.py +35 -0
- tabs/analysis/widgets/energy_widget.py +32 -0
- tabs/analysis/widgets/geometry_widget.py +55 -0
- tabs/analysis/widgets/planets_widget.py +34 -0
- tabs/analysis/widgets/propulsion_widget.py +53 -0
- tabs/analysis/widgets/stability_widget.py +34 -0
- tabs/analysis/widgets/weights_widget.py +94 -0
- tabs/geometry/__init__.py +6 -0
- tabs/geometry/aircraft_configs.py +232 -0
- tabs/geometry/frames/__init__.py +15 -0
- tabs/geometry/frames/booms/__init__.py +5 -0
- tabs/geometry/frames/booms/boom_frame.py +238 -0
- tabs/geometry/frames/cargo_bays/__init__.py +5 -0
- tabs/geometry/frames/cargo_bays/cargo_bay_frame.py +159 -0
- tabs/geometry/frames/default_frame.py +23 -0
- tabs/geometry/frames/energy_network/__init__.py +2 -0
- tabs/geometry/frames/energy_network/turbofan_network/__init__.py +3 -0
- tabs/geometry/frames/energy_network/turbofan_network/frames/__init__.py +1 -0
- tabs/geometry/frames/energy_network/turbofan_network/widgets/__init__.py +1 -0
- tabs/geometry/frames/fuselages/__init__.py +5 -0
- tabs/geometry/frames/fuselages/fuselage_frame.py +294 -0
- tabs/geometry/frames/geometry_frame.py +91 -0
- tabs/geometry/frames/landing_gears/__init__.py +5 -0
- tabs/geometry/frames/landing_gears/landing_gear_frame.py +189 -0
- tabs/geometry/frames/nacelles/__init__.py +1 -0
- tabs/geometry/frames/powertrain/__init__.py +6 -0
- tabs/geometry/frames/powertrain/converters/__init__.py +5 -0
- tabs/geometry/frames/powertrain/converters/converter_frame.py +137 -0
- tabs/geometry/frames/powertrain/distributors/__init__.py +5 -0
- tabs/geometry/frames/powertrain/distributors/distributor_frame.py +143 -0
- tabs/geometry/frames/powertrain/nacelles/__init__.py +5 -0
- tabs/geometry/frames/powertrain/nacelles/nacelle_frame.py +283 -0
- tabs/geometry/frames/powertrain/powertrain_frame.py +259 -0
- tabs/geometry/frames/powertrain/propulsors/__init__.py +5 -0
- tabs/geometry/frames/powertrain/propulsors/propulsor_frame.py +146 -0
- tabs/geometry/frames/powertrain/sources/__init__.py +6 -0
- tabs/geometry/frames/powertrain/sources/energy_source_frame.py +147 -0
- tabs/geometry/frames/vehicle_frame.py +171 -0
- tabs/geometry/frames/wings/__init__.py +5 -0
- tabs/geometry/frames/wings/wings_frame.py +457 -0
- tabs/geometry/geometry.py +513 -0
- tabs/geometry/widgets/__init__.py +12 -0
- tabs/geometry/widgets/booms/__init__.py +6 -0
- tabs/geometry/widgets/booms/boom_section_widget.py +109 -0
- tabs/geometry/widgets/cargo_bays/__init__.py +1 -0
- tabs/geometry/widgets/fuselages/__init__.py +8 -0
- tabs/geometry/widgets/fuselages/cabin_class_widget.py +188 -0
- tabs/geometry/widgets/fuselages/cabin_widget.py +217 -0
- tabs/geometry/widgets/fuselages/fuselage_section_widget.py +190 -0
- tabs/geometry/widgets/geometry_data_widget.py +25 -0
- tabs/geometry/widgets/landing_gears/__init__.py +6 -0
- tabs/geometry/widgets/nacelles/__init__.py +1 -0
- tabs/geometry/widgets/powertrain/__init__.py +9 -0
- tabs/geometry/widgets/powertrain/converters/__init__.py +5 -0
- tabs/geometry/widgets/powertrain/converters/turboelectric_generator_widget.py +74 -0
- tabs/geometry/widgets/powertrain/distributors/__init__.py +5 -0
- tabs/geometry/widgets/powertrain/distributors/fuel_line_widget.py +81 -0
- tabs/geometry/widgets/powertrain/modulators/__init__.py +5 -0
- tabs/geometry/widgets/powertrain/modulators/esc_widget.py +58 -0
- tabs/geometry/widgets/powertrain/nacelles/__init__.py +5 -0
- tabs/geometry/widgets/powertrain/nacelles/nacelle_section_widget.py +115 -0
- tabs/geometry/widgets/powertrain/powertrain_connector_widget.py +136 -0
- tabs/geometry/widgets/powertrain/powertrain_widget.py +206 -0
- tabs/geometry/widgets/powertrain/propulsors/__init__.py +5 -0
- tabs/geometry/widgets/powertrain/propulsors/turbofan_widget.py +462 -0
- tabs/geometry/widgets/powertrain/sources/__init__.py +6 -0
- tabs/geometry/widgets/powertrain/sources/fuel_tank_widget.py +103 -0
- tabs/geometry/widgets/powertrain/sources/source_selector_widget.py +35 -0
- tabs/geometry/widgets/wings/__init__.py +7 -0
- tabs/geometry/widgets/wings/wing_cs_widget.py +198 -0
- tabs/geometry/widgets/wings/wing_section_widget.py +298 -0
- tabs/home/__init__.py +3 -0
- tabs/home/home.py +585 -0
- tabs/mission/__init__.py +4 -0
- tabs/mission/mission.py +1124 -0
- tabs/mission/widgets/__init__.py +3 -0
- tabs/mission/widgets/flight_controls_widget.py +186 -0
- tabs/mission/widgets/mission_analysis_widget.py +166 -0
- tabs/mission/widgets/mission_segment_helper.py +358 -0
- tabs/mission/widgets/mission_segment_widget.py +358 -0
- tabs/solve/__init__.py +4 -0
- tabs/solve/plots/__init__.py +12 -0
- tabs/solve/plots/aeroacoustics/__init__.py +6 -0
- tabs/solve/plots/aeroacoustics/plot_2D_noise_contour.py +184 -0
- tabs/solve/plots/aeroacoustics/plot_3D_noise_contour.py +219 -0
- tabs/solve/plots/aeroacoustics/plot_noise_certification_contour.py +115 -0
- tabs/solve/plots/aeroacoustics/plot_noise_level.py +118 -0
- tabs/solve/plots/aerodynamics/__init__.py +10 -0
- tabs/solve/plots/aerodynamics/plot_aerodynamic_coefficients.py +156 -0
- tabs/solve/plots/aerodynamics/plot_aerodynamic_forces.py +155 -0
- tabs/solve/plots/aerodynamics/plot_aircraft_aerodynamics.py +136 -0
- tabs/solve/plots/aerodynamics/plot_drag_components.py +157 -0
- tabs/solve/plots/aerodynamics/plot_lift_distribution.py +107 -0
- tabs/solve/plots/aerodynamics/plot_rotor_conditions.py +255 -0
- tabs/solve/plots/aerodynamics/plot_rotor_disc_performance.py +144 -0
- tabs/solve/plots/aerodynamics/plot_rotor_performance.py +124 -0
- tabs/solve/plots/common/__init__.py +4 -0
- tabs/solve/plots/common/plot_style.py +71 -0
- tabs/solve/plots/common/set_axes.py +55 -0
- tabs/solve/plots/create_plot_widgets.py +34 -0
- tabs/solve/plots/emissions/__init__.py +3 -0
- tabs/solve/plots/emissions/plot_emissions.py +167 -0
- tabs/solve/plots/energy/__init__.py +12 -0
- tabs/solve/plots/energy/plot_altitude_sfc_weight.py +134 -0
- tabs/solve/plots/energy/plot_battery_cell_conditions.py +154 -0
- tabs/solve/plots/energy/plot_battery_degradation.py +157 -0
- tabs/solve/plots/energy/plot_battery_module_C_rates.py +139 -0
- tabs/solve/plots/energy/plot_battery_module_conditions.py +157 -0
- tabs/solve/plots/energy/plot_battery_pack_conditions.py +164 -0
- tabs/solve/plots/energy/plot_battery_ragone_diagram.py +97 -0
- tabs/solve/plots/energy/plot_battery_temperature.py +136 -0
- tabs/solve/plots/energy/plot_electric_propulsor_efficiencies.py +136 -0
- tabs/solve/plots/energy/plot_propulsor_throttles.py +119 -0
- tabs/solve/plots/mission/__init__.py +5 -0
- tabs/solve/plots/mission/plot_aircraft_velocities.py +145 -0
- tabs/solve/plots/mission/plot_flight_conditions.py +236 -0
- tabs/solve/plots/mission/plot_flight_trajectory.py +172 -0
- tabs/solve/plots/stability/__init__.py +5 -0
- tabs/solve/plots/stability/plot_flight_forces_and_moments.py +163 -0
- tabs/solve/plots/stability/plot_lateral_stability.py +151 -0
- tabs/solve/plots/stability/plot_longitudinal_stability.py +173 -0
- tabs/solve/plots/thermal_management/__init__.py +7 -0
- tabs/solve/plots/thermal_management/plot_air_cooled_conditions.py +152 -0
- tabs/solve/plots/thermal_management/plot_cross_flow_heat_exchanger_conditions.py +185 -0
- tabs/solve/plots/thermal_management/plot_reservoir_conditions.py +141 -0
- tabs/solve/plots/thermal_management/plot_thermal_management_performance.py +105 -0
- tabs/solve/plots/thermal_management/plot_wavy_channel_conditions.py +161 -0
- tabs/solve/plots/weights/__init__.py +4 -0
- tabs/solve/plots/weights/plot_load_diagram.py +163 -0
- tabs/solve/plots/weights/plot_weight_breakdown.py +164 -0
- tabs/solve/solve.py +1498 -0
- tabs/style_sheet.py +114 -0
- tabs/tab_widget.py +14 -0
- tabs/visualize_geometry/__init__.py +4 -0
- tabs/visualize_geometry/core_3d_viewer.py +253 -0
- tabs/visualize_geometry/features/__init__.py +10 -0
- tabs/visualize_geometry/features/axes_gizmo.py +173 -0
- tabs/visualize_geometry/features/background.py +161 -0
- tabs/visualize_geometry/features/blueprint.py +685 -0
- tabs/visualize_geometry/features/camera.py +364 -0
- tabs/visualize_geometry/features/drag_aircraft.py +219 -0
- tabs/visualize_geometry/features/grid.py +194 -0
- tabs/visualize_geometry/features/measurement.py +367 -0
- tabs/visualize_geometry/features/screenshot.py +91 -0
- tabs/visualize_geometry/geometry_helper_functions.py +3 -0
- tabs/visualize_geometry/visualize_geometry.py +731 -0
- 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,,
|