def main(): # new units style a = 4 * Units.mm # convert into base units b = a / Units.mm # convert out of base units engine = Data() wing = Data() aircraft = Data() fuselage = Data() horizontal = Data() vertical = Data() # Parameters Required aircraft.Nult = 1.5 * 2.5 # Ultimate load aircraft.TOW = 52300. * Units.kilograms # Maximum takeoff weight in kilograms aircraft.zfw = 42600. * Units.kilograms # Maximum zero fuel weight in kilograms aircraft.Nlim = 2.5 # Limit Load aircraft.num_eng = 2. # Number of engines on the aircraft aircraft.num_pax = 110. # Number of passengers aircraft.wt_cargo = 0. * Units.kilogram # Mass of cargo aircraft.num_seats = 110. # Number of seats on aircraft aircraft.ctrl = "partially powered" # Specify fully powered, partially powered or anything else is fully aerodynamic aircraft.ac = "medium-range" # Specify what type of aircraft you have aircraft.w2h = 16. * Units.meters # Length from the mean aerodynamic center of wing to mean aerodynamic center of the horizontal tail wing.gross_area = 92. * Units.meter**2 # Wing gross area in square meters wing.span = 27.8 * Units.meter # Span in meters wing.taper = 0.28 # Taper ratio wing.t_c = 0.105 # Thickness-to-chord ratio wing.sweep = 23.5 * Units.deg # sweep angle in degrees wing.c_r = 5.4 * Units.meter # Wing exposed root chord length wing.mac = 12. * Units.ft # Length of the mean aerodynamic chord of the wing fuselage.area = 320. * Units.meter**2 # Fuselage wetted area fuselage.diff_p = 8.5 * Units.force_pound / Units.inches**2 # Maximum differential pressure fuselage.width = 3. * Units.meter # Width of the fuselage fuselage.height = 3.35 * Units.meter # Height of the fuselage fuselage.length = 36.24 * Units.meter # Length of the fuselage engine.thrust_sls = 18500. * Units.force_pound # Define Thrust in Newtons horizontal.area = 26. * Units.meters**2 # Area of the horizontal tail horizontal.span = 12.08 * Units.meters # Span of the horizontal tail horizontal.sweep = 34.5 * Units.deg # Sweep of the horizontal tail horizontal.mac = 2.4 * Units.meters # Length of the mean aerodynamic chord of the horizontal tail horizontal.t_c = 0.11 # Thickness-to-chord ratio of the horizontal tail horizontal.exposed = 0.9 # Fraction of horizontal tail area exposed vertical.area = 16. * Units.meters**2 # Area of the vertical tail vertical.span = 5.3 * Units.meters # Span of the vertical tail vertical.t_c = 0.12 # Thickness-to-chord ratio of the vertical tail vertical.sweep = 35. * Units.deg # Sweep of the vertical tail vertical.t_tail = "no" # Set to "yes" for a T-tail aircraft.weight = Tube_Wing.empty(engine,wing,aircraft,fuselage,horizontal,vertical) outputWeight(aircraft,'weight_EMB190.dat')
def main(): #Parameters Required #Using values for a Boeing 747-200 vehicle = SUAVE.Vehicle() wing = SUAVE.Components.Wings.Wing() wing.tag = 'main_wing' wing.areas.reference = 5500.0 * Units.feet**2 wing.spans.projected = 196.0 * Units.feet wing.sweep = 42.0 * Units.deg # Leading edge wing.taper = 14.7/54.5 wing.aspect_ratio = wing.spans.projected**2/wing.areas.reference wing.symmetric = True wing.origin = np.array([0.0,0,3.6]) * Units.feet reference = SUAVE.Core.Container() vehicle.reference_area = wing.areas.reference vehicle.append_component(wing) lifting_surfaces = [] lifting_surfaces.append(wing) wing = SUAVE.Components.Wings.Wing() wing.tag = 'vertical_stabilizer' vertical = Data() vertical.span = 32.4 * Units.feet vertical.root_chord = 38.7 * Units.feet vertical.tip_chord = 13.4 * Units.feet vertical.sweep = 50.0 * Units.deg vertical.x_root_LE1 = 180.0 * Units.feet vertical.symmetric = False dz_centerline = 13.3 * Units.feet ref_vertical = extend_to_ref_area(vertical,dz_centerline) wing.areas.reference = ref_vertical.ref_area wing.spans.projected = ref_vertical.ref_span wing.sweep = 50.0 * Units.deg # leading edge wing.taper = vertical.tip_chord/ref_vertical.ref_root_chord wing.aspect_ratio = ref_vertical.ref_aspect_ratio wing.origin = np.array([vertical.x_root_LE1 + ref_vertical.root_LE_change,0.,0.]) * Units.feet wing.effective_aspect_ratio = 2.2 wing.symmetric= True wing.aerodynamic_center = np.array([trapezoid_ac_x(wing),0.0,0.0]) Mach = np.array([0.198]) wing.CL_alpha = datcom(wing,Mach) vehicle.append_component(wing) lifting_surfaces.append(wing) fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.tag = 'fuselage' fuselage.areas.side_projected = 4696.16 * Units.feet**2 fuselage.lengths.total = 229.7 * Units.feet fuselage.heights.maximum = 26.9 * Units.feet fuselage.width = 20.9 * Units.feet fuselage.heights.at_quarter_length = 26 * Units.feet fuselage.heights.at_three_quarters_length = 19.7 * Units.feet fuselage.heights.at_wing_root_quarter_chord = 15.8 * Units.feet vehicle.append_component(fuselage) configuration = Data() configuration.mass_properties = Data() configuration.mass_properties.center_of_gravity = Data() configuration.mass_properties.center_of_gravity = np.array([112.0,0,0]) * Units.feet segment = SUAVE.Analyses.Mission.Segments.Base_Segment() segment.freestream = Data() segment.freestream.mach_number = 0.198 segment.atmosphere = SUAVE.Attributes.Atmospheres.Earth.US_Standard_1976() altitude = 0.0 * Units.feet segment.a = segment.atmosphere.compute_values(altitude / Units.km, type="a") segment.freestream.density = segment.atmosphere.compute_values(altitude / Units.km, type="rho") segment.freestream.dynamic_viscosity = segment.atmosphere.compute_values(altitude / Units.km, type="mew") segment.freestream.velocity = segment.freestream.mach_number * segment.a #Method Test cn_b = taw_cnbeta(vehicle,segment,configuration) expected = -0.35 # Should be 0.184 error = Data() error.cn_b_747 = (cn_b-expected)/expected #Parameters Required #Using values for a Beechcraft Model 99 #MODEL DOES NOT ACCOUNT FOR DESTABILIZING EFFECTS OF PROPELLERS! """wing = SUAVE.Components.Wings.Wing() wing.area = 280.0 * Units.feet**2 wing.span = 46.0 * Units.feet wing.sweep_le = 3.0 * Units.deg wing.z_position = 2.2 * Units.feet wing.taper = 0.46 wing.aspect_ratio = wing.span**2/wing.area wing.symmetric = True fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.side_area = 185.36 * Units.feet**2 fuselage.length = 44.0 * Units.feet fuselage.h_max = 6.0 * Units.feet fuselage.w_max = 5.4 * Units.feet fuselage.height_at_vroot_quarter_chord = 2.9 * Units.feet fuselage.height_at_quarter_length = 4.8 * Units.feet fuselage.height_at_three_quarters_length = 4.3 * Units.feet nacelle = SUAVE.Components.Fuselages.Fuselage() nacelle.side_area = 34.45 * Units.feet**2 nacelle.x_front = 7.33 * Units.feet nacelle.length = 14.13 * Units.feet nacelle.h_max = 3.68 * Units.feet nacelle.w_max = 2.39 * Units.feet nacelle.height_at_quarter_length = 3.08 * Units.feet nacelle.height_at_three_quarters_length = 2.12 * Units.feet other_bodies = [nacelle,nacelle] vertical = SUAVE.Components.Wings.Wing() vertical.span = 6.6 * Units.feet vertical.root_chord = 8.2 * Units.feet vertical.tip_chord = 3.6 * Units.feet vertical.sweep_le = 47.0 * Units.deg vertical.x_root_LE1 = 34.8 * Units.feet vertical.symmetric = False dz_centerline = 2.0 * Units.feet ref_vertical = extend_to_ref_area(vertical,dz_centerline) vertical.span = ref_vertical.ref_span vertical.area = ref_vertical.ref_area vertical.aspect_ratio = ref_vertical.ref_aspect_ratio vertical.x_root_LE = vertical.x_root_LE1 + ref_vertical.root_LE_change vertical.taper = vertical.tip_chord/ref_vertical.ref_root_chord vertical.effective_aspect_ratio = 1.57 vertical.x_ac_LE = trapezoid_ac_x(vertical) aircraft = SUAVE.Vehicle() aircraft.wing = wing aircraft.fuselage = fuselage aircraft.other_bodies = other_bodies aircraft.vertical = vertical aircraft.Mass_Props.pos_cg[0] = 17.2 * Units.feet segment = SUAVE.Analyses.Mission.Segments.Base_Segment() segment.M = 0.152 segment.atmosphere = SUAVE.Attributes.Atmospheres.Earth.US_Standard_1976() altitude = 0.0 * Units.feet segment.a = segment.atmosphere.compute_values(altitude / Units.km, type="a") segment.rho = segment.atmosphere.compute_values(altitude / Units.km, type="rho") segment.mew = segment.atmosphere.compute_values(altitude / Units.km, type="mew") segment.v_inf = segment.M * segment.a #Method Test expected = 0.12 print 'Beech 99 at M = {0} and h = {1} meters'.format(segment.M, altitude) cn_b = taw_cnbeta(aircraft,segment) print 'Cn_beta = {0:.4f}'.format(cn_b) print 'Expected value = {}'.format(expected) print 'Percent Error = {0:.2f}%'.format(100.0*(cn_b-expected)/expected) print ' ' #Parameters Required #Using values for an SIAI Marchetti S-211 wing = SUAVE.Components.Wings.Wing() wing.area = 136.0 * Units.feet**2 wing.span = 26.3 * Units.feet wing.sweep_le = 19.5 * Units.deg wing.z_position = -1.1 * Units.feet wing.taper = 3.1/7.03 wing.aspect_ratio = wing.span**2/wing.area fuselage = SUAVE.Components.Fuselages.Fuselage() fuselage.side_area = 116.009 * Units.feet**2 fuselage.length = 30.9 * Units.feet fuselage.h_max = 5.1 * Units.feet fuselage.w_max = 5.9 * Units.feet fuselage.height_at_vroot_quarter_chord = 4.1 * Units.feet fuselage.height_at_quarter_length = 4.5 * Units.feet fuselage.height_at_three_quarters_length = 4.3 * Units.feet other_bodies = [] vertical = SUAVE.Components.Wings.Wing() vertical.span = 5.8 * Units.feet vertical.root_chord = 5.7 * Units.feet vertical.tip_chord = 2.0 * Units.feet vertical.sweep_le = 40.2 * Units.deg vertical.x_root_LE1 = 22.62 * Units.feet vertical.symmetric = False dz_centerline = 2.9 * Units.feet ref_vertical = extend_to_ref_area(vertical,dz_centerline) vertical.span = ref_vertical.ref_span vertical.area = ref_vertical.ref_area vertical.aspect_ratio = ref_vertical.ref_aspect_ratio vertical.x_root_LE = vertical.x_root_LE1 + ref_vertical.root_LE_change vertical.taper = vertical.tip_chord/ref_vertical.ref_root_chord vertical.effective_aspect_ratio = 2.65 vertical.x_ac_LE = trapezoid_ac_x(vertical) aircraft = SUAVE.Vehicle() aircraft.wing = wing aircraft.fuselage = fuselage aircraft.other_bodies = other_bodies aircraft.vertical = vertical aircraft.Mass_Props.pos_cg[0] = 16.6 * Units.feet segment = SUAVE.Analyses.Mission.Segments.Base_Segment() segment.M = 0.111 segment.atmosphere = SUAVE.Attributes.Atmospheres.Earth.US_Standard_1976() altitude = 0.0 * Units.feet segment.a = segment.atmosphere.compute_values(altitude / Units.km, type="a") segment.rho = segment.atmosphere.compute_values(altitude / Units.km, type="rho") segment.mew = segment.atmosphere.compute_values(altitude / Units.km, type="mew") segment.v_inf = segment.M * segment.a #Method Test print 'SIAI Marchetti S-211 at M = {0} and h = {1} meters'.format(segment.M, altitude) cn_b = taw_cnbeta(aircraft,segment) expected = 0.160 print 'Cn_beta = {0:.4f}'.format(cn_b) print 'Expected value = {}'.format(expected) print 'Percent Error = {0:.2f}%'.format(100.0*(cn_b-expected)/expected) print ' '""" for k,v in error.items(): assert(np.abs(v)<0.1) return