def full_setup(): # Vehicle data vehicle = vehicle_setup() configs = configs_setup(vehicle) # Vehicle analyses configs_analyses = analyses_setup(configs) # Mission analyses mission = mission_setup(configs_analyses) missions_analyses = missions_setup(mission) analyses = SUAVE.Analyses.Analysis.Container() analyses.configs = configs_analyses analyses.missions = missions_analyses return configs, analyses
def main(): # initialize the vehicle vehicle = vehicle_setup() # initalize the aero model aerodynamics = SUAVE.Analyses.Aerodynamics.Supersonic_Zero() aerodynamics.geometry = vehicle aerodynamics.settings.drag_coefficient_increment = 0.0000 aerodynamics.settings.span_efficiency = 0.95 aerodynamics.settings.wave_drag_type = 'Sears-Haack' aerodynamics.settings.volume_wave_drag_scaling = 2.3 # calibrated to Concorde results aerodynamics.initialize() #no of test points test_num = 3 #specify the angle of attack angle_of_attacks = np.linspace(-.0174, .0174 * 3, test_num)[:, None] #* Units.deg # Cruise conditions (except Mach number) state = SUAVE.Analyses.Mission.Segments.Conditions.State() state.conditions = SUAVE.Analyses.Mission.Segments.Conditions.Aerodynamics( ) state.expand_rows(test_num) # -------------------------------------------------------------------- # Initialize variables needed for CL and CD calculations # Use a pre-run random order for values # -------------------------------------------------------------------- Mc = np.array([[1.03], [1.5], [2.0]]) rho = np.array([[0.16], [0.16], [0.16]]) mu = np.array([[1.42e-05], [1.42e-05], [1.42e-05]]) T = np.array([[217.], [217.], [217.]]) pressure = np.array([[10000.], [10000.], [10000.]]) re = np.array([[6.0e6], [6.0e6], [6.0e6]]) air = Air() a = air.compute_speed_of_sound(T, pressure) re = rho * a * Mc / mu state.conditions.freestream.mach_number = Mc state.conditions.freestream.density = rho state.conditions.freestream.dynamic_viscosity = mu state.conditions.freestream.temperature = T state.conditions.freestream.pressure = pressure state.conditions.freestream.reynolds_number = re state.conditions.aerodynamics.angle_of_attack = angle_of_attacks # -------------------------------------------------------------------- # Surrogate # -------------------------------------------------------------------- #call the aero model results = aerodynamics.evaluate(state) #build a polar for the markup aero polar = Data() CL = results.lift.total CD = results.drag.total polar.lift = CL polar.drag = CD # load older results #save_results(polar) old_polar = load_results() # check the results check_results(polar, old_polar) return