def main():
    
    vehicle  = vehicle_setup()
    configs  = configs_setup(vehicle)
    analyses = mission_B737.analyses_setup(configs)
    mission  = mission_setup(configs,analyses)
    
    configs.finalize()
    analyses.finalize()
    
    results = mission.evaluate()
    results = results.merged()
    
    plot_results(results)
    
    distance_regression = 4317710.33719722
    distance_calc       = results.conditions.frames.inertial.position_vector[-1,0]
    error_distance      = abs((distance_regression - distance_calc )/distance_regression)
    assert error_distance < 1e-6
    
    error_weight = abs(mission.target_landing_weight - results.conditions.weights.total_mass[-1,0])
    print('landing weight error' , error_weight)
    assert error_weight < 1e-6
    
    return
def main():

    vehicle = vehicle_setup()
    configs = configs_setup(vehicle)
    analyses = mission_B737.analyses_setup(configs)
    mission = mission_setup(configs, analyses)

    configs.finalize()
    analyses.finalize()

    results = mission.evaluate()
    results = results.merged()

    plot_results(results)

    distance_regression = 4317710.33719722
    distance_calc = results.conditions.frames.inertial.position_vector[-1, 0]
    error_distance = abs(
        (distance_regression - distance_calc) / distance_regression)
    assert error_distance < 1e-6

    error_weight = abs(mission.target_landing_weight -
                       results.conditions.weights.total_mass[-1, 0])
    print('landing weight error', error_weight)
    assert error_weight < 1e-6

    return
示例#3
0
def main():

    # vehicle data
    vehicle = vehicle_setup()
    configs = configs_setup(vehicle)

    # vehicle analyses
    configs_analyses = analyses_setup(configs)

    aerodynamics = SUAVE.Analyses.Aerodynamics.AVL()
    stability = SUAVE.Analyses.Stability.AVL()
    aerodynamics.geometry = copy.deepcopy(configs.cruise)
    stability.geometry = copy.deepcopy(configs.cruise)
    aerodynamics.process.compute.lift.inviscid.training_file = 'base_data_aerodynamics.txt'
    stability.training_file = 'base_data_stability.txt'
    configs_analyses.cruise.append(aerodynamics)
    configs_analyses.cruise.append(stability)

    # mission analyses
    mission = mission_setup(configs_analyses)
    missions_analyses = missions_setup(mission)

    analyses = SUAVE.Analyses.Analysis.Container()
    analyses.configs = configs_analyses
    analyses.missions = missions_analyses

    simple_sizing(configs, analyses)

    configs.finalize()
    analyses.finalize()

    # mission analysis
    mission = analyses.missions.base
    results = mission.evaluate()

    # lift coefficient check
    lift_coefficient = results.conditions.cruise.aerodynamics.lift_coefficient[
        0]
    lift_coefficient_true = 0.59571034
    print lift_coefficient
    diff_CL = np.abs(lift_coefficient - lift_coefficient_true)
    print 'CL difference'
    print diff_CL
    assert np.abs((lift_coefficient - lift_coefficient_true) /
                  lift_coefficient_true) < 1e-6

    # moment coefficient check
    moment_coefficient = results.conditions.cruise.stability.static.CM[0][0]
    moment_coefficient_true = -0.62167644
    print moment_coefficient
    diff_CM = np.abs(moment_coefficient - moment_coefficient_true)
    print 'CM difference'
    print diff_CM
    assert np.abs((moment_coefficient - moment_coefficient_true) /
                  moment_coefficient_true) < 1e-6

    return
