Esempio n. 1
0
def vehicle_setup():
    
    # ------------------------------------------------------------------
    #   Initialize the Vehicle
    # ------------------------------------------------------------------    
    vehicle = SUAVE.Vehicle()
    vehicle.tag = 'Boeing_BWB_450'    

    # ------------------------------------------------------------------
    #   Vehicle-level Properties
    # ------------------------------------------------------------------    
    # mass properties
    vehicle.mass_properties.max_takeoff               = 823000. * Units.lb
    vehicle.mass_properties.takeoff                   = 823000. * Units.lb
    vehicle.mass_properties.max_zero_fuel             = 0.9 * vehicle.mass_properties.max_takeoff
    vehicle.mass_properties.cargo                     = 00.  * Units.kilogram   

    # envelope properties
    vehicle.envelope.ultimate_load = 2.5
    vehicle.envelope.limit_load    = 1.5

    # basic parameters
    vehicle.reference_area         = 7840. * 2 * Units.feet**2       
    vehicle.passengers             = 450.
    vehicle.systems.control        = "fully powered" 
    vehicle.systems.accessories    = "medium range"


    # ------------------------------------------------------------------        
    #   Main Wing
    # ------------------------------------------------------------------        
    wing = SUAVE.Components.Wings.Main_Wing()
    wing.tag = 'main_wing'

    wing.aspect_ratio            = 289.**2 / (7840. * 2)
    wing.thickness_to_chord      = 0.15
    wing.taper                   = 0.0138
    wing.spans.projected         = 289.0 * Units.feet  
    wing.chords.root             = 145.0 * Units.feet
    wing.chords.tip              = 3.5  * Units.feet
    wing.chords.mean_aerodynamic = 80. * Units.feet
    wing.areas.reference         = 7840. * 2 * Units.feet**2
    wing.sweeps.quarter_chord    = 33. * Units.degrees
    wing.twists.root             = 0.0 * Units.degrees
    wing.twists.tip              = 0.0 * Units.degrees
    wing.dihedral                = 2.5 * Units.degrees
    wing.origin                  = [[0.,0.,0]]
    wing.aerodynamic_center      = [0,0,0] 
    wing.vertical                = False
    wing.symmetric               = True
    wing.high_lift               = True
    wing.dynamic_pressure_ratio  = 1.0

    segment = SUAVE.Components.Wings.Segment()

    segment.tag                   = 'section_1'
    segment.percent_span_location = 0.0
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 1.
    segment.dihedral_outboard     = 0. * Units.degrees
    segment.sweeps.quarter_chord  = 40.0 * Units.degrees
    segment.thickness_to_chord    = 0.165
    segment.vsp_mesh              = Data()
    segment.vsp_mesh.inner_radius    = 4.
    segment.vsp_mesh.outer_radius    = 4.
    segment.vsp_mesh.inner_length    = .14
    segment.vsp_mesh.outer_length    = .14    
    wing.Segments.append(segment)    
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                      = 'section_2'
    segment.percent_span_location    = 0.052
    segment.twist                    = 0. * Units.deg
    segment.root_chord_percent       = 0.921
    segment.dihedral_outboard        = 0.   * Units.degrees
    segment.sweeps.quarter_chord     = 52.5 * Units.degrees
    segment.thickness_to_chord       = 0.167
    segment.vsp_mesh                 = Data()
    segment.vsp_mesh.inner_radius    = 4.
    segment.vsp_mesh.outer_radius    = 4.
    segment.vsp_mesh.inner_length    = .14
    segment.vsp_mesh.outer_length    = .14     
    wing.Segments.append(segment)   

    segment = SUAVE.Components.Wings.Segment()
    segment.tag                      = 'section_3'
    segment.percent_span_location    = 0.138
    segment.twist                    = 0. * Units.deg
    segment.root_chord_percent       = 0.76
    segment.dihedral_outboard        = 1.85 * Units.degrees
    segment.sweeps.quarter_chord     = 36.9 * Units.degrees  
    segment.thickness_to_chord       = 0.171
    segment.vsp_mesh                 = Data()
    segment.vsp_mesh.inner_radius    = 4.
    segment.vsp_mesh.outer_radius    = 4.
    segment.vsp_mesh.inner_length    = .14
    segment.vsp_mesh.outer_length    = .14     
    wing.Segments.append(segment)   
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                      = 'section_4'
    segment.percent_span_location    = 0.221
    segment.twist                    = 0. * Units.deg
    segment.root_chord_percent       = 0.624
    segment.dihedral_outboard        = 1.85 * Units.degrees
    segment.sweeps.quarter_chord     = 30.4 * Units.degrees    
    segment.thickness_to_chord       = 0.175
    segment.vsp_mesh                 = Data()
    segment.vsp_mesh.inner_radius    = 4.
    segment.vsp_mesh.outer_radius    = 2.8
    segment.vsp_mesh.inner_length    = .14
    segment.vsp_mesh.outer_length    = .14     
    wing.Segments.append(segment)       
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_5'
    segment.percent_span_location = 0.457
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.313
    segment.dihedral_outboard     = 1.85  * Units.degrees
    segment.sweeps.quarter_chord  = 30.85 * Units.degrees
    segment.thickness_to_chord    = 0.118
    wing.Segments.append(segment)       
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_6'
    segment.percent_span_location = 0.568
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.197
    segment.dihedral_outboard     = 1.85 * Units.degrees
    segment.sweeps.quarter_chord  = 34.3 * Units.degrees
    segment.thickness_to_chord    = 0.10
    wing.Segments.append(segment)     
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_7'
    segment.percent_span_location = 0.97
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.086
    segment.dihedral_outboard     = 73. * Units.degrees
    segment.sweeps.quarter_chord  = 55. * Units.degrees
    segment.thickness_to_chord    = 0.10
    wing.Segments.append(segment)      

    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'tip'
    segment.percent_span_location = 1
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.0241
    segment.dihedral_outboard     = 0. * Units.degrees
    segment.sweeps.quarter_chord  = 0. * Units.degrees
    segment.thickness_to_chord    = 0.10
    wing.Segments.append(segment)  

    # add to vehicle
    vehicle.append_component(wing)

    # ------------------------------------------------------------------
    #   Turbofan Network
    # ------------------------------------------------------------------
    #instantiate the gas turbine network
    turbofan     = SUAVE.Components.Energy.Networks.Turbofan()
    turbofan.tag = 'turbofan1'

    # setup
    turbofan.number_of_engines = 3.0
    turbofan.bypass_ratio      = 8.1
    turbofan.engine_length     = 289. * Units.inches
    turbofan.nacelle_diameter  = 3.96 * Units.meters
    #turbofan.cooling_ratio     = 1.0
    turbofan.origin            = [[133.0 *Units.feet, 25.0*Units.feet, 6.5*Units.feet],[145.0 *Units.feet, 0.0*Units.feet, 6.5*Units.feet],[133.0 *Units.feet, -25.0*Units.feet, 6.5*Units.feet]]
    
    # working fluid
    turbofan.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
    turbofan.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
    turbofan.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        = 1.1
    # add to network
    turbofan.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        = 23.0
    #compressor.hub_to_tip_ratio      = 0.325
    # add to network
    turbofan.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
    turbofan.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
    turbofan.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 = 1592. * Units.kelvin
    combustor.pressure_ratio            = 0.95
    combustor.fuel_data                 = SUAVE.Attributes.Propellants.Jet_A()
    # add to network
    turbofan.append(combustor)
    
    # ------------------------------------------------------------------
    #  Component 8 - Core Nozzle
    
    # instantiate
    nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    nozzle.tag = 'core_nozzle'
    # setup
    nozzle.polytropic_efficiency = 0.95
    nozzle.pressure_ratio        = 0.99 
    # add to network
    turbofan.append(nozzle)
    
    # ------------------------------------------------------------------
    #  Component 9 - Fan Nozzle
    
    # instantiate
    nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    nozzle.tag = 'fan_nozzle'
    # setup
    nozzle.polytropic_efficiency = 0.95
    nozzle.pressure_ratio        = 0.99 
    # add to network
    turbofan.append(nozzle)
    
    # ------------------------------------------------------------------
    #  Component 10 - Fan
    
    # instantiate
    fan = SUAVE.Components.Energy.Converters.Fan()
    fan.tag = 'fan'
    # setup
    fan.polytropic_efficiency = 0.93
    fan.pressure_ratio        = 1.58
    # add to network
    turbofan.append(fan)
    
    # ------------------------------------------------------------------
    #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.0*512000 * Units.N
    thrust.bypass_ratio  = 8.4
    
    #design sizing conditions
    altitude      = 0. * Units.km
    mach_number   = 0.01
    isa_deviation = 0.
    
    # add to network
    turbofan.thrust = thrust
    
    #size the turbofan
    turbofan_sizing(turbofan,mach_number,altitude)
    #turbofan.size(mach_number,altitude)
    
    #computing the engine length and diameter
    compute_turbofan_geometry(turbofan,None)
    
    vehicle.append_component(turbofan)  


    # ------------------------------------------------------------------
    #   Vehicle Definition Complete
    # ------------------------------------------------------------------

    return vehicle
