def vehicle_setup(): # ------------------------------------------------------------------ # Initialize the Vehicle # ------------------------------------------------------------------ vehicle = SUAVE.Vehicle() vehicle.tag = 'Concorde' # ------------------------------------------------------------------ # Vehicle-level Properties # ------------------------------------------------------------------ # mass properties vehicle.mass_properties.max_takeoff = 185000. * Units.kilogram vehicle.mass_properties.operating_empty = 78700. * Units.kilogram vehicle.mass_properties.takeoff = 185000. * Units.kilogram vehicle.mass_properties.cargo = 1000. * Units.kilogram # envelope properties vehicle.envelope.ultimate_load = 3.5 vehicle.envelope.limit_load = 1.5 # basic parameters vehicle.reference_area = 358.25 * Units['meter**2'] vehicle.passengers = 100 vehicle.systems.control = "fully powered" vehicle.systems.accessories = "long range" # ------------------------------------------------------------------ # Main Wing # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'main_wing' wing.aspect_ratio = 1.83 wing.sweeps.quarter_chord = 59.5 * Units.deg wing.thickness_to_chord = 0.03 wing.taper = 0. wing.span_efficiency = .8 wing.spans.projected = 25.6 * Units.meter wing.chords.root = 33.8 * Units.meter wing.total_length = 33.8 * Units.meter wing.chords.tip = 1.1 * Units.meter wing.chords.mean_aerodynamic = 18.4 * Units.meter wing.areas.reference = 358.25 * Units['meter**2'] wing.areas.wetted = 653. - 12.*2.4*2 # 2.4 is engine area on one side wing.areas.exposed = 326.5 * Units['meter**2'] wing.areas.affected = .6 * wing.areas.reference wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [14,0,-.8] # meters wing.aerodynamic_center = [35,0,0] # meters wing.vertical = False wing.symmetric = True wing.high_lift = True wing.vortex_lift = True wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Vertical Stabilizer # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'vertical_stabilizer' wing.aspect_ratio = 0.74 wing.sweeps.quarter_chord = 60 * Units.deg wing.thickness_to_chord = 0.04 wing.taper = 0.14 wing.span_efficiency = 0.9 wing.spans.projected = 6.0 * Units.meter wing.chords.root = 14.5 * Units.meter wing.total_length = 14.5 * Units.meter wing.chords.tip = 2.7 * Units.meter wing.chords.mean_aerodynamic = 8.66 * Units.meter wing.areas.reference = 33.91 * Units['meter**2'] wing.areas.wetted = 76. * Units['meter**2'] wing.areas.exposed = 38. * Units['meter**2'] wing.areas.affected = 33.91 * Units['meter**2'] wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [42.,0,1.] # meters wing.aerodynamic_center = [50,0,0] # meters wing.vertical = True wing.symmetric = False wing.t_tail = False wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Fuselage # ------------------------------------------------------------------ fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.tag = 'fuselage' fuselage.seats_abreast = 4 fuselage.seat_pitch = 1 * Units.meter fuselage.fineness.nose = 4.3 * Units.meter fuselage.fineness.tail = 6.4 * Units.meter fuselage.lengths.total = 61.66 * Units.meter fuselage.width = 2.88 * Units.meter fuselage.heights.maximum = 3.32 * Units.meter fuselage.heights.maximum = 3.32 * Units.meter fuselage.heights.at_quarter_length = 3.32 * Units.meter fuselage.heights.at_wing_root_quarter_chord = 3.32 * Units.meter fuselage.heights.at_three_quarters_length = 3.32 * Units.meter fuselage.areas.wetted = 447. * Units['meter**2'] fuselage.areas.front_projected = 11.9 * Units['meter**2'] fuselage.effective_diameter = 3.1 * Units.meter fuselage.differential_pressure = 7.4e4 * Units.pascal # Maximum differential pressure # add to vehicle vehicle.append_component(fuselage) # ------------------------------------------------------------------ # Turbojet Network # ------------------------------------------------------------------ # instantiate the gas turbine network turbojet = SUAVE.Components.Energy.Networks.Turbojet_Super() turbojet.tag = 'turbojet' # setup turbojet.number_of_engines = 4.0 turbojet.engine_length = 12.0 turbojet.nacelle_diameter = 1.3 * Units.meter turbojet.inlet_diameter = 1.1 * Units.meter turbojet.areas = Data() turbojet.areas.wetted = 12.5*4.7*2. * Units['meter**2'] # 4.7 is outer perimeter on one side turbojet.origin = [[37.,6.,-1.3],[37.,5.3,-1.3],[37.,-5.3,-1.3],[37.,-6.,-1.3]] # meters # working fluid turbojet.working_fluid = SUAVE.Attributes.Gases.Air() # ------------------------------------------------------------------ # Component 1 - Ram # to convert freestream static to stagnation quantities # instantiate ram = SUAVE.Components.Energy.Converters.Ram() ram.tag = 'ram' # add to the network turbojet.append(ram) # ------------------------------------------------------------------ # Component 2 - Inlet Nozzle # instantiate inlet_nozzle = SUAVE.Components.Energy.Converters.Compression_Nozzle() inlet_nozzle.tag = 'inlet_nozzle' # setup inlet_nozzle.polytropic_efficiency = 0.98 inlet_nozzle.pressure_ratio = 1.0 # add to network turbojet.append(inlet_nozzle) # ------------------------------------------------------------------ # Component 3 - Low Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'low_pressure_compressor' # setup compressor.polytropic_efficiency = 0.91 compressor.pressure_ratio = 3.1 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 4 - High Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'high_pressure_compressor' # setup compressor.polytropic_efficiency = 0.91 compressor.pressure_ratio = 5.0 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 5 - Low Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='low_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.93 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 6 - High Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='high_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.93 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 7 - Combustor # instantiate combustor = SUAVE.Components.Energy.Converters.Combustor() combustor.tag = 'combustor' # setup combustor.efficiency = 0.99 combustor.turbine_inlet_temperature = 1450. combustor.pressure_ratio = 1.0 combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A() # add to network turbojet.append(combustor) # ------------------------------------------------------------------ # Component 8 - Core Nozzle # instantiate nozzle = SUAVE.Components.Energy.Converters.Supersonic_Nozzle() nozzle.tag = 'core_nozzle' # setup nozzle.polytropic_efficiency = 0.95 nozzle.pressure_ratio = 0.99 # add to network turbojet.append(nozzle) # ------------------------------------------------------------------ #Component 9 : Thrust (to compute the thrust) thrust = SUAVE.Components.Energy.Processes.Thrust() thrust.tag ='compute_thrust' # total design thrust (includes all the engines) thrust.total_design = 4*140000. * Units.N #Newtons # Note: Sizing builds the propulsor. It does not actually set the size of the turbojet # design sizing conditions altitude = 0.0*Units.ft mach_number = 0.01 isa_deviation = 0. # add to network turbojet.thrust = thrust #size the turbojet turbojet_sizing(turbojet,mach_number,altitude) # add gas turbine network gt_engine to the vehicle vehicle.append_component(turbojet) # ------------------------------------------------------------------ # Vehicle Definition Complete # ------------------------------------------------------------------ return vehicle
def vehicle_setup(): # ------------------------------------------------------------------ # Initialize the Vehicle # ------------------------------------------------------------------ vehicle = SUAVE.Vehicle() vehicle.tag = 'Concorde' # ------------------------------------------------------------------ # Vehicle-level Properties # ------------------------------------------------------------------ # mass properties vehicle.mass_properties.max_takeoff = 185000. # kg vehicle.mass_properties.operating_empty = 78700. # kg vehicle.mass_properties.takeoff = 183000. # kg, adjusted due to significant fuel burn on runway vehicle.mass_properties.cargo = 1000. * Units.kilogram vehicle.mass_properties.max_zero_fuel = 92000. # envelope properties vehicle.envelope.ultimate_load = 3.75 vehicle.envelope.limit_load = 2.5 # basic parameters vehicle.reference_area = 358.25 vehicle.passengers = 100 vehicle.systems.control = "fully powered" vehicle.systems.accessories = "sst" vehicle.maximum_cross_sectional_area = 13.9 vehicle.total_length = 61.66 vehicle.design_mach_number = 2.02 vehicle.design_range = 4505 * Units.miles vehicle.design_cruise_alt = 60000.0 * Units.ft # ------------------------------------------------------------------ # Main Wing # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Main_Wing() wing.tag = 'main_wing' wing.aspect_ratio = 1.83 wing.sweeps.quarter_chord = 59.5 * Units.deg wing.sweeps.leading_edge = 66.5 * Units.deg wing.thickness_to_chord = 0.03 wing.taper = 0. wing.spans.projected = 25.6 wing.chords.root = 33.8 wing.total_length = 33.8 wing.chords.tip = 1.1 wing.chords.mean_aerodynamic = 18.4 wing.areas.reference = 358.25 wing.areas.wetted = 601. wing.areas.exposed = 326.5 wing.areas.affected = .6 * wing.areas.reference wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [[14, 0, -.8]] wing.aerodynamic_center = [35, 0, 0] wing.vertical = False wing.symmetric = True wing.high_lift = True wing.vortex_lift = True wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 wing_airfoil = SUAVE.Components.Airfoils.Airfoil() # This airfoil is not a true Concorde airfoil wing_airfoil.coordinate_file = '../Vehicles/Airfoils/NACA65-203.txt' wing.append_airfoil(wing_airfoil) # set root sweep with inner section segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_1' segment.percent_span_location = 0. segment.twist = 0. * Units.deg segment.root_chord_percent = 33.8 / 33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 67. * Units.deg segment.thickness_to_chord = 0.03 #segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # set section 2 start point segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_2' segment.percent_span_location = 6.15 / ( 25.6 / 2) + wing.Segments['section_1'].percent_span_location segment.twist = 0. * Units.deg segment.root_chord_percent = 13.8 / 33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 48. * Units.deg segment.thickness_to_chord = 0.03 segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # set section 3 start point segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_3' segment.percent_span_location = 5.95 / ( 25.6 / 2) + wing.Segments['section_2'].percent_span_location segment.twist = 0. * Units.deg segment.root_chord_percent = 4.4 / 33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 71. * Units.deg segment.thickness_to_chord = 0.03 segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # set tip segment = SUAVE.Components.Wings.Segment() segment.tag = 'tip' segment.percent_span_location = 1. segment.twist = 0. * Units.deg segment.root_chord_percent = 1.1 / 33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 0. segment.thickness_to_chord = 0.03 segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # Fill out more segment properties automatically wing = wing_segmented_planform(wing) # CG locations are approximate # Masses from http://www.concordesst.com/fuelsys.html fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_9' fuel_tank.mass_properties.center_of_gravity = np.array([[26.5, 0, 0]]) fuel_tank.mass_properties.fuel_mass_when_full = 11096 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_10' fuel_tank.mass_properties.center_of_gravity = np.array([[28.7, 0, 0]]) fuel_tank.mass_properties.fuel_mass_when_full = 11943 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_1_and_4' fuel_tank.mass_properties.center_of_gravity = np.array([[31.0, 0, 0]]) fuel_tank.mass_properties.fuel_mass_when_full = 4198 + 4198 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_5_and_8' fuel_tank.mass_properties.center_of_gravity = np.array([[32.9, 0, 0]]) fuel_tank.mass_properties.fuel_mass_when_full = 7200 + 12838 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_6_and_7' fuel_tank.mass_properties.center_of_gravity = np.array([[37.4, 0, 0]]) fuel_tank.mass_properties.fuel_mass_when_full = 11587 + 7405 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_5A_and_7A' fuel_tank.mass_properties.center_of_gravity = np.array([[40.2, 0, 0]]) fuel_tank.mass_properties.fuel_mass_when_full = 2225 + 2225 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_2_and_3' fuel_tank.mass_properties.center_of_gravity = np.array([[40.2, 0, 0]]) fuel_tank.mass_properties.fuel_mass_when_full = 4570 + 4570 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Vertical Stabilizer # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Vertical_Tail() wing.tag = 'vertical_stabilizer' wing.aspect_ratio = 0.74 # wing.sweeps.quarter_chord = 60 * Units.deg wing.thickness_to_chord = 0.04 wing.taper = 0.14 wing.spans.projected = 6.0 # wing.chords.root = 14.5 wing.total_length = 14.5 wing.chords.tip = 2.7 wing.chords.mean_aerodynamic = 8.66 wing.areas.reference = 33.91 # wing.areas.wetted = 76. wing.areas.exposed = 38. wing.areas.affected = 33.91 wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [[42., 0, 1.]] wing.aerodynamic_center = [50, 0, 0] wing.vertical = True wing.symmetric = False wing.t_tail = False wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 tail_airfoil = SUAVE.Components.Airfoils.Airfoil() # This airfoil is not a true Concorde airfoil tail_airfoil.coordinate_file = '../Vehicles/Airfoils/supersonic_tail.txt' wing.append_airfoil(tail_airfoil) # set root sweep with inner section segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_1' segment.percent_span_location = 0.0 segment.twist = 0. * Units.deg segment.root_chord_percent = 14.5 / 14.5 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 63. * Units.deg segment.thickness_to_chord = 0.04 segment.append_airfoil(tail_airfoil) wing.Segments.append(segment) # set mid section start point segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_2' segment.percent_span_location = 2.4 / ( 6.0) + wing.Segments['section_1'].percent_span_location segment.twist = 0. * Units.deg segment.root_chord_percent = 7.5 / 14.5 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 40. * Units.deg segment.thickness_to_chord = 0.04 segment.append_airfoil(tail_airfoil) wing.Segments.append(segment) # set tip segment = SUAVE.Components.Wings.Segment() segment.tag = 'tip' segment.percent_span_location = 1. segment.twist = 0. * Units.deg segment.root_chord_percent = 2.7 / 14.5 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 0. segment.thickness_to_chord = 0.04 segment.append_airfoil(tail_airfoil) wing.Segments.append(segment) # Fill out more segment properties automatically wing = wing_segmented_planform(wing) # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Fuselage # ------------------------------------------------------------------ fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.tag = 'fuselage' fuselage.seats_abreast = 4 fuselage.seat_pitch = 38. * Units.inches fuselage.fineness.nose = 4.3 fuselage.fineness.tail = 6.4 fuselage.lengths.total = 61.66 fuselage.width = 2.88 fuselage.heights.maximum = 3.32 # fuselage.heights.maximum = 3.32 # fuselage.heights.at_quarter_length = 3.32 # fuselage.heights.at_wing_root_quarter_chord = 3.32 # fuselage.heights.at_three_quarters_length = 3.32 # fuselage.areas.wetted = 442. fuselage.areas.front_projected = 11.9 fuselage.effective_diameter = 3.1 fuselage.differential_pressure = 7.4e4 * Units.pascal # Maximum differential pressure fuselage.OpenVSP_values = Data() # VSP uses degrees directly fuselage.OpenVSP_values.nose = Data() fuselage.OpenVSP_values.nose.top = Data() fuselage.OpenVSP_values.nose.side = Data() fuselage.OpenVSP_values.nose.top.angle = 20.0 fuselage.OpenVSP_values.nose.top.strength = 0.75 fuselage.OpenVSP_values.nose.side.angle = 20.0 fuselage.OpenVSP_values.nose.side.strength = 0.75 fuselage.OpenVSP_values.nose.TB_Sym = True fuselage.OpenVSP_values.nose.z_pos = -.01 fuselage.OpenVSP_values.tail = Data() fuselage.OpenVSP_values.tail.top = Data() fuselage.OpenVSP_values.tail.side = Data() fuselage.OpenVSP_values.tail.bottom = Data() fuselage.OpenVSP_values.tail.top.angle = 0.0 fuselage.OpenVSP_values.tail.top.strength = 0.0 # CG locations are approximate # Masses from http://www.concordesst.com/fuelsys.html fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_11' fuel_tank.mass_properties.center_of_gravity = np.array([[49.8, 0, 0]]) fuel_tank.mass_properties.fuel_mass_when_full = 10415 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() fuselage.Fuel_Tanks.append(fuel_tank) # add to vehicle vehicle.append_component(fuselage) # ------------------------------------------------------------------ # the nacelle # ------------------------------------------------------------------ nacelle = SUAVE.Components.Nacelles.Nacelle() nacelle.diameter = 1.3 nacelle.tag = 'nacelle_L1' nacelle.origin = [[36.56, 22, -1.9]] nacelle.length = 12.0 nacelle.inlet_diameter = 1.1 nacelle.areas.wetted = 30. vehicle.append_component(nacelle) nacelle_2 = deepcopy(nacelle) nacelle_2.tag = 'nacelle_2' nacelle_2.origin = [[37., 5.3, -1.3]] vehicle.append_component(nacelle_2) nacelle_3 = deepcopy(nacelle) nacelle_3.tag = 'nacelle_3' nacelle_3.origin = [[37., -5.3, -1.3]] vehicle.append_component(nacelle_3) nacelle_4 = deepcopy(nacelle) nacelle_4.tag = 'nacelle_4' nacelle_4.origin = [[37., -6., -1.3]] vehicle.append_component(nacelle_4) # ------------------------------------------------------------------ # Turbojet Network # ------------------------------------------------------------------ # instantiate the gas turbine network turbojet = SUAVE.Components.Energy.Networks.Turbojet_Super() turbojet.tag = 'turbojet' # setup turbojet.number_of_engines = 4.0 turbojet.engine_length = 12.0 turbojet.nacelle_diameter = 1.3 turbojet.inlet_diameter = 1.1 turbojet.areas = Data() turbojet.areas.wetted = 120. / turbojet.number_of_engines turbojet.origin = [[37., 6., -1.3], [37., 5.3, -1.3], [37., -5.3, -1.3], [37., -6., -1.3]] # working fluid turbojet.working_fluid = SUAVE.Attributes.Gases.Air() # ------------------------------------------------------------------ # Component 1 - Ram # to convert freestream static to stagnation quantities # instantiate ram = SUAVE.Components.Energy.Converters.Ram() ram.tag = 'ram' # add to the network turbojet.append(ram) # ------------------------------------------------------------------ # Component 2 - Inlet Nozzle # instantiate inlet_nozzle = SUAVE.Components.Energy.Converters.Compression_Nozzle() inlet_nozzle.tag = 'inlet_nozzle' # setup inlet_nozzle.polytropic_efficiency = 1.0 inlet_nozzle.pressure_ratio = 1.0 inlet_nozzle.pressure_recovery = 0.94 # add to network turbojet.append(inlet_nozzle) # ------------------------------------------------------------------ # Component 3 - Low Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'low_pressure_compressor' # setup compressor.polytropic_efficiency = 0.88 compressor.pressure_ratio = 3.1 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 4 - High Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'high_pressure_compressor' # setup compressor.polytropic_efficiency = 0.88 compressor.pressure_ratio = 5.0 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 5 - Low Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag = 'low_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.89 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 6 - High Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag = 'high_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.87 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 7 - Combustor # instantiate combustor = SUAVE.Components.Energy.Converters.Combustor() combustor.tag = 'combustor' # setup combustor.efficiency = 0.94 combustor.alphac = 1.0 combustor.turbine_inlet_temperature = 1440. combustor.pressure_ratio = 0.92 combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A() # add to network turbojet.append(combustor) # ------------------------------------------------------------------ # Afterburner # instantiate afterburner = SUAVE.Components.Energy.Converters.Combustor() afterburner.tag = 'afterburner' # setup afterburner.efficiency = 0.9 afterburner.alphac = 1.0 afterburner.turbine_inlet_temperature = 1500 afterburner.pressure_ratio = 1.0 afterburner.fuel_data = SUAVE.Attributes.Propellants.Jet_A() # add to network turbojet.append(afterburner) # ------------------------------------------------------------------ # Component 8 - Core Nozzle # instantiate nozzle = SUAVE.Components.Energy.Converters.Supersonic_Nozzle() nozzle.tag = 'core_nozzle' # setup nozzle.pressure_recovery = 0.95 nozzle.pressure_ratio = 1. # add to network turbojet.append(nozzle) # ------------------------------------------------------------------ #Component 10 : thrust (to compute the thrust) thrust = SUAVE.Components.Energy.Processes.Thrust() thrust.tag = 'compute_thrust' #total design thrust (includes all the engines) thrust.total_design = 40000. * Units.lbf # Note: Sizing builds the network. It does not actually set the size of the turbojet #design sizing conditions altitude = 60000.0 * Units.ft mach_number = 2.02 isa_deviation = 0. # add to network turbojet.thrust = thrust #size the turbojet turbojet_sizing(turbojet, mach_number, altitude) # add gas turbine network gt_engine to the vehicle vehicle.append_component(turbojet) # ------------------------------------------------------------------ # Vehicle Definition Complete # ------------------------------------------------------------------ return vehicle
def vehicle_setup(): # ------------------------------------------------------------------ # Initialize the Vehicle # ------------------------------------------------------------------ vehicle = SUAVE.Vehicle() vehicle.tag = 'AS2' # ------------------------------------------------------------------ # Vehicle-level Properties # ------------------------------------------------------------------ # mass properties vehicle.mass_properties.max_takeoff = 52163. # kg vehicle.mass_properties.operating_empty = 22500. # kg vehicle.mass_properties.takeoff = 52163. # kg vehicle.mass_properties.cargo = 1000. * Units.kilogram vehicle.mass_properties.center_of_gravity = [26.3 * Units.feet, 0, 0] vehicle.mass_properties.moments_of_inertia.tensor = [[10**5, 0, 0], [ 0, 10**6, 0, ], [0, 0, 10**7] ] # Not Correct # envelope properties vehicle.envelope.ultimate_load = 3.5 vehicle.envelope.limit_load = 1.5 # basic parameters vehicle.reference_area = 125.4 vehicle.passengers = 8 vehicle.systems.control = "fully powered" vehicle.systems.accessories = "long range" # ------------------------------------------------------------------ # Main Wing # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'main_wing' wing.aspect_ratio = 3.63 wing.sweeps.quarter_chord = 0 * Units.deg wing.thickness_to_chord = 0.03 wing.taper = 0.7 wing.span_efficiency = 0.74 wing.spans.projected = 21.0 wing.chords.root = 12.9 wing.chords.tip = 1.0 wing.chords.mean_aerodynamic = 7.0 wing.areas.reference = 125.4 wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 2.0 * Units.degrees wing.origin = [20, 0, 0] wing.aerodynamic_center = [5, 0, 0] wing.vertical = False wing.symmetric = True wing.high_lift = True wing.high_mach = True wing.transition_x_upper = 0.9 wing.transition_x_lower = 0.9 wing.dynamic_pressure_ratio = 1.0 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Horizontal Stabilizer # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'horizontal_stabilizer' wing.aspect_ratio = 2.0 # wing.sweeps.quarter_chord = 0 * Units.deg wing.thickness_to_chord = 0.03 wing.taper = 0.5 wing.span_efficiency = 0.74 wing.spans.projected = 7.0 # wing.chords.root = 4.0 wing.chords.tip = 2.0 wing.chords.mean_aerodynamic = 3.3 wing.areas.reference = 24.5 # wing.twists.root = 3.0 * Units.degrees wing.twists.tip = 3.0 * Units.degrees wing.origin = [46, 0, 0] wing.aerodynamic_center = [2, 0, 0] wing.vertical = False wing.symmetric = True wing.high_mach = True wing.transition_x_upper = 0.9 wing.transition_x_lower = 0.9 wing.dynamic_pressure_ratio = 0.9 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Vertical Stabilizer # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'vertical_stabilizer' wing.aspect_ratio = 1.3 # wing.sweeps.quarter_chord = 45 * Units.deg wing.thickness_to_chord = 0.08 wing.taper = 0.5 wing.span_efficiency = 0.9 wing.spans.projected = 3.5 # wing.chords.root = 6.0 wing.chords.tip = 3.0 wing.chords.mean_aerodynamic = 4.0 wing.areas.reference = 33.9 # wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [40, 0, 0] wing.aerodynamic_center = [2, 0, 0] wing.vertical = True wing.symmetric = False wing.t_tail = False wing.high_mach = True wing.transition_x_upper = 0.9 wing.transition_x_lower = 0.9 wing.dynamic_pressure_ratio = 1.0 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Fuselage # ------------------------------------------------------------------ fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.tag = 'fuselage' #fuselage.number_coach_seats = vehicle.passengers fuselage.seats_abreast = 2 fuselage.seat_pitch = 1 fuselage.fineness.nose = 4.0 # These finenesses are smaller than the real value due to limitations of existing functions fuselage.fineness.tail = 4.0 fuselage.lengths.nose = 12. fuselage.lengths.tail = 25.5 fuselage.lengths.cabin = 11.5 fuselage.lengths.total = 49. fuselage.lengths.fore_space = 16.3 fuselage.lengths.aft_space = 16.3 fuselage.width = 2.35 fuselage.heights.maximum = 2.55 # fuselage.heights.at_quarter_length = 4. # Not correct fuselage.heights.at_three_quarters_length = 4. # Not correct fuselage.heights.at_wing_root_quarter_chord = 4. # Not correct fuselage.areas.side_projected = 4. * 59.8 # Not correct fuselage.areas.wetted = 615. fuselage.areas.front_projected = 5.1 fuselage.effective_diameter = 2.4 fuselage.differential_pressure = 50**5 * Units.pascal # Maximum differential pressure # add to vehicle vehicle.append_component(fuselage) # ------------------------------------------------------------------ # Turbojet Network # ------------------------------------------------------------------ #instantiate the gas turbine network turbojet = SUAVE.Components.Energy.Networks.Turbojet_Super() turbojet.tag = 'turbojet' # setup turbojet.number_of_engines = 3.0 turbojet.engine_length = 8.0 turbojet.nacelle_diameter = 1.580 # working fluid turbojet.working_fluid = SUAVE.Attributes.Gases.Air() # ------------------------------------------------------------------ # Component 1 - Ram # to convert freestream static to stagnation quantities # instantiate ram = SUAVE.Components.Energy.Converters.Ram() ram.tag = 'ram' # add to the network turbojet.append(ram) # ------------------------------------------------------------------ # Component 2 - Inlet Nozzle # instantiate inlet_nozzle = SUAVE.Components.Energy.Converters.Compression_Nozzle() inlet_nozzle.tag = 'inlet_nozzle' # setup inlet_nozzle.polytropic_efficiency = 1.0 inlet_nozzle.pressure_ratio = 1.0 # add to network turbojet.append(inlet_nozzle) # ------------------------------------------------------------------ # Component 3 - Low Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'low_pressure_compressor' # setup compressor.polytropic_efficiency = 1.0 compressor.pressure_ratio = 5.0 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 4 - High Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'high_pressure_compressor' # setup compressor.polytropic_efficiency = 1.0 compressor.pressure_ratio = 10.0 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 5 - Low Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag = 'low_pressure_turbine' # setup turbine.mechanical_efficiency = 1.0 turbine.polytropic_efficiency = 1.0 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 6 - High Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag = 'high_pressure_turbine' # setup turbine.mechanical_efficiency = 1.0 turbine.polytropic_efficiency = 1.0 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 7 - Combustor # instantiate combustor = SUAVE.Components.Energy.Converters.Combustor() combustor.tag = 'combustor' # setup combustor.efficiency = 1.0 combustor.alphac = 1.0 combustor.turbine_inlet_temperature = 1500. combustor.pressure_ratio = 1.0 combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A() # add to network turbojet.append(combustor) # ------------------------------------------------------------------ # Component 8 - Core Nozzle # instantiate nozzle = SUAVE.Components.Energy.Converters.Supersonic_Nozzle() #nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle() nozzle.tag = 'core_nozzle' # setup nozzle.polytropic_efficiency = 1.0 nozzle.pressure_ratio = 1.0 # add to network turbojet.append(nozzle) # ------------------------------------------------------------------ # Component 9 - Divergening Nozzle # ------------------------------------------------------------------ #Component 10 : thrust (to compute the thrust) thrust = SUAVE.Components.Energy.Processes.Thrust() thrust.tag = 'compute_thrust' #total design thrust (includes all the engines) thrust.total_design = 2 * 15000. * Units.N #Newtons #design sizing conditions altitude = 35000.0 * Units.ft mach_number = 2.02 isa_deviation = 0. # add to network turbojet.thrust = thrust #size the turbojet turbojet_sizing(turbojet, mach_number, altitude) # add gas turbine network gt_engine to the vehicle vehicle.append_component(turbojet) # ------------------------------------------------------------------ # Vehicle Definition Complete # ------------------------------------------------------------------ return vehicle
def vehicle_setup(source_ratio=1.): # ------------------------------------------------------------------ # Initialize the Vehicle # ------------------------------------------------------------------ vehicle = SUAVE.Vehicle() vehicle.tag = 'Concorde' # ------------------------------------------------------------------ # Vehicle-level Properties # ------------------------------------------------------------------ # mass properties vehicle.mass_properties.max_takeoff = 185000. # kg vehicle.mass_properties.operating_empty = 78700. # kg vehicle.mass_properties.takeoff = 185000. # kg vehicle.mass_properties.cargo = 1000. * Units.kilogram # envelope properties vehicle.envelope.ultimate_load = 3.5 vehicle.envelope.limit_load = 1.5 # basic parameters vehicle.reference_area = 358.25 vehicle.passengers = 100 vehicle.systems.control = "fully powered" vehicle.systems.accessories = "long range" # ------------------------------------------------------------------ # Main Wing # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'main_wing' wing.aspect_ratio = 1.83 wing.sweeps.quarter_chord = 59.5 * Units.deg wing.thickness_to_chord = 0.03 wing.taper = 0. wing.span_efficiency = .8 wing.spans.projected = 25.6 wing.chords.root = 33.8 wing.total_length = 33.8 wing.chords.tip = 1.1 wing.chords.mean_aerodynamic = 18.4 wing.areas.reference = 358.25 wing.areas.wetted = 653. - 12.*2.4*2 # 2.4 is engine area on one side wing.areas.exposed = 326.5 wing.areas.affected = .6*wing.areas.reference wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [14,0,-.8] wing.aerodynamic_center = [35,0,0] wing.vertical = False wing.symmetric = True wing.high_lift = True wing.vortex_lift = True wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 wing_airfoil = SUAVE.Components.Wings.Airfoils.Airfoil() wing_airfoil.coordinate_file = 'NACA65-203.dat' wing.append_airfoil(wing_airfoil) # set root sweep with inner section segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_1' segment.percent_span_location = 0. segment.twist = 0. * Units.deg segment.root_chord_percent = 33.8/33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 67. * Units.deg segment.vsp_mesh = Data() segment.vsp_mesh.inner_radius = 1./source_ratio segment.vsp_mesh.outer_radius = 1./source_ratio segment.vsp_mesh.inner_length = .044/source_ratio segment.vsp_mesh.outer_length = .044/source_ratio segment.vsp_mesh.matching_TE = False segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # set mid section start point segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_2' segment.percent_span_location = 6.15/(25.6/2) + wing.Segments['section_1'].percent_span_location segment.twist = 0. * Units.deg segment.root_chord_percent = 13.8/33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 48. * Units.deg segment.vsp_mesh = Data() segment.vsp_mesh.inner_radius = 1./source_ratio segment.vsp_mesh.outer_radius = .88/source_ratio segment.vsp_mesh.inner_length = .044/source_ratio segment.vsp_mesh.outer_length = .044/source_ratio segment.vsp_mesh.matching_TE = False segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # set tip section start point segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_3' segment.percent_span_location = 5.95/(25.6/2) + wing.Segments['section_2'].percent_span_location segment.twist = 0. * Units.deg segment.root_chord_percent = 4.4/33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 71. * Units.deg segment.vsp_mesh = Data() segment.vsp_mesh.inner_radius = .88/source_ratio segment.vsp_mesh.outer_radius = .22/source_ratio segment.vsp_mesh.inner_length = .044/source_ratio segment.vsp_mesh.outer_length = .011/source_ratio segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Vertical Stabilizer # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'vertical_stabilizer' wing.aspect_ratio = 0.74 # wing.sweeps.quarter_chord = 60 * Units.deg wing.thickness_to_chord = 0.04 wing.taper = 0.14 wing.span_efficiency = 0.9 wing.spans.projected = 6.0 # wing.chords.root = 14.5 wing.total_length = 14.5 wing.chords.tip = 2.7 wing.chords.mean_aerodynamic = 8.66 wing.areas.reference = 33.91 # wing.areas.wetted = 76. wing.areas.exposed = 38. wing.areas.affected = 33.91 wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [42.,0,1.] wing.aerodynamic_center = [50,0,0] wing.vertical = True wing.symmetric = False wing.t_tail = False wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 tail_airfoil = SUAVE.Components.Wings.Airfoils.Airfoil() tail_airfoil.coordinate_file = 'supertail_refined.dat' wing.append_airfoil(tail_airfoil) # set root sweep with inner section segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_1' segment.percent_span_location = 0.0 segment.twist = 0. * Units.deg segment.root_chord_percent = 14.5/14.5 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 63. * Units.deg segment.vsp_mesh = Data() segment.vsp_mesh.inner_radius = 2.9/source_ratio segment.vsp_mesh.outer_radius = 1.5/source_ratio segment.vsp_mesh.inner_length = .044/source_ratio segment.vsp_mesh.outer_length = .044/source_ratio segment.append_airfoil(tail_airfoil) wing.Segments.append(segment) # set mid section start point segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_2' segment.percent_span_location = 2.4/(6.0) + wing.Segments['section_1'].percent_span_location segment.twist = 0. * Units.deg segment.root_chord_percent = 7.5/14.5 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 40. * Units.deg segment.vsp_mesh = Data() segment.vsp_mesh.inner_radius = 1.5/source_ratio segment.vsp_mesh.outer_radius = .54/source_ratio segment.vsp_mesh.inner_length = .044/source_ratio segment.vsp_mesh.outer_length = .027/source_ratio segment.append_airfoil(tail_airfoil) wing.Segments.append(segment) # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Fuselage # ------------------------------------------------------------------ fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.tag = 'fuselage' fuselage.seats_abreast = 4 fuselage.seat_pitch = 1 fuselage.fineness.nose = 4.3 fuselage.fineness.tail = 6.4 fuselage.lengths.total = 61.66 fuselage.width = 2.88 fuselage.heights.maximum = 3.32 # fuselage.heights.maximum = 3.32 # fuselage.heights.at_quarter_length = 3.32 # fuselage.heights.at_wing_root_quarter_chord = 3.32 # fuselage.heights.at_three_quarters_length = 3.32 # fuselage.areas.wetted = 447. fuselage.areas.front_projected = 11.9 fuselage.effective_diameter = 3.1 fuselage.differential_pressure = 7.4e4 * Units.pascal # Maximum differential pressure # add to vehicle vehicle.append_component(fuselage) # ------------------------------------------------------------------ # Turbojet Network # ------------------------------------------------------------------ # instantiate the gas turbine network turbojet = SUAVE.Components.Energy.Networks.Turbojet_Super() turbojet.tag = 'turbojet' # setup turbojet.number_of_engines = 4.0 turbojet.engine_length = 12.0 turbojet.nacelle_diameter = 1.3 turbojet.inlet_diameter = 1.1 turbojet.areas = Data() turbojet.areas.wetted = 12.5*4.7*2. # 4.7 is outer perimeter on one side turbojet.origin = [[37.,6.,-1.3],[37.,5.3,-1.3],[37.,-5.3,-1.3],[37.,-6.,-1.3]] # working fluid turbojet.working_fluid = SUAVE.Attributes.Gases.Air() # ------------------------------------------------------------------ # Component 1 - Ram # to convert freestream static to stagnation quantities # instantiate ram = SUAVE.Components.Energy.Converters.Ram() ram.tag = 'ram' # add to the network turbojet.append(ram) # ------------------------------------------------------------------ # Component 2 - Inlet Nozzle # instantiate inlet_nozzle = SUAVE.Components.Energy.Converters.Compression_Nozzle() inlet_nozzle.tag = 'inlet_nozzle' # setup inlet_nozzle.polytropic_efficiency = 0.98 inlet_nozzle.pressure_ratio = 1.0 # add to network turbojet.append(inlet_nozzle) # ------------------------------------------------------------------ # Component 3 - Low Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'low_pressure_compressor' # setup compressor.polytropic_efficiency = 0.91 compressor.pressure_ratio = 3.1 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 4 - High Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'high_pressure_compressor' # setup compressor.polytropic_efficiency = 0.91 compressor.pressure_ratio = 5.0 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 5 - Low Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='low_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.93 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 6 - High Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='high_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.93 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 7 - Combustor # instantiate combustor = SUAVE.Components.Energy.Converters.Combustor() combustor.tag = 'combustor' # setup combustor.efficiency = 0.99 combustor.alphac = 1.0 combustor.turbine_inlet_temperature = 1450. combustor.pressure_ratio = 1.0 combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A() # add to network turbojet.append(combustor) # ------------------------------------------------------------------ # Component 8 - Core Nozzle # instantiate nozzle = SUAVE.Components.Energy.Converters.Supersonic_Nozzle() nozzle.tag = 'core_nozzle' # setup nozzle.polytropic_efficiency = 0.95 nozzle.pressure_ratio = 0.99 # add to network turbojet.append(nozzle) # ------------------------------------------------------------------ # Component 9 - Divergening Nozzle # ------------------------------------------------------------------ #Component 10 : thrust (to compute the thrust) thrust = SUAVE.Components.Energy.Processes.Thrust() thrust.tag ='compute_thrust' #total design thrust (includes all the engines) thrust.total_design = 4*140000. * Units.N #Newtons # Note: Sizing builds the propulsor. It does not actually set the size of the turbojet #design sizing conditions altitude = 0.0*Units.ft mach_number = 0.01 isa_deviation = 0. # add to network turbojet.thrust = thrust #size the turbojet turbojet_sizing(turbojet,mach_number,altitude) # add gas turbine network gt_engine to the vehicle vehicle.append_component(turbojet) # ------------------------------------------------------------------ # Vehicle Definition Complete # ------------------------------------------------------------------ return vehicle
def vehicle_setup(): # ------------------------------------------------------------------ # Initialize the Vehicle # ------------------------------------------------------------------ vehicle = SUAVE.Vehicle() vehicle.tag = 'AS2' # ------------------------------------------------------------------ # Vehicle-level Properties # ------------------------------------------------------------------ # mass properties vehicle.mass_properties.max_takeoff = 185000. # kg vehicle.mass_properties.operating_empty = 78700. # kg vehicle.mass_properties.takeoff = 185000. # kg vehicle.mass_properties.cargo = 1000. * Units.kilogram # envelope properties vehicle.envelope.ultimate_load = 3.5 vehicle.envelope.limit_load = 1.5 # basic parameters vehicle.reference_area = 358.25 vehicle.passengers = 100 vehicle.systems.control = "fully powered" vehicle.systems.accessories = "long range" # ------------------------------------------------------------------ # Main Wing # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'main_wing' wing.aspect_ratio = 1.83 wing.sweep = 55 * Units.deg wing.thickness_to_chord = 0.03 wing.taper = 0. wing.span_efficiency = 0.74 wing.spans.projected = 25.6 wing.chords.root = 27.66 wing.total_length = 27.66 wing.chords.tip = 0.0 wing.chords.mean_aerodynamic = 18.4 wing.areas.reference = 358.25 wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [15,0,0] wing.aerodynamic_center = [35,0,0] wing.vertical = False wing.symmetric = True wing.high_lift = True wing.vortex_lift = True wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Vertical Stabilizer # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'vertical_stabilizer' wing.aspect_ratio = 0.74 # wing.sweep = 60 * Units.deg wing.thickness_to_chord = 0.04 wing.taper = 0.14 wing.span_efficiency = 0.9 wing.spans.projected = 5.0 # wing.chords.root = 12.58 wing.total_length = 12.58 wing.chords.tip = 2.5 wing.chords.mean_aerodynamic = 8.66 wing.areas.reference = 33.91 # wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [42,0,0] wing.aerodynamic_center = [50,0,0] wing.vertical = True wing.symmetric = False wing.t_tail = False wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Fuselage # ------------------------------------------------------------------ fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.tag = 'fuselage' #fuselage.number_coach_seats = vehicle.passengers fuselage.seats_abreast = 4 fuselage.seat_pitch = 1 fuselage.lengths.total = 61.66 fuselage.width = 2.88 fuselage.heights.maximum = 3.32 # fuselage.areas.wetted = 523. fuselage.areas.front_projected = 7.55 fuselage.effective_diameter = 3.1 fuselage.differential_pressure = 7.4e4 * Units.pascal # Maximum differential pressure # add to vehicle vehicle.append_component(fuselage) # ------------------------------------------------------------------ # Turbojet Network # ------------------------------------------------------------------ #instantiate the gas turbine network turbojet = SUAVE.Components.Energy.Networks.Turbojet_Super() turbojet.tag = 'turbojet' # setup turbojet.number_of_engines = 4.0 turbojet.engine_length = 12.5 turbojet.nacelle_diameter = 1.60 # working fluid turbojet.working_fluid = SUAVE.Attributes.Gases.Air() # ------------------------------------------------------------------ # Component 1 - Ram # to convert freestream static to stagnation quantities # instantiate ram = SUAVE.Components.Energy.Converters.Ram() ram.tag = 'ram' # add to the network turbojet.append(ram) # ------------------------------------------------------------------ # Component 2 - Inlet Nozzle # instantiate inlet_nozzle = SUAVE.Components.Energy.Converters.Compression_Nozzle() inlet_nozzle.tag = 'inlet_nozzle' # setup inlet_nozzle.polytropic_efficiency = 0.98 inlet_nozzle.pressure_ratio = 1.0 # add to network turbojet.append(inlet_nozzle) # ------------------------------------------------------------------ # Component 3 - Low Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'low_pressure_compressor' # setup compressor.polytropic_efficiency = 0.91 compressor.pressure_ratio = 3.1 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 4 - High Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'high_pressure_compressor' # setup compressor.polytropic_efficiency = 0.91 compressor.pressure_ratio = 5.0 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 5 - Low Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='low_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.93 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 6 - High Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='high_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.93 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 7 - Combustor # instantiate combustor = SUAVE.Components.Energy.Converters.Combustor() combustor.tag = 'combustor' # setup combustor.efficiency = 0.99 combustor.alphac = 1.0 combustor.turbine_inlet_temperature = 1450. combustor.pressure_ratio = 1.0 combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A() # add to network turbojet.append(combustor) # ------------------------------------------------------------------ # Component 8 - Core Nozzle # instantiate nozzle = SUAVE.Components.Energy.Converters.Supersonic_Nozzle() nozzle.tag = 'core_nozzle' # setup nozzle.polytropic_efficiency = 0.95 nozzle.pressure_ratio = 0.99 # add to network turbojet.append(nozzle) # ------------------------------------------------------------------ # Component 9 - Divergening Nozzle # ------------------------------------------------------------------ #Component 10 : thrust (to compute the thrust) thrust = SUAVE.Components.Energy.Processes.Thrust() thrust.tag ='compute_thrust' #total design thrust (includes all the engines) thrust.total_design = 4*140000. * Units.N #Newtons # Note: Sizing builds the propulsor. It does not actually set the size of the turbojet #design sizing conditions altitude = 0.0*Units.ft mach_number = 0.01 isa_deviation = 0. # add to network turbojet.thrust = thrust #size the turbojet turbojet_sizing(turbojet,mach_number,altitude) # add gas turbine network gt_engine to the vehicle vehicle.append_component(turbojet) # ------------------------------------------------------------------ # Vehicle Definition Complete # ------------------------------------------------------------------ return vehicle
def vehicle_setup(): # ------------------------------------------------------------------ # Initialize the Vehicle # ------------------------------------------------------------------ vehicle = SUAVE.Vehicle() vehicle.tag = 'AS2' # ------------------------------------------------------------------ # Vehicle-level Properties # ------------------------------------------------------------------ # mass properties vehicle.mass_properties.max_takeoff = 52163. # kg vehicle.mass_properties.operating_empty = 22500. # kg vehicle.mass_properties.takeoff = 52163. # kg vehicle.mass_properties.cargo = 1000. * Units.kilogram vehicle.mass_properties.center_of_gravity = [26.3 * Units.feet, 0, 0] vehicle.mass_properties.moments_of_inertia.tensor = [[10 ** 5, 0, 0],[0, 10 ** 6, 0,],[0,0, 10 ** 7]] # Not Correct # envelope properties vehicle.envelope.ultimate_load = 3.5 vehicle.envelope.limit_load = 1.5 # basic parameters vehicle.reference_area = 125.4 vehicle.passengers = 8 vehicle.systems.control = "fully powered" vehicle.systems.accessories = "long range" # ------------------------------------------------------------------ # Main Wing # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'main_wing' wing.aspect_ratio = 3.63 wing.sweep = 0 * Units.deg wing.thickness_to_chord = 0.03 wing.taper = 0.7 wing.span_efficiency = 0.74 wing.spans.projected = 21.0 wing.chords.root = 12.9 wing.chords.tip = 1.0 wing.chords.mean_aerodynamic = 7.0 wing.areas.reference = 125.4 wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 2.0 * Units.degrees wing.origin = [20,0,0] wing.aerodynamic_center = [5,0,0] wing.vertical = False wing.symmetric = True wing.high_lift = True wing.high_mach = True wing.transition_x_upper = 0.9 wing.transition_x_lower = 0.9 wing.dynamic_pressure_ratio = 1.0 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Horizontal Stabilizer # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'horizontal_stabilizer' wing.aspect_ratio = 2.0 # wing.sweep = 0 * Units.deg wing.thickness_to_chord = 0.03 wing.taper = 0.5 wing.span_efficiency = 0.74 wing.spans.projected = 7.0 # wing.chords.root = 4.0 wing.chords.tip = 2.0 wing.chords.mean_aerodynamic = 3.3 wing.areas.reference = 24.5 # wing.twists.root = 3.0 * Units.degrees wing.twists.tip = 3.0 * Units.degrees wing.origin = [46,0,0] wing.aerodynamic_center = [2,0,0] wing.vertical = False wing.symmetric = True wing.high_mach = True wing.transition_x_upper = 0.9 wing.transition_x_lower = 0.9 wing.dynamic_pressure_ratio = 0.9 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Vertical Stabilizer # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'vertical_stabilizer' wing.aspect_ratio = 1.3 # wing.sweep = 45 * Units.deg wing.thickness_to_chord = 0.08 wing.taper = 0.5 wing.span_efficiency = 0.9 wing.spans.projected = 3.5 # wing.chords.root = 6.0 wing.chords.tip = 3.0 wing.chords.mean_aerodynamic = 4.0 wing.areas.reference = 33.9 # wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [40,0,0] wing.aerodynamic_center = [2,0,0] wing.vertical = True wing.symmetric = False wing.t_tail = False wing.high_mach = True wing.transition_x_upper = 0.9 wing.transition_x_lower = 0.9 wing.dynamic_pressure_ratio = 1.0 # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Fuselage # ------------------------------------------------------------------ fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.tag = 'fuselage' #fuselage.number_coach_seats = vehicle.passengers fuselage.seats_abreast = 2 fuselage.seat_pitch = 1 fuselage.fineness.nose = 4.0 # These finenesses are smaller than the real value due to limitations of existing functions fuselage.fineness.tail = 4.0 fuselage.lengths.nose = 12. fuselage.lengths.tail = 25.5 fuselage.lengths.cabin = 11.5 fuselage.lengths.total = 49. fuselage.lengths.fore_space = 16.3 fuselage.lengths.aft_space = 16.3 fuselage.width = 2.35 fuselage.heights.maximum = 2.55 # fuselage.heights.at_quarter_length = 4. # Not correct fuselage.heights.at_three_quarters_length = 4. # Not correct fuselage.heights.at_wing_root_quarter_chord = 4. # Not correct fuselage.areas.side_projected = 4.* 59.8 # Not correct fuselage.areas.wetted = 615. fuselage.areas.front_projected = 5.1 fuselage.effective_diameter = 2.4 fuselage.differential_pressure = 50**5 * Units.pascal # Maximum differential pressure # add to vehicle vehicle.append_component(fuselage) # ------------------------------------------------------------------ # Turbojet Network # ------------------------------------------------------------------ #instantiate the gas turbine network turbojet = SUAVE.Components.Energy.Networks.Turbojet_Super() turbojet.tag = 'turbojet' # setup turbojet.number_of_engines = 3.0 turbojet.engine_length = 8.0 turbojet.nacelle_diameter = 1.580 # working fluid turbojet.working_fluid = SUAVE.Attributes.Gases.Air() # ------------------------------------------------------------------ # Component 1 - Ram # to convert freestream static to stagnation quantities # instantiate ram = SUAVE.Components.Energy.Converters.Ram() ram.tag = 'ram' # add to the network turbojet.append(ram) # ------------------------------------------------------------------ # Component 2 - Inlet Nozzle # instantiate inlet_nozzle = SUAVE.Components.Energy.Converters.Compression_Nozzle() inlet_nozzle.tag = 'inlet_nozzle' # setup inlet_nozzle.polytropic_efficiency = 1.0 inlet_nozzle.pressure_ratio = 1.0 # add to network turbojet.append(inlet_nozzle) # ------------------------------------------------------------------ # Component 3 - Low Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'low_pressure_compressor' # setup compressor.polytropic_efficiency = 1.0 compressor.pressure_ratio = 5.0 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 4 - High Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'high_pressure_compressor' # setup compressor.polytropic_efficiency = 1.0 compressor.pressure_ratio = 10.0 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 5 - Low Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='low_pressure_turbine' # setup turbine.mechanical_efficiency = 1.0 turbine.polytropic_efficiency = 1.0 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 6 - High Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='high_pressure_turbine' # setup turbine.mechanical_efficiency = 1.0 turbine.polytropic_efficiency = 1.0 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 7 - Combustor # instantiate combustor = SUAVE.Components.Energy.Converters.Combustor() combustor.tag = 'combustor' # setup combustor.efficiency = 1.0 combustor.alphac = 1.0 combustor.turbine_inlet_temperature = 1500. combustor.pressure_ratio = 1.0 combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A() # add to network turbojet.append(combustor) # ------------------------------------------------------------------ # Component 8 - Core Nozzle # instantiate nozzle = SUAVE.Components.Energy.Converters.Supersonic_Nozzle() #nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle() nozzle.tag = 'core_nozzle' # setup nozzle.polytropic_efficiency = 1.0 nozzle.pressure_ratio = 1.0 # add to network turbojet.append(nozzle) # ------------------------------------------------------------------ # Component 9 - Divergening Nozzle # ------------------------------------------------------------------ #Component 10 : thrust (to compute the thrust) thrust = SUAVE.Components.Energy.Processes.Thrust() thrust.tag ='compute_thrust' #total design thrust (includes all the engines) thrust.total_design = 2*15000. * Units.N #Newtons #design sizing conditions altitude = 35000.0*Units.ft mach_number = 2.02 isa_deviation = 0. # add to network turbojet.thrust = thrust #size the turbojet turbojet_sizing(turbojet,mach_number,altitude) # add gas turbine network gt_engine to the vehicle vehicle.append_component(turbojet) # ------------------------------------------------------------------ # Vehicle Definition Complete # ------------------------------------------------------------------ return vehicle
def vehicle_setup(): # ------------------------------------------------------------------ # Initialize the Vehicle # ------------------------------------------------------------------ vehicle = SUAVE.Vehicle() vehicle.tag = 'Concorde' # ------------------------------------------------------------------ # Vehicle-level Properties # ------------------------------------------------------------------ # mass properties vehicle.mass_properties.max_takeoff = 185000. # kg vehicle.mass_properties.operating_empty = 78700. # kg vehicle.mass_properties.takeoff = 183000. # kg, adjusted due to significant fuel burn on runway vehicle.mass_properties.cargo = 1000. * Units.kilogram # envelope properties vehicle.envelope.ultimate_load = 3.75 vehicle.envelope.limit_load = 2.5 # basic parameters vehicle.reference_area = 358.25 vehicle.passengers = 100 vehicle.systems.control = "fully powered" vehicle.systems.accessories = "long range" # ------------------------------------------------------------------ # Main Wing # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'main_wing' wing.aspect_ratio = 1.83 wing.sweeps.quarter_chord = 59.5 * Units.deg wing.sweeps.leading_edge = 66.5 * Units.deg wing.thickness_to_chord = 0.03 wing.taper = 0. wing.span_efficiency = 0.9 wing.spans.projected = 25.6 wing.chords.root = 33.8 wing.total_length = 33.8 wing.chords.tip = 1.1 wing.chords.mean_aerodynamic = 18.4 wing.areas.reference = 358.25 wing.areas.wetted = 653. - 12.*2.4*2 # 2.4 is engine area on one side wing.areas.exposed = 326.5 wing.areas.affected = .6*wing.areas.reference wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [14,0,-.8] wing.aerodynamic_center = [35,0,0] wing.vertical = False wing.symmetric = True wing.high_lift = True wing.vortex_lift = True wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 wing_airfoil = SUAVE.Components.Wings.Airfoils.Airfoil() # This airfoil is not a true Concorde airfoil wing_airfoil.coordinate_file = '../Vehicles/NACA65-203.dat' wing.append_airfoil(wing_airfoil) # set root sweep with inner section segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_1' segment.percent_span_location = 0. segment.twist = 0. * Units.deg segment.root_chord_percent = 33.8/33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 67. * Units.deg segment.thickness_to_chord = 0.03 segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # set section 2 start point segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_2' segment.percent_span_location = 6.15/(25.6/2) + wing.Segments['section_1'].percent_span_location segment.twist = 0. * Units.deg segment.root_chord_percent = 13.8/33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 48. * Units.deg segment.thickness_to_chord = 0.03 segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # set section 3 start point segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_3' segment.percent_span_location = 5.95/(25.6/2) + wing.Segments['section_2'].percent_span_location segment.twist = 0. * Units.deg segment.root_chord_percent = 4.4/33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 71. * Units.deg segment.thickness_to_chord = 0.03 segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # set tip segment = SUAVE.Components.Wings.Segment() segment.tag = 'tip' segment.percent_span_location = 1. segment.twist = 0. * Units.deg segment.root_chord_percent = 1.1/33.8 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 0. segment.thickness_to_chord = 0.03 segment.append_airfoil(wing_airfoil) wing.Segments.append(segment) # CG locations are approximate # Masses from http://www.concordesst.com/fuelsys.html fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_9' fuel_tank.mass_properties.center_of_gravity = np.array([26.5,0,0]) fuel_tank.mass_properties.fuel_mass_when_full = 11096 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_10' fuel_tank.mass_properties.center_of_gravity = np.array([28.7,0,0]) fuel_tank.mass_properties.fuel_mass_when_full = 11943 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_1_and_4' fuel_tank.mass_properties.center_of_gravity = np.array([31.0,0,0]) fuel_tank.mass_properties.fuel_mass_when_full = 4198+4198 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_5_and_8' fuel_tank.mass_properties.center_of_gravity = np.array([32.9,0,0]) fuel_tank.mass_properties.fuel_mass_when_full = 7200+12838 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_6_and_7' fuel_tank.mass_properties.center_of_gravity = np.array([37.4,0,0]) fuel_tank.mass_properties.fuel_mass_when_full = 11587+7405 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_5A_and_7A' fuel_tank.mass_properties.center_of_gravity = np.array([40.2,0,0]) fuel_tank.mass_properties.fuel_mass_when_full = 2225+2225 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_2_and_3' fuel_tank.mass_properties.center_of_gravity = np.array([40.2,0,0]) fuel_tank.mass_properties.fuel_mass_when_full = 4570+4570 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() wing.Fuel_Tanks.append(fuel_tank) # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Vertical Stabilizer # ------------------------------------------------------------------ wing = SUAVE.Components.Wings.Wing() wing.tag = 'vertical_stabilizer' wing.aspect_ratio = 0.74 # wing.sweeps.quarter_chord = 60 * Units.deg wing.thickness_to_chord = 0.04 wing.taper = 0.14 wing.span_efficiency = 0.9 wing.spans.projected = 6.0 # wing.chords.root = 14.5 wing.total_length = 14.5 wing.chords.tip = 2.7 wing.chords.mean_aerodynamic = 8.66 wing.areas.reference = 33.91 # wing.areas.wetted = 76. wing.areas.exposed = 38. wing.areas.affected = 33.91 wing.twists.root = 0.0 * Units.degrees wing.twists.tip = 0.0 * Units.degrees wing.origin = [42.,0,1.] wing.aerodynamic_center = [50,0,0] wing.vertical = True wing.symmetric = False wing.t_tail = False wing.high_mach = True wing.dynamic_pressure_ratio = 1.0 tail_airfoil = SUAVE.Components.Wings.Airfoils.Airfoil() # This airfoil is not a true Concorde airfoil tail_airfoil.coordinate_file = '../Vehicles/supersonic_tail.dat' wing.append_airfoil(tail_airfoil) # set root sweep with inner section segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_1' segment.percent_span_location = 0.0 segment.twist = 0. * Units.deg segment.root_chord_percent = 14.5/14.5 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 63. * Units.deg segment.thickness_to_chord = 0.03 segment.append_airfoil(tail_airfoil) wing.Segments.append(segment) # set mid section start point segment = SUAVE.Components.Wings.Segment() segment.tag = 'section_2' segment.percent_span_location = 2.4/(6.0) + wing.Segments['section_1'].percent_span_location segment.twist = 0. * Units.deg segment.root_chord_percent = 7.5/14.5 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 40. * Units.deg segment.thickness_to_chord = 0.03 segment.append_airfoil(tail_airfoil) wing.Segments.append(segment) # set tip segment = SUAVE.Components.Wings.Segment() segment.tag = 'tip' segment.percent_span_location = 1. segment.twist = 0. * Units.deg segment.root_chord_percent = 2.7/14.5 segment.dihedral_outboard = 0. segment.sweeps.quarter_chord = 0. segment.thickness_to_chord = 0.03 segment.append_airfoil(tail_airfoil) wing.Segments.append(segment) # add to vehicle vehicle.append_component(wing) # ------------------------------------------------------------------ # Fuselage # ------------------------------------------------------------------ fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.tag = 'fuselage' fuselage.seats_abreast = 4 fuselage.seat_pitch = 1 fuselage.fineness.nose = 4.3 fuselage.fineness.tail = 6.4 fuselage.lengths.total = 61.66 fuselage.width = 2.88 fuselage.heights.maximum = 3.32 # fuselage.heights.maximum = 3.32 # fuselage.heights.at_quarter_length = 3.32 # fuselage.heights.at_wing_root_quarter_chord = 3.32 # fuselage.heights.at_three_quarters_length = 3.32 # fuselage.areas.wetted = 447. fuselage.areas.front_projected = 11.9 fuselage.effective_diameter = 3.1 fuselage.differential_pressure = 7.4e4 * Units.pascal # Maximum differential pressure fuselage.OpenVSP_values = Data() # VSP uses degrees directly fuselage.OpenVSP_values.nose = Data() fuselage.OpenVSP_values.nose.top = Data() fuselage.OpenVSP_values.nose.side = Data() fuselage.OpenVSP_values.nose.top.angle = 20.0 fuselage.OpenVSP_values.nose.top.strength = 0.75 fuselage.OpenVSP_values.nose.side.angle = 20.0 fuselage.OpenVSP_values.nose.side.strength = 0.75 fuselage.OpenVSP_values.nose.TB_Sym = True fuselage.OpenVSP_values.nose.z_pos = -.01 fuselage.OpenVSP_values.tail = Data() fuselage.OpenVSP_values.tail.top = Data() fuselage.OpenVSP_values.tail.side = Data() fuselage.OpenVSP_values.tail.bottom = Data() fuselage.OpenVSP_values.tail.top.angle = 0.0 fuselage.OpenVSP_values.tail.top.strength = 0.0 # CG locations are approximate # Masses from http://www.concordesst.com/fuelsys.html fuel_tank = SUAVE.Components.Energy.Storages.Fuel_Tanks.Fuel_Tank() fuel_tank.tag = 'tank_11' fuel_tank.mass_properties.center_of_gravity = np.array([49.8,0,0]) fuel_tank.mass_properties.fuel_mass_when_full = 10415 fuel_tank.fuel_type = SUAVE.Attributes.Propellants.Jet_A() fuselage.Fuel_Tanks.append(fuel_tank) # add to vehicle vehicle.append_component(fuselage) # ------------------------------------------------------------------ # Turbojet Network # ------------------------------------------------------------------ # instantiate the gas turbine network turbojet = SUAVE.Components.Energy.Networks.Turbojet_Super() turbojet.tag = 'turbojet' # setup turbojet.number_of_engines = 4.0 turbojet.engine_length = 12.0 turbojet.nacelle_diameter = 1.3 turbojet.inlet_diameter = 1.1 turbojet.areas = Data() turbojet.areas.wetted = 12.5*4.7*2. # 4.7 is outer perimeter on one side turbojet.origin = [[37.,6.,-1.3],[37.,5.3,-1.3],[37.,-5.3,-1.3],[37.,-6.,-1.3]] # working fluid turbojet.working_fluid = SUAVE.Attributes.Gases.Air() # ------------------------------------------------------------------ # Component 1 - Ram # to convert freestream static to stagnation quantities # instantiate ram = SUAVE.Components.Energy.Converters.Ram() ram.tag = 'ram' # add to the network turbojet.append(ram) # ------------------------------------------------------------------ # Component 2 - Inlet Nozzle # instantiate inlet_nozzle = SUAVE.Components.Energy.Converters.Compression_Nozzle() inlet_nozzle.tag = 'inlet_nozzle' # setup inlet_nozzle.polytropic_efficiency = 1.0 inlet_nozzle.pressure_ratio = 1.0 inlet_nozzle.pressure_recovery = 0.94 # add to network turbojet.append(inlet_nozzle) # ------------------------------------------------------------------ # Component 3 - Low Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'low_pressure_compressor' # setup compressor.polytropic_efficiency = 0.88 compressor.pressure_ratio = 3.1 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 4 - High Pressure Compressor # instantiate compressor = SUAVE.Components.Energy.Converters.Compressor() compressor.tag = 'high_pressure_compressor' # setup compressor.polytropic_efficiency = 0.88 compressor.pressure_ratio = 5.0 # add to network turbojet.append(compressor) # ------------------------------------------------------------------ # Component 5 - Low Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='low_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.89 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 6 - High Pressure Turbine # instantiate turbine = SUAVE.Components.Energy.Converters.Turbine() turbine.tag='high_pressure_turbine' # setup turbine.mechanical_efficiency = 0.99 turbine.polytropic_efficiency = 0.87 # add to network turbojet.append(turbine) # ------------------------------------------------------------------ # Component 7 - Combustor # instantiate combustor = SUAVE.Components.Energy.Converters.Combustor() combustor.tag = 'combustor' # setup combustor.efficiency = 0.94 combustor.alphac = 1.0 combustor.turbine_inlet_temperature = 1440. combustor.pressure_ratio = 0.92 combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A() # add to network turbojet.append(combustor) # ------------------------------------------------------------------ # Afterburner # instantiate afterburner = SUAVE.Components.Energy.Converters.Combustor() afterburner.tag = 'afterburner' # setup afterburner.efficiency = 0.9 afterburner.alphac = 1.0 afterburner.turbine_inlet_temperature = 1500 afterburner.pressure_ratio = 1.0 afterburner.fuel_data = SUAVE.Attributes.Propellants.Jet_A() # add to network turbojet.append(afterburner) # ------------------------------------------------------------------ # Component 8 - Core Nozzle # instantiate nozzle = SUAVE.Components.Energy.Converters.Supersonic_Nozzle() nozzle.tag = 'core_nozzle' # setup nozzle.pressure_recovery = 0.95 nozzle.pressure_ratio = 1. # add to network turbojet.append(nozzle) # ------------------------------------------------------------------ #Component 10 : thrust (to compute the thrust) thrust = SUAVE.Components.Energy.Processes.Thrust() thrust.tag ='compute_thrust' #total design thrust (includes all the engines) thrust.total_design = 40000. * Units.lbf # Note: Sizing builds the propulsor. It does not actually set the size of the turbojet #design sizing conditions altitude = 60000.0*Units.ft mach_number = 2.02 isa_deviation = 0. # add to network turbojet.thrust = thrust #size the turbojet turbojet_sizing(turbojet,mach_number,altitude) # add gas turbine network gt_engine to the vehicle vehicle.append_component(turbojet) # ------------------------------------------------------------------ # Vehicle Definition Complete # ------------------------------------------------------------------ return vehicle