示例#4
0
def main():

    # Setup for converging on weight

    vehicle = vehicle_setup()
    configs = configs_setup(vehicle)
    analyses = mission_B737.analyses_setup(configs)
    mission = mission_setup(configs, analyses)

    configs.finalize()
    analyses.finalize()

    results = mission.evaluate()
    results = results.merged()

    plot_results(results)

    distance_regression = 3804806.720225211
    distance_calc = results.conditions.frames.inertial.position_vector[-1, 0]
    print('distance_calc = ', distance_calc)
    error_distance = abs(
        (distance_regression - distance_calc) / distance_regression)
    assert error_distance < 1e-6

    error_weight = abs(mission.target_landing_weight -
                       results.conditions.weights.total_mass[-1, 0])
    print('landing weight error', error_weight)
    assert error_weight < 1e-6

    # Setup for converging on SOC, using the stopped rotor vehicle
    vehicle_SR, analyses_SR = full_setup_SR()
    analyses_SR.finalize()

    mission_SR = analyses_SR.mission
    results_SR = mission_SR.evaluate()
    results_SR = results_SR.merged()

    distance_regression_SR = 101649.83535243798

    distance_calc_SR = results_SR.conditions.frames.inertial.position_vector[
        -1, 0]
    print('distance_calc_SR = ', distance_calc_SR)
    error_distance_SR = abs(
        (distance_regression_SR - distance_calc_SR) / distance_regression_SR)
    assert error_distance_SR < 1e-6

    error_soc = abs(
        mission_SR.target_state_of_charge -
        results_SR.conditions.propulsion.battery_state_of_charge[-1, 0])
    print('landing state of charge error', error_soc)
    assert error_soc < 1e-6

    return
示例#5
0
def main():
    
    vehicle  = vehicle_setup()
    configs  = configs_setup(vehicle)
    analyses = mission_B737.analyses_setup(configs)
    mission  = mission_setup(configs,analyses)
    
    vehicle.mass_properties.takeoff = 70000 * Units.kg
    
    configs.finalize()
    analyses.finalize()
    
    results = mission.evaluate()
    results = results.merged()
    
    plot_results(results)
    
    error = abs(mission.target_landing_weight - results.conditions.weights.total_mass[-1,0])
    print 'landing weight error' , error
    assert error < 1.
    
    return
示例#6
0
def main():

    vehicle = mission_B737.vehicle_setup()
    configs = mission_B737.configs_setup(vehicle)
    analyses = mission_B737.analyses_setup(configs)
    mission = mission_setup(configs, analyses)

    vehicle.mass_properties.takeoff = 70000 * Units.kg

    configs.finalize()
    analyses.finalize()

    results = mission.evaluate()
    results = results.merged()

    plot_results(results)

    error = abs(mission.target_landing_weight -
                results.conditions.weights.total_mass[-1, 0])
    print 'landing weight error', error
    assert error < 1.

    return
示例#7
0
def main(): 
   
    # vehicle data
    vehicle  = vehicle_setup()
    configs  = configs_setup(vehicle)

    # vehicle analyses
    configs_analyses = analyses_setup(configs)

    # append AVL aerodynamic analysis
    aerodynamics                                               = SUAVE.Analyses.Aerodynamics.AVL()
    aerodynamics.process.compute.lift.inviscid.regression_flag = True
    aerodynamics.process.compute.lift.inviscid.keep_files      = True
    aerodynamics.geometry                                      = copy.deepcopy(configs.cruise) 
    aerodynamics.process.compute.lift.inviscid.training_file   = 'cruise_data_aerodynamics.txt'    
    configs_analyses.cruise.append(aerodynamics)     
    
    # append AVL stability analysis
    stability                                                  = SUAVE.Analyses.Stability.AVL()
    stability.regression_flag                                  = True
    stability.keep_files                                       = True
    stability.geometry                                         = copy.deepcopy(configs.cruise)
    stability.training_file                                    = 'cruise_data_stability.txt'    
    configs_analyses.cruise.append(stability)

    # ------------------------------------------------------------------
    #   Initialize the Mission
    # ------------------------------------------------------------------

    mission = SUAVE.Analyses.Mission.Sequential_Segments()
    mission.tag = 'the_mission'

    #airport
    airport = SUAVE.Attributes.Airports.Airport()
    airport.altitude   =  0.0  * Units.ft
    airport.delta_isa  =  0.0
    airport.atmosphere = SUAVE.Attributes.Atmospheres.Earth.US_Standard_1976()
    mission.airport = airport    

    # unpack Segments module
    Segments = SUAVE.Analyses.Mission.Segments

    # base segment
    base_segment = Segments.Segment()


    # ------------------------------------------------------------------    
    #   Cruise Segment: constant speed, constant altitude
    # ------------------------------------------------------------------    

    segment = Segments.Cruise.Constant_Speed_Constant_Altitude(base_segment)
    segment.tag = "cruise"

    segment.analyses.extend( configs_analyses.cruise )

    segment.air_speed = 230. * Units['m/s']
    segment.distance  = 4000. * Units.km
    segment.altitude  = 10.668 * Units.km
    
    segment.state.numerics.number_control_points = 4

    # add to mission
    mission.append_segment(segment)


    missions_analyses = missions_setup(mission)

    analyses = SUAVE.Analyses.Analysis.Container()
    analyses.configs  = configs_analyses
    analyses.missions = missions_analyses
    
    simple_sizing(configs, analyses)

    configs.finalize()
    analyses.finalize()
 
    # mission analysis
    mission = analyses.missions.base    
    results = mission.evaluate()

    # lift coefficient check
    lift_coefficient              = results.segments.cruise.conditions.aerodynamics.lift_coefficient[0][0]
    lift_coefficient_true         = 0.6118979131570086

    print(lift_coefficient)
    diff_CL                       = np.abs(lift_coefficient  - lift_coefficient_true) 
    print('CL difference')
    print(diff_CL)
    assert np.abs((lift_coefficient  - lift_coefficient_true)/lift_coefficient_true) < 1e-6
    
    # moment coefficient check
    moment_coefficient            = results.segments.cruise.conditions.stability.static.CM[0][0]
    moment_coefficient_true       = -0.6267104237340391

    print(moment_coefficient)
    diff_CM                       = np.abs(moment_coefficient - moment_coefficient_true)
    print('CM difference')
    print(diff_CM)
    assert np.abs((moment_coefficient - moment_coefficient_true)/moment_coefficient_true) < 1e-6    
 
    return