Esempio n. 2
0
def engine_caluclations(altitude, bypass, mach_number, num_engine,
                        thrust_total):
    # initialize the gas turbine network

    gt_engine = Turbofan()
    gt_engine.tag = 'turbofan'
    gt_engine.number_of_engines = num_engine
    gt_engine.bypass_ratio = bypass
    # gt_engine.engine_length = 5.2
    gt_engine.nacelle_diameter = 3.5

    # set the working fluid for the network
    working_fluid = SUAVE.Attributes.Gases.Air

    # add working fluid to the network
    gt_engine.working_fluid = working_fluid

    # Component 1 : ram,  to convert freestream static to stagnation quantities
    ram = SUAVE.Components.Energy.Converters.Ram()
    ram.tag = 'ram'
    # add ram to the network
    gt_engine.ram = ram

    # Component 2 : inlet nozzle
    inlet_nozzle = SUAVE.Components.Energy.Converters.Compression_Nozzle()
    inlet_nozzle.tag = 'inlet nozzle'
    inlet_nozzle.polytropic_efficiency = 0.98
    inlet_nozzle.pressure_ratio = 0.98  # turbofan.fan_nozzle_pressure_ratio     = 0.98     #0.98
    # add inlet nozzle to the network
    gt_engine.inlet_nozzle = inlet_nozzle

    # Component 3 :low pressure compressor
    low_pressure_compressor = SUAVE.Components.Energy.Converters.Compressor()
    low_pressure_compressor.tag = 'lpc'
    low_pressure_compressor.polytropic_efficiency = 0.90
    low_pressure_compressor.pressure_ratio = 1.5
    # add low pressure compressor to the network
    gt_engine.low_pressure_compressor = low_pressure_compressor

    # Component 4 :high pressure compressor
    high_pressure_compressor = SUAVE.Components.Energy.Converters.Compressor()
    high_pressure_compressor.tag = 'hpc'
    high_pressure_compressor.polytropic_efficiency = 0.90  # FIXME
    high_pressure_compressor.pressure_ratio = 14
    # add the high pressure compressor to the network
    gt_engine.high_pressure_compressor = high_pressure_compressor

    # Component 5 :low pressure turbine
    low_pressure_turbine = Turbine_saga.Turbine()
    low_pressure_turbine.tag = 'lpt'
    low_pressure_turbine.mechanical_efficiency = 0.99
    low_pressure_turbine.polytropic_efficiency = 0.89
    # add low pressure turbine to the network
    gt_engine.low_pressure_turbine = low_pressure_turbine

    # Component 5 :high pressure turbine
    high_pressure_turbine = Turbine_saga.Turbine()
    high_pressure_turbine.tag = 'hpt'
    high_pressure_turbine.mechanical_efficiency = 0.99
    high_pressure_turbine.polytropic_efficiency = 0.89
    # add the high pressure turbine to the network
    gt_engine.high_pressure_turbine = high_pressure_turbine

    # Component 6 :combustor
    combustor = SUAVE.Components.Energy.Converters.Combustor()
    combustor.tag = 'Comb'
    combustor.efficiency = 0.995
    combustor.alphac = 1.0
    combustor.turbine_inlet_temperature = 1450
    combustor.pressure_ratio = 0.96
    combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A()
    # combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A()
    # add the combustor to the network
    gt_engine.combustor = combustor

    # Component 7 :core nozzle
    core_nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    core_nozzle.tag = 'core nozzle'
    core_nozzle.polytropic_efficiency = 0.95
    core_nozzle.pressure_ratio = 0.99
    # add the core nozzle to the network
    gt_engine.core_nozzle = core_nozzle

    # Component 8 :fan nozzle
    fan_nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    fan_nozzle.tag = 'fan nozzle'
    fan_nozzle.polytropic_efficiency = 0.95
    fan_nozzle.pressure_ratio = 0.99
    # add the fan nozzle to the network
    gt_engine.fan_nozzle = fan_nozzle

    # Component 9 : fan
    fan = SUAVE.Components.Energy.Converters.Fan()
    fan.tag = 'fan'
    fan.polytropic_efficiency = 0.89
    fan.pressure_ratio = 1.5
    # add the fan to the network
    gt_engine.fan = fan

    # Component 10 : Payload power draw

    generator = Generator()
    generator.tag = 'generator'
    generator.power_draw = 1 / gt_engine.number_of_engines
    gt_engine.generator = generator

    # Engine setup for noise module
    gt_engine.core_nozzle_diameter = 0.92
    gt_engine.fan_nozzle_diameter = 1.659
    gt_engine.engine_height = 1.35  # Engine centerline heigh above the ground plane
    gt_engine.exa = 1  # distance from fan face to fan exit/ fan diameter)
    gt_engine.plug_diameter = 0.1  # dimater of the engine plug
    gt_engine.geometry_xe = 1.  # Geometry information for the installation effects function
    gt_engine.geometry_ye = 1.  # Geometry information for the installation effects function
    gt_engine.geometry_Ce = 2.  # Geometry information for the installation effects function

    # Define OPR
    OPR = fan.pressure_ratio * high_pressure_compressor.pressure_ratio * low_pressure_compressor.pressure_ratio

    # 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 = thrust_total  # should be just a pointer not a number
    # add thrust to the network
    gt_engine.thrust = thrust
    gt_engine.OPR = OPR
    # print thrust
    # size the turbofan
    turbofan_sizing(gt_engine, mach_number, altitude)

    compute_turbofan_geometry(gt_engine, None)

    return gt_engine
