本文整理汇总了Python中SUAVE.Core.Data.wing方法的典型用法代码示例。如果您正苦于以下问题:Python Data.wing方法的具体用法?Python Data.wing怎么用?Python Data.wing使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SUAVE.Core.Data
的用法示例。
在下文中一共展示了Data.wing方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: empty
# 需要导入模块: from SUAVE.Core import Data [as 别名]
# 或者: from SUAVE.Core.Data import wing [as 别名]
def empty(vehicle):
""" Computes weights estimates for human powered aircraft
Assumptions:
All of this is from AIAA 89-2048, units are in kg. These weight estimates
are from the MIT Daedalus and are valid for very lightweight
carbon fiber composite structures. This may need to be solved iteratively since
gross weight is an input.
Source:
MIT Daedalus
Inputs:
wing - a data dictionary with the fields:
Sw - wing area [meters**2]
bw - wing span [meters]
cw - average wing chord [meters]
deltaw - average rib spacing to average chord ratio [dimensionless]
Nwr - number of wing surface ribs (bw**2)/(deltaw*Sw) [dimensionless]
t_cw - wing airfoil thickness to chord ratio [dimensionless]
Nwer - number of wing end ribs (2*number of individual wing panels -2) [dimensionless]
horizontal - a data dictionary with the fields:
Sts - tail surface area [meters]
bts - tail surface span [meters]
cts - average tail surface chord [meters]
deltawts - average rib spacing to average chord ratio [dimensionless]
Ntsr - number of tail surface ribs (bts^2)/(deltats*Sts) [dimensionless]
t_cts - tail airfoil thickness to chord ratio [dimensionless]
vertical - a data dictionary with the fields:
Sts - tail surface area [meters]
bts - tail surface span [meters]
cts - average tail surface chord [meters]
deltawts - average rib spacing to average chord ratio [dimensionless]
Ntsr - number of tail surface ribs (bts**2)/(deltats*Sts) [dimensionless]
t_cts - tail airfoil thickness to chord ratio [dimensionless]
aircraft - a data dictionary with the fields:
nult - ultimate load factor [dimensionless]
GW - aircraft gross weight [kilogram]
qm - dynamic pressure at maneuvering speed [Pascals]
Ltb - tailboom length [meters]
Outputs:
Wws - weight of wing spar [kilogram]
Wtss - weight of tail surface spar [kilogram]
Wwr - weight of wing ribs [kilogram]
Wtsr - weight of tail surface ribs [kilogram]
Wwer - weight of wing end ribs [kilogram]
WwLE - weight of wing leading edge [kilogram]
WtsLE - weight of tail surface leading edge [kilogram]
WwTE - weight of wing trailing edge [kilogram]
Wwc - weight of wing covering [kilogram]
Wtsc - weight of tail surface covering [kilogram]
Wtb - tailboom weight [kilogram]
Properties Used:
N/A
"""
#Unpack
nult = vehicle.envelope.ultimate_load
gw = vehicle.mass_properties.max_takeoff
qm = vehicle.envelope.maximum_dynamic_pressure
# Wing weight
if not vehicle.wings.has_key('main_wing'):
wt_wing = 0.0
warnings.warn("There is no Wing Weight being added to the Configuration", stacklevel=1)
else:
Sw = vehicle.wings['main_wing'].areas.reference
bw = vehicle.wings['main_wing'].spans.projected
cw = vehicle.wings['main_wing'].chords.mean_aerodynamic
Nwr = vehicle.wings['main_wing'].number_ribs
t_cw = vehicle.wings['main_wing'].thickness_to_chord
Nwer = vehicle.wings['main_wing'].number_end_ribs
wt_wing = wing.wing(Sw,bw,cw,Nwr,t_cw,Nwer,nult,gw)
vehicle.wings['main_wing'].mass_properties.mass = wt_wing
# Horizontal Tail weight
if not vehicle.wings.has_key('horizontal_stabilizer'):
wt_ht = 0.0
warnings.warn("There is no Horizontal Tail Weight being added to the Configuration", stacklevel=1)
else:
S_h = vehicle.wings['horizontal_stabilizer'].areas.reference
b_h = vehicle.wings['horizontal_stabilizer'].spans.projected
chs = vehicle.wings['horizontal_stabilizer'].chords.mean_aerodynamic
Nhsr = vehicle.wings['horizontal_stabilizer'].number_ribs
t_ch = vehicle.wings['horizontal_stabilizer'].thickness_to_chord
wt_ht = tail.tail(S_h,b_h,chs,Nhsr,t_ch,qm)
vehicle.wings['horizontal_stabilizer'].mass_properties.mass = wt_ht
# Vertical Tail weight
if not vehicle.wings.has_key('vertical_stabilizer'):
wt_vt = 0.0
warnings.warn("There is no Vertical Tail Weight being added to the Configuration", stacklevel=1)
else:
S_v = vehicle.wings['vertical_stabilizer'].areas.reference
#.........这里部分代码省略.........
示例2: main
# 需要导入模块: from SUAVE.Core import Data [as 别名]
# 或者: from SUAVE.Core.Data import wing [as 别名]
def main():
vehicle = vehicle_setup()
weight = Tube_Wing.empty(vehicle)
# regression values
actual = Data()
actual.payload = 27349.9081525 #includes cargo #17349.9081525 #without cargo
actual.pax = 15036.587065500002
actual.bag = 2313.3210870000003
actual.fuel = 12977.803363592691 #includes cargo #22177.6377131 #without cargo
actual.empty = 38688.08848390731
actual.wing = 6649.709658738429
actual.fuselage = 6642.061164271899
actual.propulsion = 6838.185174956626
actual.landing_gear = 3160.632
actual.systems = 13479.10479056802
actual.wt_furnish = 6431.80372889
actual.horizontal_tail = 1037.7414196819743
actual.vertical_tail = 629.0387683502595
actual.rudder = 251.61550734010382
# error calculations
error = Data()
error.payload = (actual.payload - weight.payload)/actual.payload
error.pax = (actual.pax - weight.pax)/actual.pax
error.bag = (actual.bag - weight.bag)/actual.bag
error.fuel = (actual.fuel - weight.fuel)/actual.fuel
error.empty = (actual.empty - weight.empty)/actual.empty
error.wing = (actual.wing - weight.wing)/actual.wing
error.fuselage = (actual.fuselage - weight.fuselage)/actual.fuselage
error.propulsion = (actual.propulsion - weight.propulsion)/actual.propulsion
error.landing_gear = (actual.landing_gear - weight.landing_gear)/actual.landing_gear
error.systems = (actual.systems - weight.systems)/actual.systems
error.wt_furnish = (actual.wt_furnish - weight.systems_breakdown.furnish)/actual.wt_furnish
error.horizontal_tail = (actual.horizontal_tail - weight.horizontal_tail)/actual.horizontal_tail
error.vertical_tail = (actual.vertical_tail - weight.vertical_tail)/actual.vertical_tail
error.rudder = (actual.rudder - weight.rudder)/actual.rudder
print('Results (kg)')
print(weight)
print('Relative Errors')
print(error)
for k,v in list(error.items()):
assert(np.abs(v)<1E-6)
#General Aviation weights; note that values are taken from Raymer,
#but there is a huge spread among the GA designs, so individual components
#differ a good deal from the actual design
vehicle = vehicle_setup_general_aviation()
GTOW = vehicle.mass_properties.max_takeoff
weight = General_Aviation.empty(vehicle)
weight.fuel = vehicle.fuel.mass_properties.mass
actual = Data()
actual.bag = 0.
actual.empty = 618.485310343
actual.fuel = 144.69596603
actual.wing = 124.673093906
actual.fuselage = 119.522072873
actual.propulsion = 194.477769922 #includes power plant and propeller, does not include fuel system
actual.landing_gear = 44.8033840543+5.27975390045
actual.furnishing = 37.8341395817
actual.electrical = 36.7532226254
actual.control_systems = 14.8331955546
actual.fuel_systems = 15.6859717453
actual.systems = 108.096549345
error = Data()
error.fuel = (actual.fuel - weight.fuel)/actual.fuel
error.empty = (actual.empty - weight.empty)/actual.empty
error.wing = (actual.wing - weight.wing)/actual.wing
error.fuselage = (actual.fuselage - weight.fuselage)/actual.fuselage
error.propulsion = (actual.propulsion - weight.propulsion)/actual.propulsion
error.landing_gear = (actual.landing_gear - (weight.landing_gear_main+weight.landing_gear_nose))/actual.landing_gear
error.furnishing = (actual.furnishing-weight.systems_breakdown.furnish)/actual.furnishing
error.electrical = (actual.electrical-weight.systems_breakdown.electrical)/actual.electrical
error.control_systems = (actual.control_systems-weight.systems_breakdown.control_systems)/actual.control_systems
error.fuel_systems = (actual.fuel_systems-weight.systems_breakdown.fuel_system)/actual.fuel_systems
error.systems = (actual.systems - weight.systems)/actual.systems
print('actual.systems=', actual.systems)
print('General Aviation Results (kg)')
print(weight)
print('Relative Errors')
print(error)
for k,v in list(error.items()):
assert(np.abs(v)<1e-6)
# BWB WEIGHTS
vehicle = bwb_setup()
weight = BWB.empty(vehicle)
# regression values
actual = Data()
#.........这里部分代码省略.........
示例3: main
# 需要导入模块: from SUAVE.Core import Data [as 别名]
# 或者: from SUAVE.Core.Data import wing [as 别名]
def main():
vehicle = vehicle_setup()
weight = Tube_Wing.empty(vehicle)
# regression values
actual = Data()
actual.payload = 27349.9081525 #includes cargo #17349.9081525 #without cargo
actual.pax = 15036.587065500002
actual.bag = 2313.3210870000003
actual.fuel = 12990.957450008464 #includes cargo #22177.6377131 #without cargo
actual.empty = 38674.934397491539
actual.wing = 6649.7096587384294
actual.fuselage = 6642.0611642718986
actual.propulsion = 6838.1851749566231
actual.landing_gear = 3160.632
actual.systems = 13479.10479056802
actual.wt_furnish = 6431.80372889
actual.horizontal_tail = 1024.5873332662029
actual.vertical_tail = 629.03876835025949
actual.rudder = 251.61550734010382
# error calculations
error = Data()
error.payload = (actual.payload - weight.payload)/actual.payload
error.pax = (actual.pax - weight.pax)/actual.pax
error.bag = (actual.bag - weight.bag)/actual.bag
error.fuel = (actual.fuel - weight.fuel)/actual.fuel
error.empty = (actual.empty - weight.empty)/actual.empty
error.wing = (actual.wing - weight.wing)/actual.wing
error.fuselage = (actual.fuselage - weight.fuselage)/actual.fuselage
error.propulsion = (actual.propulsion - weight.propulsion)/actual.propulsion
error.landing_gear = (actual.landing_gear - weight.landing_gear)/actual.landing_gear
error.systems = (actual.systems - weight.systems)/actual.systems
error.wt_furnish = (actual.wt_furnish - weight.systems_breakdown.furnish)/actual.wt_furnish
error.horizontal_tail = (actual.horizontal_tail - weight.horizontal_tail)/actual.horizontal_tail
error.vertical_tail = (actual.vertical_tail - weight.vertical_tail)/actual.vertical_tail
error.rudder = (actual.rudder - weight.rudder)/actual.rudder
print 'Results (kg)'
print weight
print 'Relative Errors'
print error
for k,v in error.items():
assert(np.abs(v)<1E-6)
#General Aviation weights; note that values are taken from Raymer,
#but there is a huge spread among the GA designs, so individual components
#differ a good deal from the actual design
vehicle = vehicle_setup_general_aviation()
GTOW = vehicle.mass_properties.max_takeoff
weight = General_Aviation.empty(vehicle)
weight.fuel = vehicle.fuel.mass_properties.mass
actual = Data()
actual.bag = 0.
actual.empty = 618.485310343
actual.fuel = 144.69596603
actual.wing = 124.673093906
actual.fuselage = 119.522072873
actual.propulsion = 194.477769922 #includes power plant and propeller, does not include fuel system
actual.landing_gear = 44.8033840543+5.27975390045
actual.furnishing = 37.8341395817
actual.electrical = 36.7532226254
actual.control_systems = 14.8331955546
actual.fuel_systems = 15.6859717453
actual.systems = 108.096549345
error = Data()
error.fuel = (actual.fuel - weight.fuel)/actual.fuel
error.empty = (actual.empty - weight.empty)/actual.empty
error.wing = (actual.wing - weight.wing)/actual.wing
error.fuselage = (actual.fuselage - weight.fuselage)/actual.fuselage
error.propulsion = (actual.propulsion - weight.propulsion)/actual.propulsion
error.landing_gear = (actual.landing_gear - (weight.landing_gear_main+weight.landing_gear_nose))/actual.landing_gear
error.furnishing = (actual.furnishing-weight.systems_breakdown.furnish)/actual.furnishing
error.electrical = (actual.electrical-weight.systems_breakdown.electrical)/actual.electrical
error.control_systems = (actual.control_systems-weight.systems_breakdown.control_systems)/actual.control_systems
error.fuel_systems = (actual.fuel_systems-weight.systems_breakdown.fuel_system)/actual.fuel_systems
error.systems = (actual.systems - weight.systems)/actual.systems
print 'actual.systems=', actual.systems
print 'General Aviation Results (kg)'
print weight
print 'Relative Errors'
print error
for k,v in error.items():
assert(np.abs(v)<1e-6)
return
示例4: main
# 需要导入模块: from SUAVE.Core import Data [as 别名]
# 或者: from SUAVE.Core.Data import wing [as 别名]
#.........这里部分代码省略.........
# 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)
# add gas turbine network gt_engine to the vehicle
vehicle.append_component(turbofan)
vehicle.passengers = 170. # Number of passengers
vehicle.mass_properties.cargo = 0. * Units.kilogram # Mass of cargo
vehicle.systems.control = "fully powered" # Specify fully powered, partially powered or anything else is fully aerodynamic
vehicle.systems.accessories = "medium-range" # Specify what type of aircraft you have
vehicle.reference_area = 124.862 * Units.meter**2 # Wing gross area in square meters
wing = SUAVE.Components.Wings.Wing()
wing.tag = 'main_wing'
wing.spans.projected = 50. * Units.meter # Span in meters
wing.taper = 0.2 # Taper ratio
wing.thickness_to_chord = 0.08 # Thickness-to-chord ratio
wing.sweep = .4363323 * Units.rad # sweep angle in degrees
wing.chords.root = 15. * Units.meter # Wing root chord length
wing.chords.mean_aerodynamic = 10. * Units.meters # Length of the mean aerodynamic chord of the wing
wing.origin = [20,0,0] * Units.meters # Location of main wing from origin of the vehicle
wing.aerodynamic_center = [3,0,0] * Units.meters # Location of aerodynamic center from origin of the main wing
vehicle.append_component(wing)
fuselage = SUAVE.Components.Fuselages.Fuselage()
fuselage.tag = 'fuselage'
fuselage.areas.wetted = 688.64 * Units.meter**2 # Fuselage wetted area
fuselage.differential_pressure = 55960.5 * Units.pascal # Maximum differential pressure
fuselage.width = 4. * Units.meter # Width of the fuselage
fuselage.heights.maximum = 4. * Units.meter # Height of the fuselage
fuselage.lengths.total = 58.4 * Units.meter # Length of the fuselage
fuselage.number_coach_seats = 200.
vehicle.append_component(fuselage)
wing = SUAVE.Components.Wings.Wing()
wing.tag = 'horizontal_stabilizer'
wing.areas.reference = 75. * Units.meters**2 # Area of the horizontal tail
wing.spans.projected = 15. * Units.meters # Span of the horizontal tail
wing.sweep = 38. * Units.deg # Sweep of the horizontal tail
wing.chords.mean_aerodynamic = 5. * Units.meters # Length of the mean aerodynamic chord of the horizontal tail
wing.thickness_to_chord = 0.07 # Thickness-to-chord ratio of the horizontal tail
wing.areas.exposed = 199.7792 # Exposed area of the horizontal tail
wing.areas.wetted = 249.724 # Wetted area of the horizontal tail
wing.origin = [45,0,0] # Location of horizontal tail from origin of the vehicle
wing.aerodynamic_center = [3,0,0] # Location of aerodynamic center from origin of the horizontal tail
示例5: main
# 需要导入模块: from SUAVE.Core import Data [as 别名]
# 或者: from SUAVE.Core.Data import wing [as 别名]
def main():
vehicle = SUAVE.Vehicle()# Create the vehicle for testing
# Parameters Required
vehicle.envelope.ultimate_load = 3.5 # Ultimate load
vehicle.mass_properties.max_takeoff = 79015.8 * Units.kilograms # Maximum takeoff weight in kilograms
vehicle.mass_properties.max_zero_fuel = 79015.8 * 0.9 * Units.kilograms # Maximum zero fuel weight in kilograms
vehicle.envelope.limit_load = 1.5 # Limit Load
turbofan = SUAVE.Components.Propulsors.TurboFanPASS()
turbofan.tag = 'turbo_fan'
turbofan.number_of_engines = 2. # Number of engines on the aircraft
turbofan.design_thrust = 200. * Units.newton # Define Thrust in Newtons
vehicle.append_component(turbofan)
vehicle.passengers = 170. # Number of passengers
vehicle.mass_properties.cargo = 0. * Units.kilogram # Mass of cargo
vehicle.systems.control = "fully powered" # Specify fully powered, partially powered or anything else is fully aerodynamic
vehicle.systems.accessories = "medium-range" # Specify what type of aircraft you have
vehicle.reference_area = 124.862 * Units.meter**2 # Wing gross area in square meters
wing = SUAVE.Components.Wings.Wing()
wing.tag = 'main_wing'
wing.spans.projected = 50. * Units.meter # Span in meters
wing.taper = 0.2 # Taper ratio
wing.thickness_to_chord = 0.08 # Thickness-to-chord ratio
wing.sweep = .4363323 * Units.rad # sweep angle in degrees
wing.chords.root = 15. * Units.meter # Wing root chord length
wing.chords.mean_aerodynamic = 10. * Units.meters # Length of the mean aerodynamic chord of the wing
wing.origin = [20,0,0] * Units.meters # Location of main wing from origin of the vehicle
wing.aerodynamic_center = [3,0,0] * Units.meters # Location of aerodynamic center from origin of the main wing
vehicle.append_component(wing)
fuselage = SUAVE.Components.Fuselages.Fuselage()
fuselage.tag = 'fuselage'
fuselage.areas.wetted = 688.64 * Units.meter**2 # Fuselage wetted area
fuselage.differential_pressure = 55960.5 * Units.pascal # Maximum differential pressure
fuselage.width = 4. * Units.meter # Width of the fuselage
fuselage.heights.maximum = 4. * Units.meter # Height of the fuselage
fuselage.lengths.total = 58.4 * Units.meter # Length of the fuselage
fuselage.number_coach_seats = 200.
vehicle.append_component(fuselage)
wing = SUAVE.Components.Wings.Wing()
wing.tag = 'horizontal_stabilizer'
wing.areas.reference = 75. * Units.meters**2 # Area of the horizontal tail
wing.spans.projected = 15. * Units.meters # Span of the horizontal tail
wing.sweep = 38. * Units.deg # Sweep of the horizontal tail
wing.chords.mean_aerodynamic = 5. * Units.meters # Length of the mean aerodynamic chord of the horizontal tail
wing.thickness_to_chord = 0.07 # Thickness-to-chord ratio of the horizontal tail
wing.areas.exposed = 199.7792 # Exposed area of the horizontal tail
wing.areas.wetted = 249.724 # Wetted area of the horizontal tail
wing.origin = [45,0,0] # Location of horizontal tail from origin of the vehicle
wing.aerodynamic_center = [3,0,0] # Location of aerodynamic center from origin of the horizontal tail
vehicle.append_component(wing)
wing = SUAVE.Components.Wings.Wing()
wing.tag = 'vertical_stabilizer'
wing.areas.reference = 60. * Units.meters**2 # Area of the vertical tail
wing.spans.projected = 15. * Units.meters # Span of the vertical tail
wing.thickness_to_chord = 0.07 # Thickness-to-chord ratio of the vertical tail
wing.sweep = 40. * Units.deg # Sweep of the vertical tail
wing.t_tail = "false" # Set to "yes" for a T-tail
vehicle.append_component(wing)
weight = Tube_Wing.empty(vehicle)
actual = Data()
actual.payload = 17349.9081525
actual.pax = 15036.5870655
actual.bag = 2313.321087
actual.fuel = -6993.89102491
actual.empty = 68659.7828724
actual.wing = 27694.192985
actual.fuselage = 11504.5186408
actual.propulsion = 88.3696093424
actual.landing_gear = 3160.632
actual.systems = 16655.7076511
actual.wt_furnish = 7466.1304102
actual.horizontal_tail = 2191.30720639
actual.vertical_tail = 5260.75341411
actual.rudder = 2104.30136565
error = Data()
error.payload = (actual.payload - weight.payload)/actual.payload
error.pax = (actual.pax - weight.pax)/actual.pax
error.bag = (actual.bag - weight.bag)/actual.bag
error.fuel = (actual.fuel - weight.fuel)/actual.fuel
error.empty = (actual.empty - weight.empty)/actual.empty
error.wing = (actual.wing - weight.wing)/actual.wing
error.fuselage = (actual.fuselage - weight.fuselage)/actual.fuselage
error.propulsion = (actual.propulsion - weight.propulsion)/actual.propulsion
error.landing_gear = (actual.landing_gear - weight.landing_gear)/actual.landing_gear
error.systems = (actual.systems - weight.systems)/actual.systems
error.wt_furnish = (actual.wt_furnish - weight.wt_furnish)/actual.wt_furnish
error.horizontal_tail = (actual.horizontal_tail - weight.horizontal_tail)/actual.horizontal_tail
error.vertical_tail = (actual.vertical_tail - weight.vertical_tail)/actual.vertical_tail
error.rudder = (actual.rudder - weight.rudder)/actual.rudder
for k,v in error.items():
#.........这里部分代码省略.........
示例6: empty
# 需要导入模块: from SUAVE.Core import Data [as 别名]
# 或者: from SUAVE.Core.Data import wing [as 别名]
def empty(vehicle):
""" weight = SUAVE.Methods.Weights.Correlations.Solar_HPA_weights.empty(wing,aircraft,horizontal,vertical):
Inputs:
wing - a data dictionary with the fields:
Sw - wing area [m**2]
bw - wing span [m]
cw - average wing chord [m]
deltaw - average rib spacing to average chord ratio
Nwr - number of wing surface ribs (bw**2)/(deltaw*Sw)
t_cw - wing airfoil thickness to chord ratio
Nwer - number of wing end ribs (2*number of individual wing panels -2)
horizontal - a data dictionary with the fields:
Sts - tail surface area (m)
bts - tail surface span (m)
cts - average tail surface chord (m)
deltawts - average rib spacing to average chord ratio
Ntsr - number of tail surface ribs (bts^2)/(deltats*Sts)
t_cts - tail airfoil thickness to chord ratio
vertical - a data dictionary with the fields:
Sts - tail surface area (m)
bts - tail surface span (m)
cts - average tail surface chord (m)
deltawts - average rib spacing to average chord ratio
Ntsr - number of tail surface ribs (bts**2)/(deltats*Sts)
t_cts - tail airfoil thickness to chord ratio
aircraft - a data dictionary with the fields:
nult - ultimate load factor
GW - aircraft gross weight
qm - dynamic pressure at maneuvering speed (N/m2)
Ltb - tailboom length (m)
Outputs:
Wws - weight of wing spar (kg)
Wtss - weight of tail surface spar (kg)
Wwr - weight of wing ribs (kg)
Wtsr - weight of tail surface ribs (kg)
Wwer - weight of wing end ribs (kg)
WwLE - weight of wing leading edge (kg)
WtsLE - weight of tail surface leading edge (kg)
WwTE - weight of wing trailing edge (kg)
Wwc - weight of wing covering (kg)
Wtsc - weight of tail surface covering (kg)
Wtb - tailboom weight (kg)
Assumptions:
All of this is from AIAA 89-2048, units are in kg. These weight estimates
are from the MIT Daedalus and are valid for very lightweight
carbon fiber composite structures. This may need to be solved iteratively since
gross weight is an input.
"""
#Unpack
nult = vehicle.envelope.ultimate_load
gw = vehicle.mass_properties.max_takeoff
qm = vehicle.qm
# Wing weight
if not vehicle.wings.has_key('main_wing'):
wt_wing = 0.0
warnings.warn("There is no Wing Weight being added to the Configuration", stacklevel=1)
else:
Sw = vehicle.wings['main_wing'].areas.reference
bw = vehicle.wings['main_wing'].spans.projected
cw = vehicle.wings['main_wing'].chords.mean_aerodynamic
Nwr = vehicle.wings['main_wing'].number_ribs
t_cw = vehicle.wings['main_wing'].thickness_to_chord
Nwer = vehicle.wings['main_wing'].number_end_ribs
wt_wing = wing.wing(Sw,bw,cw,Nwr,t_cw,Nwer,nult,gw)
vehicle.wings['main_wing'].mass_properties.mass = wt_wing
# Horizontal Tail weight
if not vehicle.wings.has_key('horizontal_stabilizer'):
wt_ht = 0.0
warnings.warn("There is no Horizontal Tail Weight being added to the Configuration", stacklevel=1)
else:
S_h = vehicle.wings['horizontal_stabilizer'].areas.reference
b_h = vehicle.wings['horizontal_stabilizer'].spans.projected
chs = vehicle.wings['horizontal_stabilizer'].chords.mean_aerodynamic
Nhsr = vehicle.wings['horizontal_stabilizer'].number_ribs
t_ch = vehicle.wings['horizontal_stabilizer'].thickness_to_chord
wt_ht = tail.tail(S_h,b_h,chs,Nhsr,t_ch,qm)
vehicle.wings['horizontal_stabilizer'].mass_properties.mass = wt_ht
# Vertical Tail weight
if not vehicle.wings.has_key('vertical_stabilizer'):
wt_vt = 0.0
warnings.warn("There is no Vertical Tail Weight being added to the Configuration", stacklevel=1)
else:
S_v = vehicle.wings['vertical_stabilizer'].areas.reference
b_v = vehicle.wings['vertical_stabilizer'].spans.projected
cvs = vehicle.wings['vertical_stabilizer'].chords.mean_aerodynamic
Nvsr = vehicle.wings['vertical_stabilizer'].number_ribs
t_cv = vehicle.wings['vertical_stabilizer'].thickness_to_chord
wt_vt = tail.tail(S_v,b_v,cvs,Nvsr,t_cv,qm)
#.........这里部分代码省略.........