示例#8
0
def main():

    # vehicle data
    vehicle = vehicle_setup()
    configs = configs_setup(vehicle)

    # vehicle analyses
    configs_analyses = analyses_setup(configs)

    run_new_regression = False

    # append AVL aerodynamic analysis
    aerodynamics = SUAVE.Analyses.Aerodynamics.AVL()
    aerodynamics.settings.number_spanwise_vortices = 30
    aerodynamics.settings.keep_files = True
    aerodynamics.geometry = copy.deepcopy(configs.cruise)
    configs_analyses.cruise.append(aerodynamics)

    # append AVL stability analysis
    stability = SUAVE.Analyses.Stability.AVL()
    stability.settings.number_spanwise_vortices = 30
    stability.settings.keep_files = True
    stability.geometry = copy.deepcopy(configs.cruise)

    if run_new_regression:
        # append AVL aerodynamic analysis
        aerodynamics.settings.regression_flag = False
        aerodynamics.process.compute.lift.inviscid.settings.filenames.avl_bin_name = 'CHANGE/TO/AVL/PATH'
        aerodynamics.settings.save_regression_results = True
        stability.settings.regression_flag = False
        stability.settings.save_regression_results = True
        stability.settings.filenames.avl_bin_name = 'CHANGE/TO/AVL/PATH'

    else:
        aerodynamics.settings.regression_flag = True
        aerodynamics.settings.save_regression_results = False
        aerodynamics.settings.training_file = 'cruise_aero_data.txt'
        stability.settings.regression_flag = True
        stability.settings.save_regression_results = False
        stability.training_file = 'cruise_stability_data.txt'

    configs_analyses.cruise.append(aerodynamics)
    configs_analyses.cruise.append(stability)

    # ------------------------------------------------------------------
    #   Initialize the Mission
    # ------------------------------------------------------------------

    mission = SUAVE.Analyses.Mission.Sequential_Segments()
    mission.tag = 'the_mission'

    #airport
    airport = SUAVE.Attributes.Airports.Airport()
    airport.altitude = 0.0 * Units.ft
    airport.delta_isa = 0.0
    airport.atmosphere = SUAVE.Attributes.Atmospheres.Earth.US_Standard_1976()
    mission.airport = airport

    # unpack Segments module
    Segments = SUAVE.Analyses.Mission.Segments

    # base segment
    base_segment = Segments.Segment()

    # ------------------------------------------------------------------
    #   Cruise Segment: constant speed, constant altitude
    # ------------------------------------------------------------------

    segment = Segments.Cruise.Constant_Speed_Constant_Altitude(base_segment)
    segment.tag = "cruise"

    segment.analyses.extend(configs_analyses.cruise)

    segment.air_speed = 230. * Units['m/s']
    segment.distance = 4000. * Units.km
    segment.altitude = 10.668 * Units.km

    segment.state.numerics.number_control_points = 4

    # add to mission
    mission.append_segment(segment)

    missions_analyses = missions_setup(mission)

    analyses = SUAVE.Analyses.Analysis.Container()
    analyses.configs = configs_analyses
    analyses.missions = missions_analyses

    simple_sizing(configs, analyses)

    configs.finalize()
    analyses.finalize()

    # mission analysis
    mission = analyses.missions.base
    results = mission.evaluate()

    # lift coefficient check
    lift_coefficient = results.segments.cruise.conditions.aerodynamics.lift_coefficient[
        0][0]
    lift_coefficient_true = 0.6124936427552575

    print(lift_coefficient)
    diff_CL = np.abs(lift_coefficient - lift_coefficient_true)
    print('CL difference')
    print(diff_CL)
    assert np.abs((lift_coefficient - lift_coefficient_true) /
                  lift_coefficient_true) < 1e-6

    # moment coefficient check
    moment_coefficient = results.segments.cruise.conditions.stability.static.CM[
        0][0]
    moment_coefficient_true = -0.5764235338199974

    print(moment_coefficient)
    diff_CM = np.abs(moment_coefficient - moment_coefficient_true)
    print('CM difference')
    print(diff_CM)
    assert np.abs((moment_coefficient - moment_coefficient_true) /
                  moment_coefficient_true) < 1e-6
    return