Esempio n. 3
0
def engine_caluclations(altitude, bypass, mach_number, num_engine, thrust_total):
    # initialize the gas turbine network

    gt_engine = Turbofan()
    gt_engine.tag = 'turbofan'
    gt_engine.number_of_engines = num_engine
    gt_engine.bypass_ratio = bypass
    # gt_engine.engine_length = 5.2
    gt_engine.nacelle_diameter = 3.5

    # set the working fluid for the network
    working_fluid = SUAVE.Attributes.Gases.Air

    # add working fluid to the network
    gt_engine.working_fluid = working_fluid

    # Component 1 : ram,  to convert freestream static to stagnation quantities
    ram = SUAVE.Components.Energy.Converters.Ram()
    ram.tag = 'ram'
    # add ram to the network
    gt_engine.ram = ram

    # Component 2 : inlet nozzle
    inlet_nozzle = SUAVE.Components.Energy.Converters.Compression_Nozzle()
    inlet_nozzle.tag = 'inlet nozzle'
    inlet_nozzle.polytropic_efficiency = 0.98
    inlet_nozzle.pressure_ratio = 0.98  # turbofan.fan_nozzle_pressure_ratio     = 0.98     #0.98
    # add inlet nozzle to the network
    gt_engine.inlet_nozzle = inlet_nozzle

    # Component 3 :low pressure compressor
    low_pressure_compressor = SUAVE.Components.Energy.Converters.Compressor()
    low_pressure_compressor.tag = 'lpc'
    low_pressure_compressor.polytropic_efficiency = 0.90
    low_pressure_compressor.pressure_ratio = 1.5
    # add low pressure compressor to the network
    gt_engine.low_pressure_compressor = low_pressure_compressor

    # Component 4 :high pressure compressor
    high_pressure_compressor = SUAVE.Components.Energy.Converters.Compressor()
    high_pressure_compressor.tag = 'hpc'
    high_pressure_compressor.polytropic_efficiency = 0.90  # FIXME
    high_pressure_compressor.pressure_ratio = 14
    # add the high pressure compressor to the network
    gt_engine.high_pressure_compressor = high_pressure_compressor

    # Component 5 :low pressure turbine
    low_pressure_turbine = Turbine_saga.Turbine()
    low_pressure_turbine.tag = 'lpt'
    low_pressure_turbine.mechanical_efficiency = 0.99
    low_pressure_turbine.polytropic_efficiency = 0.89
    # add low pressure turbine to the network
    gt_engine.low_pressure_turbine = low_pressure_turbine

    # Component 5 :high pressure turbine
    high_pressure_turbine = Turbine_saga.Turbine()
    high_pressure_turbine.tag = 'hpt'
    high_pressure_turbine.mechanical_efficiency = 0.99
    high_pressure_turbine.polytropic_efficiency = 0.89
    # add the high pressure turbine to the network
    gt_engine.high_pressure_turbine = high_pressure_turbine

    # Component 6 :combustor
    combustor = SUAVE.Components.Energy.Converters.Combustor()
    combustor.tag = 'Comb'
    combustor.efficiency = 0.995
    combustor.alphac = 1.0
    combustor.turbine_inlet_temperature = 1450
    combustor.pressure_ratio = 0.96
    combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A()
    # combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A()
    # add the combustor to the network
    gt_engine.combustor = combustor

    # Component 7 :core nozzle
    core_nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    core_nozzle.tag = 'core nozzle'
    core_nozzle.polytropic_efficiency = 0.95
    core_nozzle.pressure_ratio = 0.99
    # add the core nozzle to the network
    gt_engine.core_nozzle = core_nozzle

    # Component 8 :fan nozzle
    fan_nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    fan_nozzle.tag = 'fan nozzle'
    fan_nozzle.polytropic_efficiency = 0.95
    fan_nozzle.pressure_ratio = 0.99
    # add the fan nozzle to the network
    gt_engine.fan_nozzle = fan_nozzle

    # Component 9 : fan
    fan = SUAVE.Components.Energy.Converters.Fan()
    fan.tag = 'fan'
    fan.polytropic_efficiency = 0.89
    fan.pressure_ratio = 1.5
    # add the fan to the network
    gt_engine.fan = fan

    # Component 10 : Payload power draw

    generator = Generator()
    generator.tag = 'generator'
    generator.power_draw = 1 / gt_engine.number_of_engines
    gt_engine.generator = generator

    # Engine setup for noise module
    gt_engine.core_nozzle_diameter = 0.92
    gt_engine.fan_nozzle_diameter = 1.659
    gt_engine.engine_height = 1.35  # Engine centerline heigh above the ground plane
    gt_engine.exa = 1  # distance from fan face to fan exit/ fan diameter)
    gt_engine.plug_diameter = 0.1  # dimater of the engine plug
    gt_engine.geometry_xe = 1.  # Geometry information for the installation effects function
    gt_engine.geometry_ye = 1.  # Geometry information for the installation effects function
    gt_engine.geometry_Ce = 2.  # Geometry information for the installation effects function

    # Define OPR
    OPR = fan.pressure_ratio * high_pressure_compressor.pressure_ratio * low_pressure_compressor.pressure_ratio

    # 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 = thrust_total  # should be just a pointer not a number
    # add thrust to the network
    gt_engine.thrust = thrust
    gt_engine.OPR = OPR
    # print thrust
    # size the turbofan
    turbofan_sizing(gt_engine, mach_number, altitude)

    compute_turbofan_geometry(gt_engine, None)

    return gt_engine
