"""This example illustrates the usage of creator, evaluator and generator. All the steps of airfoil creation & evaluation are detailed here; furthermore, the generator.py module contains certain presets (default airfoils). Create an airfoil; Evaluate an airfoil; Generate a population of airfoils & optimize. """ import resources.materials as mt import creator import evaluator import generator # from generator import import time start_time = time.time() # Airfoil dimensions (in) NACA_NUM = 2412 # Thicknesses SPAR_THICKNESS = 0.4 SKIN_THICKNESS = 0.1 # Component masses (lbs) AIRFOIL_MASS = 10 SPAR_MASS = 10 STRINGER_MASS = 5 # Area (sqin) SPAR_CAP_AREA = 0.3 STRINGER_AREA = 0.1 # Amount of stringers TOP_STRINGERS = 6 BOTTOM_STRINGERS = 4 NOSE_TOP_STRINGERS = 3 NOSE_BOTTOM_STRINGERS = 5 SAVE_PATH = '/home/blendux/Projects/Aircraft_Studio/save' eval = evaluator.Evaluator() # Create aircraft instance ac = creator.base.Aircraft(eval, "ac") # Create airfoil instance af = creator.wing.Airfoil(ac, 'af') af.add_naca(NACA_NUM) # af.info_print(2) af.info_save() # Create spar instances af.spar1 = creator.wing.Spar(af, 'spar1') af.spar2 = creator.wing.Spar(af, 'spar2', 0.57) # af.spar1.info_print(2) # af.spar2.info_print(2) af.spar1.info_save() af.spar2.info_save() eval.update() # eval.info_print(2) # # Create stringer instance # af.stringer = wing.Stringer() # # Compute the stringer coordinates from their quantity in each zone # af.stringer.add_coord(af, [af.spar1, af.spar2], NOSE_TOP_STRINGERS, TOP_STRINGERS, # NOSE_BOTTOM_STRINGERS, BOTTOM_STRINGERS) # af.stringer.add_area(STRINGER_AREA) # af.stringer.add_webs(SKIN_THICKNESS) # af.stringer.info_print(2) # af.stringer.info_save(SAVE_PATH, 'foo_name') # Plot components with matplotlib # creator.wing.plot_geom(af, [af.spar1, af.spar2], None) # Evaluator object contains airfoil analysis results. # The analysis is performed in the evaluator.py module. # eval.analysis(1, 1) # eval.info_print(2) # eval.info_save(SAVE_PATH, 'foo_name') # evaluator.plot_geom(eval) # evaluator.plot_lift(eval) # Final execution time final_time = time.time() - start_time print(f"--- {round(final_time, 4)}s seconds ---")