示例#9
0
文件: test_AVL.py 项目: michK/SUAVE
def main(): 
   
    # vehicle data
    vehicle  = vehicle_setup()
    configs  = configs_setup(vehicle)

    # vehicle analyses
    configs_analyses = analyses_setup(configs)

    # append AVL aerodynamic analysis
    aerodynamics                                               = SUAVE.Analyses.Aerodynamics.AVL()
    aerodynamics.process.compute.lift.inviscid.regression_flag = True
    aerodynamics.process.compute.lift.inviscid.keep_files      = True
    aerodynamics.geometry                                      = copy.deepcopy(configs.cruise) 
    aerodynamics.process.compute.lift.inviscid.training_file   = 'cruise_data_aerodynamics.txt'    
    configs_analyses.cruise.append(aerodynamics)     
    
    # append AVL stability analysis
    stability                                                  = SUAVE.Analyses.Stability.AVL()
    stability.regression_flag                                  = True 
    stability.keep_files                                       = True
    stability.geometry                                         = copy.deepcopy(configs.cruise)
    stability.training_file                                    = 'cruise_data_stability.txt'    
    configs_analyses.cruise.append(stability)

    # mission analyses
    mission  = mission_setup(configs_analyses)
    missions_analyses = missions_setup(mission)

    analyses = SUAVE.Analyses.Analysis.Container()
    analyses.configs  = configs_analyses
    analyses.missions = missions_analyses
    
    simple_sizing(configs, analyses)

    configs.finalize()
    analyses.finalize()
 
    # mission analysis
    mission = analyses.missions.base    
    results = mission.evaluate()

    # lift coefficient check
    lift_coefficient              = results.conditions.cruise.aerodynamics.lift_coefficient[0]
    lift_coefficient_true         = 0.59495841
    print lift_coefficient
    diff_CL                       = np.abs(lift_coefficient  - lift_coefficient_true) 
    print 'CL difference'
    print diff_CL
    assert np.abs((lift_coefficient  - lift_coefficient_true)/lift_coefficient_true) < 1e-3
    
    # moment coefficient check
    moment_coefficient            = results.conditions.cruise.stability.static.CM[0][0]
    moment_coefficient_true       = -0.620326644
    print moment_coefficient
    diff_CM                       = np.abs(moment_coefficient - moment_coefficient_true)
    print 'CM difference'
    print diff_CM
    assert np.abs((moment_coefficient - moment_coefficient_true)/moment_coefficient_true) < 1e-3    
 
    return