Esempio n. 4
0
def vehicle_setup():

    # ------------------------------------------------------------------
    #   Initialize the Vehicle
    # ------------------------------------------------------------------    

    vehicle = SUAVE.Vehicle()
    vehicle.tag = 'Boeing_BWB_450'    


    # ------------------------------------------------------------------
    #   Vehicle-level Properties
    # ------------------------------------------------------------------    

    # mass properties
    vehicle.mass_properties.max_takeoff               = 823000. * Units.lb
    vehicle.mass_properties.takeoff                   = 823000. * Units.lb
    vehicle.mass_properties.max_zero_fuel             = 0.9 * vehicle.mass_properties.max_takeoff
    vehicle.mass_properties.cargo                     = 0.  * Units.kilogram   

    # envelope properties
    vehicle.envelope.ultimate_load = 2.5
    vehicle.envelope.limit_load    = 1.5

    # basic parameters
    vehicle.reference_area         = 15680. * Units.feet**2       
    vehicle.passengers             = 450.
    vehicle.systems.control        = "fully powered" 
    vehicle.systems.accessories    = "medium range"


    # ------------------------------------------------------------------        
    #   Main Wing
    # ------------------------------------------------------------------        

    wing = SUAVE.Components.Wings.Main_Wing()
    wing.tag = 'main_wing'

    wing.aspect_ratio            = 289.**2 / (7840. * 2)
    wing.thickness_to_chord      = 0.15
    wing.taper                   = 0.0138
    wing.span_efficiency         = 0.95
    
    wing.spans.projected         = 289.0 * Units.feet    

    wing.chords.root             = 145.0 * Units.feet
    wing.chords.tip              = 3.5   * Units.feet
    wing.chords.mean_aerodynamic = 86.   * Units.feet

    wing.areas.reference         = 15680. * Units.feet**2   
    wing.sweeps.quarter_chord    = 33. * Units.degrees

    wing.twists.root             = 0.0 * Units.degrees
    wing.twists.tip              = 0.0 * Units.degrees
    wing.dihedral                = 2.5 * Units.degrees

    wing.origin                  = [0.,0.,0]
    wing.aerodynamic_center      = [0,0,0] 

    wing.vertical                = False
    wing.symmetric               = True
    wing.high_lift               = True

    wing.dynamic_pressure_ratio  = 1.0

    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_1'
    segment.percent_span_location = 0.0
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 1.
    segment.dihedral_outboard     = 0. * Units.degrees
    segment.sweeps.quarter_chord  = 30.0 * Units.degrees
    segment.thickness_to_chord    = 0.165 
    wing.Segments.append(segment)    
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_2'
    segment.percent_span_location = 0.052
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.921
    segment.dihedral_outboard     = 0.   * Units.degrees
    segment.sweeps.quarter_chord  = 52.5 * Units.degrees
    segment.thickness_to_chord    = 0.167    
    wing.Segments.append(segment)   

    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_3'
    segment.percent_span_location = 0.138
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.76
    segment.dihedral_outboard     = 1.85 * Units.degrees
    segment.sweeps.quarter_chord  = 36.9 * Units.degrees  
    segment.thickness_to_chord    = 0.171    
    wing.Segments.append(segment)   
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_4'
    segment.percent_span_location = 0.221
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.624
    segment.dihedral_outboard     = 1.85 * Units.degrees
    segment.sweeps.quarter_chord  = 30.4 * Units.degrees    
    segment.thickness_to_chord    = 0.175
    wing.Segments.append(segment)       
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_5'
    segment.percent_span_location = 0.457
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.313
    segment.dihedral_outboard     = 1.85  * Units.degrees
    segment.sweeps.quarter_chord  = 30.85 * Units.degrees
    segment.thickness_to_chord    = 0.118
    wing.Segments.append(segment)       
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_6'
    segment.percent_span_location = 0.568
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.197
    segment.dihedral_outboard     = 1.85 * Units.degrees
    segment.sweeps.quarter_chord  = 34.3 * Units.degrees
    segment.thickness_to_chord    = 0.10
    wing.Segments.append(segment)     
    
    segment = SUAVE.Components.Wings.Segment()
    segment.tag                   = 'section_7'
    segment.percent_span_location = 0.97
    segment.twist                 = 0. * Units.deg
    segment.root_chord_percent    = 0.086
    segment.dihedral_outboard     = 73. * Units.degrees
    segment.sweeps.quarter_chord  = 55. * Units.degrees
    segment.thickness_to_chord    = 0.10
    wing.Segments.append(segment)      

    # add to vehicle
    vehicle.append_component(wing)

    # ------------------------------------------------------------------
    #   Turbofan Network
    # ------------------------------------------------------------------
    
    #instantiate the gas turbine network

    turbofan     = SUAVE.Components.Energy.Networks.Turbofan()
    turbofan.tag = 'turbofan1'
    
    # setup
    turbofan.number_of_engines = 3.0
    turbofan.bypass_ratio      = 8.1
    turbofan.engine_length     = 289. * Units.inches
    turbofan.nacelle_diameter  = 3.96 * Units.meters
    turbofan.origin            = [[133.0 *Units.feet, 25.0*Units.feet, 6.5*Units.feet],[145.0 *Units.feet, 0.0*Units.feet, 6.5*Units.feet],[133.0 *Units.feet, -25.0*Units.feet, 6.5*Units.feet]]
    
    # working fluid
    turbofan.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
    turbofan.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
    turbofan.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        = 1.1
    
    # add to network
    turbofan.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        = 23.0
    #compressor.hub_to_tip_ratio      = 0.325
    
    # add to network
    turbofan.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
    turbofan.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
    turbofan.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 = 1592. * Units.kelvin
    combustor.pressure_ratio            = 0.95
    combustor.fuel_data                 = SUAVE.Attributes.Propellants.Jet_A()
    
    # add to network
    turbofan.append(combustor)
    
    # ------------------------------------------------------------------
    #  Component 8 - Core Nozzle
    
    # instantiate
    nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    nozzle.tag = 'core_nozzle'
    
    # setup
    nozzle.polytropic_efficiency = 0.95
    nozzle.pressure_ratio        = 0.99 
    
    # add to network
    turbofan.append(nozzle)
    
    # ------------------------------------------------------------------
    #  Component 9 - Fan Nozzle
    
    # instantiate
    nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    nozzle.tag = 'fan_nozzle'
    
    # setup
    nozzle.polytropic_efficiency = 0.95
    nozzle.pressure_ratio        = 0.99 
    
    # add to network
    turbofan.append(nozzle)
    
    # ------------------------------------------------------------------
    #  Component 10 - Fan
    
    # instantiate
    fan = SUAVE.Components.Energy.Converters.Fan()
    fan.tag = 'fan'
    
    # setup
    fan.polytropic_efficiency = 0.93
    fan.pressure_ratio        = 1.58
    #fan.hub_to_tip_ratio      = 0.325
    
    # add to network
    turbofan.append(fan)
    
    # ------------------------------------------------------------------
    #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  = 3.0*512000 * Units.N
    thrust.bypass_ratio  = 8.4
    
    #design sizing conditions
    altitude      = 0. * Units.km
    mach_number   = 0.01
    isa_deviation = 0.
    
    # add to network
    turbofan.thrust = thrust
    
    #size the turbofan
    turbofan_sizing(turbofan,mach_number,altitude)
    
    #computing the engine length and diameter
    compute_turbofan_geometry(turbofan,None)
    
    vehicle.append_component(turbofan)  


    # ------------------------------------------------------------------
    #   Vehicle Definition Complete
    # ------------------------------------------------------------------

    return vehicle
