Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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