Esempio n. 5
0
def vehicle_setup():

    # ------------------------------------------------------------------
    #   Initialize the Vehicle
    # ------------------------------------------------------------------

    vehicle = SUAVE.Vehicle()
    vehicle.tag = 'Boeing_737_800'

    # ------------------------------------------------------------------
    #   Vehicle-level Properties
    # ------------------------------------------------------------------

    # mass properties
    vehicle.mass_properties.max_takeoff = 79015.8  # kg
    vehicle.mass_properties.takeoff = 79015.8  # kg
    vehicle.mass_properties.max_zero_fuel = 0.9 * vehicle.mass_properties.max_takeoff
    vehicle.mass_properties.cargo = 10000. * Units.kilogram

    # envelope properties
    vehicle.envelope.ultimate_load = 2.5
    vehicle.envelope.limit_load = 1.5

    # basic parameters
    vehicle.reference_area = 124.862
    vehicle.passengers = 170
    vehicle.systems.control = "fully powered"
    vehicle.systems.accessories = "medium range"

    # ------------------------------------------------------------------
    #   Main Wing
    # ------------------------------------------------------------------

    wing = SUAVE.Components.Wings.Main_Wing()
    wing.tag = 'main_wing'

    wing.aspect_ratio = 10.18  # Not set
    wing.thickness_to_chord = 0.1  # Not set
    wing.taper = 0.1
    wing.span_efficiency = 0.9

    wing.spans.projected = 34.32

    wing.chords.root = 7.760 * Units.meter
    wing.chords.tip = 0.782 * Units.meter
    wing.chords.mean_aerodynamic = 4.235 * Units.meter

    wing.areas.reference = 124.862  # Not set
    wing.sweeps.quarter_chord = 25. * Units.degrees

    wing.twists.root = 4.0 * Units.degrees
    wing.twists.tip = 0.0 * Units.degrees
    wing.dihedral = 2.5 * Units.degrees

    wing.origin = [13.61, 0, -1.27]
    wing.aerodynamic_center = [0, 0, 0]

    wing.vertical = False
    wing.symmetric = True
    wing.high_lift = True

    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 = 6.16  # Not set
    wing.thickness_to_chord = 0.08  # Not set
    wing.taper = 0.2
    wing.span_efficiency = 0.9

    wing.spans.projected = 14.2

    wing.chords.root = 4.70
    wing.chords.tip = 0.955
    wing.chords.mean_aerodynamic = 2.5

    wing.areas.reference = 42.65

    wing.twists.root = 0.0 * Units.degrees  # Not set
    wing.twists.tip = 0.0 * Units.degrees  # Not set

    wing.sweeps.quarter_chord = 40.0 * Units.degrees

    wing.origin = [32.83, 0, 1.14]
    wing.aerodynamic_center = [0, 0, 0]
    wing.dihedral = 8.63 * Units.degrees

    wing.vertical = False
    wing.symmetric = True

    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.91
    wing.sweeps.quarter_chord = 25. * Units.deg
    wing.thickness_to_chord = 0.08
    wing.taper = 0.25
    wing.span_efficiency = 0.9

    wing.spans.projected = 7.77

    wing.chords.root = 8.19
    wing.chords.tip = 0.95
    wing.chords.mean_aerodynamic = 4.0

    wing.areas.reference = 27.316

    wing.twists.root = 0.0 * Units.degrees
    wing.twists.tip = 0.0 * Units.degrees

    wing.origin = [28.79, 0, 1.54]
    wing.aerodynamic_center = [0, 0, 0]

    wing.vertical = True
    wing.symmetric = False
    wing.t_tail = False

    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 = 6
    fuselage.seat_pitch = 1

    fuselage.fineness.nose = 1.57
    fuselage.fineness.tail = 3.2

    fuselage.lengths.nose = 8.0
    fuselage.lengths.tail = 12.
    fuselage.lengths.cabin = 28.85
    fuselage.lengths.total = 38.02
    fuselage.lengths.fore_space = 6.
    fuselage.lengths.aft_space = 5.

    fuselage.width = 3.76

    fuselage.heights.maximum = 3.76
    fuselage.heights.at_quarter_length = 3.76
    fuselage.heights.at_three_quarters_length = 3.65
    fuselage.heights.at_wing_root_quarter_chord = 3.76

    fuselage.areas.side_projected = 142.1948
    fuselage.areas.wetted = 446.718
    fuselage.areas.front_projected = 12.57

    fuselage.effective_diameter = 3.76

    fuselage.differential_pressure = 5.0e4 * Units.pascal  # Maximum differential pressure

    # add to vehicle
    vehicle.append_component(fuselage)

    # ------------------------------------------------------------------
    #   Turbofan Network
    # ------------------------------------------------------------------

    #instantiate the gas turbine network
    turbofan = SUAVE.Components.Energy.Networks.Turbofan()
    turbofan.tag = 'turbofan'

    # setup
    turbofan.number_of_engines = 2.0
    turbofan.bypass_ratio = 5.4
    turbofan.engine_length = 4.1
    turbofan.nacelle_diameter = 0.85
    turbofan.origin = [[13.72, 4.86, -1.9], [13.72, -4.86, -1.9]]

    # working fluid
    turbofan.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
    turbofan.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 = 0.98

    # add to network
    turbofan.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 = 1.14

    # add to network
    turbofan.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 = 13.415

    # add to network
    turbofan.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
    turbofan.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
    turbofan.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 = 0.95
    combustor.fuel_data = SUAVE.Attributes.Propellants.Jet_A()

    # add to network
    turbofan.append(combustor)

    # ------------------------------------------------------------------
    #  Component 8 - Core Nozzle

    # instantiate
    nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    nozzle.tag = 'core_nozzle'

    # setup
    nozzle.polytropic_efficiency = 0.95
    nozzle.pressure_ratio = 0.99

    # add to network
    turbofan.append(nozzle)

    # ------------------------------------------------------------------
    #  Component 9 - Fan Nozzle

    # instantiate
    nozzle = SUAVE.Components.Energy.Converters.Expansion_Nozzle()
    nozzle.tag = 'fan_nozzle'

    # setup
    nozzle.polytropic_efficiency = 0.95
    nozzle.pressure_ratio = 0.99

    # add to network
    turbofan.append(nozzle)

    # ------------------------------------------------------------------
    #  Component 10 - Fan

    # instantiate
    fan = SUAVE.Components.Energy.Converters.Fan()
    fan.tag = 'fan'

    # setup
    fan.polytropic_efficiency = 0.93
    fan.pressure_ratio = 1.7

    # add to network
    turbofan.append(fan)

    # ------------------------------------------------------------------
    #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 * 24000. * Units.N  #Newtons

    #design sizing conditions
    altitude = 35000.0 * Units.ft
    mach_number = 0.78
    isa_deviation = 0.

    # add to network
    turbofan.thrust = thrust

    #size the turbofan
    turbofan_sizing(turbofan, mach_number, altitude)

    #computing the engine length and diameter
    compute_turbofan_geometry(turbofan, None)

    print "sls thrust : ", turbofan.sealevel_static_thrust
    print "engine length : ", turbofan.engine_length

    # add  gas turbine network gt_engine to the vehicle
    vehicle.append_component(turbofan)

    # ------------------------------------------------------------------
    #   Vehicle Definition Complete
    # ------------------------------------------------------------------

    return vehicle