本文整理汇总了Python中SUAVE.Structure.Data.freestream方法的典型用法代码示例。如果您正苦于以下问题:Python Data.freestream方法的具体用法?Python Data.freestream怎么用?Python Data.freestream使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SUAVE.Structure.Data
的用法示例。
在下文中一共展示了Data.freestream方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: from SUAVE.Structure import Data [as 别名]
# 或者: from SUAVE.Structure.Data import freestream [as 别名]
def main():
# Setup and pack inputs, test several cases
conditions = Data()
conditions.frames = Data()
conditions.frames.body = Data()
conditions.frames.planet = Data()
conditions.frames.inertial = Data()
conditions.freestream = Data()
conditions.frames.body.inertial_rotations = np.zeros((4,3))
conditions.frames.planet.start_time = time.strptime("Thu, Mar 20 12:00:00 2014", "%a, %b %d %H:%M:%S %Y",)
conditions.frames.planet.latitude = np.array([[0.0],[35],[70],[0.0]])
conditions.frames.planet.longitude = np.array([[0.0],[0.0],[0.0],[0.0]])
conditions.frames.body.inertial_rotations[:,0] = np.array([0.0,np.pi/10,np.pi/5,0.0]) # Phi
conditions.frames.body.inertial_rotations[:,1] = np.array([0.0,np.pi/10,np.pi/5,0.0]) # Theta
conditions.frames.body.inertial_rotations[:,2] = np.array([0.0,np.pi/2,np.pi,0.0]) # Psi
conditions.freestream.altitude = np.array([[600000.0],[0.0],[60000],[1000]])
conditions.frames.inertial.time = np.array([[0.0],[0.0],[0.0],[43200]])
# Call solar radiation
rad = SUAVE.Components.Energy.Processes.Solar_Radiation()
fluxes = rad.solar_radiation(conditions)
print('Solar Fluxes')
print fluxes
truth_fluxes = [[ 1304.01069749],[ 815.02502004],[ 783.55678702],[0.0]]
max_error = np.max(np.abs(fluxes-truth_fluxes))
assert( max_error < 1e-5 )
return
示例2: estimate_landing_field_length
# 需要导入模块: from SUAVE.Structure import Data [as 别名]
# 或者: from SUAVE.Structure.Data import freestream [as 别名]
def estimate_landing_field_length(vehicle,config,airport):
""" SUAVE.Methods.Performance.estimate_landing_field_length(vehicle,config,airport):
Computes the landing field length for a given vehicle condition in a given airport
Inputs:
vehicle - SUAVE type vehicle
config - data dictionary with fields:
Mass_Properties.landing - Landing weight to be evaluated
S - Wing Area
Vref_VS_ratio - Ratio between Approach Speed and Stall speed
[optional. Default value = 1.23]
maximum_lift_coefficient - Maximum lift coefficient for the config
[optional. Calculated if not informed]
airport - SUAVE type airport data, with followig fields:
atmosphere - Airport atmosphere (SUAVE type)
altitude - Airport altitude
delta_isa - ISA Temperature deviation
Outputs:
landing_field_length - Landing field length
Assumptions:
- Landing field length calculated according to Torenbeek, E., "Advanced
Aircraft Design", 2013 (equation 9.25)
- Considering average aav/g values of two-wheel truck (0.40)
"""
# ==============================================
# Unpack
# ==============================================
atmo = airport.atmosphere
altitude = airport.altitude * Units.ft
delta_isa = airport.delta_isa
weight = config.mass_properties.landing
reference_area = config.reference_area
try:
Vref_VS_ratio = config.Vref_VS_ratio
except:
Vref_VS_ratio = 1.23
# ==============================================
# Computing atmospheric conditions
# ==============================================
p0, T0, rho0, a0, mu0 = atmo.compute_values(0)
p , T , rho , a , mu = atmo.compute_values(altitude)
T_delta_ISA = T + delta_isa
sigma_disa = (p/p0) / (T_delta_ISA/T0)
rho = rho0 * sigma_disa
a_delta_ISA = atmo.fluid_properties.compute_speed_of_sound(T_delta_ISA)
mu = 1.78938028e-05 * ((T0 + 120) / T0 ** 1.5) * ((T_delta_ISA ** 1.5) / (T_delta_ISA + 120))
sea_level_gravity = atmo.planet.sea_level_gravity
# ==============================================
# Determining vehicle maximum lift coefficient
# ==============================================
try: # aircraft maximum lift informed by user
maximum_lift_coefficient = config.maximum_lift_coefficient
except:
# Using semi-empirical method for maximum lift coefficient calculation
from SUAVE.Methods.Aerodynamics.Fidelity_Zero.Lift import compute_max_lift_coeff
# Condition to CLmax calculation: 90KTAS @ 10000ft, ISA
p_stall , T_stall , rho_stall , a_stall , mu_stall = atmo.compute_values(10000. * Units.ft)
conditions = Data()
conditions.freestream = Data()
conditions.freestream.density = rho_stall
conditions.freestream.viscosity = mu_stall
conditions.freestream.velocity = 90. * Units.knots
try:
maximum_lift_coefficient, induced_drag_high_lift = compute_max_lift_coeff(config,conditions)
config.maximum_lift_coefficient = maximum_lift_coefficient
except:
raise ValueError, "Maximum lift coefficient calculation error. Please, check inputs"
# ==============================================
# Computing speeds (Vs, Vref)
# ==============================================
stall_speed = (2 * weight * sea_level_gravity / (rho * reference_area * maximum_lift_coefficient)) ** 0.5
Vref = stall_speed * Vref_VS_ratio
# ========================================================================================
# Computing landing distance, according to Torenbeek equation
# Landing Field Length = k1 + k2 * Vref**2
# ========================================================================================
# Defining landing distance equation coefficients
try:
landing_constants = config.landing_constants # user defined
except: # default values - According to Torenbeek book
landing_constants = np.zeros(3)
landing_constants[0] = 250.
landing_constants[1] = 0.
landing_constants[2] = 2.485 / sea_level_gravity # Two-wheels truck : [ (1.56 / 0.40 + 1.07) / (2*sea_level_gravity) ]
## landing_constants[2] = 2.9725 / sea_level_gravity # Four-wheels truck: [ (1.56 / 0.32 + 1.07) / (2*sea_level_gravity) ]
# Calculating landing field length
#.........这里部分代码省略.........
示例3: estimate_take_off_field_length
# 需要导入模块: from SUAVE.Structure import Data [as 别名]
# 或者: from SUAVE.Structure.Data import freestream [as 别名]
#.........这里部分代码省略.........
# Using semi-empirical method for maximum lift coefficient calculation
from SUAVE.Methods.Aerodynamics.Lift.High_lift_correlations import compute_max_lift_coeff
# Condition to CLmax calculation: 90KTAS @ 10000ft, ISA
p_stall , T_stall , rho_stall , a_stall , mew_stall = atmo.compute_values(10000. * Units.ft)
conditions = Data()
conditions.rho = rho_stall
conditions.mew = mew_stall
conditions.V = 90. * Units.knots
try:
maximum_lift_coefficient, induced_drag_high_lift = compute_max_lift_coeff(config,conditions)
config.maximum_lift_coefficient = maximum_lift_coefficient
except:
raise ValueError, "Maximum lift coefficient calculation error. Please, check inputs"
# ==============================================
# Computing speeds (Vs, V2, 0.7*V2)
# ==============================================
stall_speed = (2 * weight * sea_level_gravity / (rho * reference_area * maximum_lift_coefficient)) ** 0.5
V2_speed = V2_VS_ratio * stall_speed
speed_for_thrust = 0.70 * V2_speed
# ==============================================
# Determining vehicle number of engines
# ==============================================
engine_number = 0.
for propulsor in vehicle.Propulsors : # may have than one propulsor
engine_number += propulsor.no_of_engines
if engine_number == 0:
raise ValueError, "No engine found in the vehicle"
# ==============================================
# Getting engine thrust
# ==============================================
#state = Data()
#state.q = np.atleast_1d(0.5 * rho * speed_for_thrust**2)
#state.g0 = np.atleast_1d(sea_level_gravity)
#state.V = np.atleast_1d(speed_for_thrust)
#state.M = np.atleast_1d(speed_for_thrust/ a_delta_ISA)
#state.T = np.atleast_1d(T_delta_ISA)
#state.p = np.atleast_1d(p)
eta = np.atleast_1d(1.)
conditions = Data()
conditions.freestream = Data()
conditions.propulsion = Data()
conditions.freestream.dynamic_pressure = np.array([np.atleast_1d(0.5 * rho * speed_for_thrust**2)])
conditions.freestream.gravity = np.array([np.atleast_1d(sea_level_gravity)])
conditions.freestream.velocity = np.array([np.atleast_1d(speed_for_thrust)])
conditions.freestream.mach_number = np.array([np.atleast_1d(speed_for_thrust/ a_delta_ISA)])
conditions.freestream.temperature = np.array([np.atleast_1d(T_delta_ISA)])
conditions.freestream.pressure = np.array([np.atleast_1d(p)])
conditions.propulsion.throttle = np.array([np.atleast_1d(1.)])
thrust, mdot, P = vehicle.propulsion_model(eta, conditions) # total thrust
# ==============================================
# Calculate takeoff distance
# ==============================================
# Defining takeoff distance equations coefficients
try:
takeoff_constants = config.takeoff_constants # user defined
except: # default values
takeoff_constants = np.zeros(3)
if engine_number == 2:
takeoff_constants[0] = 857.4
takeoff_constants[1] = 2.476
takeoff_constants[2] = 0.00014
elif engine_number == 3:
takeoff_constants[0] = 667.9
takeoff_constants[1] = 2.343
takeoff_constants[2] = 0.000093
elif engine_number == 4:
takeoff_constants[0] = 486.7
takeoff_constants[1] = 2.282
takeoff_constants[2] = 0.0000705
elif engine_number > 4:
takeoff_constants[0] = 486.7
takeoff_constants[1] = 2.282
takeoff_constants[2] = 0.0000705
print 'The vehicle has more than 4 engines. Using 4 engine correlation. Result may not be correct.'
else:
takeoff_constants[0] = 857.4
takeoff_constants[1] = 2.476
takeoff_constants[2] = 0.00014
print 'Incorrect number of engines: {0:.1f}. Using twin engine correlation.'.format(engine_number)
# Define takeoff index (V2^2 / (T/W)
takeoff_index = V2_speed**2 / (thrust / weight)
# Calculating takeoff field length
takeoff_field_length = 0.
for idx,constant in enumerate(takeoff_constants):
takeoff_field_length += constant * takeoff_index**idx
takeoff_field_length = takeoff_field_length * Units.ft
# return
return takeoff_field_length
示例4: main
# 需要导入模块: from SUAVE.Structure import Data [as 别名]
# 或者: from SUAVE.Structure.Data import freestream [as 别名]
def main():
vehicle = vehicle_setup() # Create the vehicle for testing
test_num = 11 # Length of arrays used in this test
# --------------------------------------------------------------------
# Test Lift Surrogate
# --------------------------------------------------------------------
AoA = np.linspace(-.174,.174,test_num) # +- 10 degrees
lift_model = vehicle.configs.cruise.aerodynamics_model.configuration.surrogate_models.lift_coefficient
wing_lift = lift_model(AoA)
wing_lift_r = np.array([-0.79420805, -0.56732369, -0.34043933, -0.11355497, 0.11332939,
0.34021374, 0.5670981 , 0.79398246, 1.02086682, 1.24775117,
1.47463553])
surg_test = np.abs((wing_lift-wing_lift_r)/wing_lift)
print 'Surrogate Test Results \n'
print surg_test
assert(np.max(surg_test)<1e-4), 'Aero regression failed at surrogate test'
# --------------------------------------------------------------------
# Initialize variables needed for CL and CD calculations
# Use a seeded random order for values
# --------------------------------------------------------------------
random.seed(1)
Mc = np.linspace(0.05,0.9,test_num)
random.shuffle(Mc)
rho = np.linspace(0.3,1.3,test_num)
random.shuffle(rho)
mu = np.linspace(5*10**-6,20*10**-6,test_num)
random.shuffle(mu)
T = np.linspace(200,300,test_num)
random.shuffle(T)
pressure = np.linspace(10**5,10**6,test_num)
conditions = Data()
conditions.freestream = Data()
conditions.freestream.mach_number = Mc
conditions.freestream.density = rho
conditions.freestream.viscosity = mu
conditions.freestream.temperature = T
conditions.freestream.pressure = pressure
conditions.aerodynamics = Data()
conditions.aerodynamics.angle_of_attack = AoA
conditions.aerodynamics.lift_breakdown = Data()
configuration = vehicle.configs.cruise.aerodynamics_model.configuration
conditions.aerodynamics.drag_breakdown = Data()
geometry = Data()
for k in ['fuselages','wings','propulsors']:
geometry[k] = deepcopy(vehicle[k])
geometry.reference_area = vehicle.reference_area
# --------------------------------------------------------------------
# Test compute Lift
# --------------------------------------------------------------------
compute_aircraft_lift(conditions, configuration, None) # geometry is third variable, not used
lift = conditions.aerodynamics.lift_breakdown.total
lift_r = np.array([-2.07712357, -0.73495391, -0.38858687, -0.1405849 , 0.22295808,
0.5075275 , 0.67883681, 0.92787301, 1.40470556, 2.08126751,
1.69661601])
lift_test = np.abs((lift-lift_r)/lift)
print '\nCompute Lift Test Results\n'
print lift_test
assert(np.max(lift_test)<1e-4), 'Aero regression failed at compute lift test'
# --------------------------------------------------------------------
# Test compute drag
# --------------------------------------------------------------------
compute_aircraft_drag(conditions, configuration, geometry)
# Pull calculated values
drag_breakdown = conditions.aerodynamics.drag_breakdown
# Only one wing is evaluated since they rely on the same function
cd_c = drag_breakdown.compressible['Main Wing'].compressibility_drag
cd_i = drag_breakdown.induced.total
cd_m = drag_breakdown.miscellaneous.total
cd_m_fuse_base = drag_breakdown.miscellaneous.fuselage_base
#.........这里部分代码省略.........
示例5: Data
# 需要导入模块: from SUAVE.Structure import Data [as 别名]
# 或者: from SUAVE.Structure.Data import freestream [as 别名]
# Fuselage
# ------------------------------------------------------------------
fuselage = SUAVE.Components.Fuselages.Fuselage()
fuselage.tag = 'Fuselage'
fuselage.number_coach_seats = 114 #
fuselage.seat_pitch = 0.7455 # m
fuselage.seats_abreast = 4 #
fuselage.fineness.nose = 2.0 #
fuselage.fineness.tail = 3.0 #
fuselage.fwdspace = 0 #
fuselage.aftspace = 0 #
fuselage.width = 3.0 #
fuselage.heights.maximum = 3.4 #
# add to vehicle
vehicle.append_component(fuselage)
conditions = Data()
conditions.freestream = Data()
conditions.freestream.mach_number = 0.3
conditions.freestream.velocity = 51. #m/s
conditions.freestream.density = 1.1225 #kg/m?
conditions.freestream.viscosity = 1.79E-05
Cl_max_ls, Cd_ind = compute_max_lift_coeff(vehicle,conditions)
print 'CLmax : ', Cl_max_ls, 'dCDi :' , Cd_ind
示例6: test
# 需要导入模块: from SUAVE.Structure import Data [as 别名]
# 或者: from SUAVE.Structure.Data import freestream [as 别名]
#.........这里部分代码省略.........
#Wing2.Cl = 0.2
Wing2.e = 0.9
Wing2.twist_rc = 3.0*numpy.pi/180
Wing2.twist_tc = 0.0*numpy.pi/180
aircraft.append_component(Wing2)
Wing3=Wing(tag = 'Wing3')
Wing3.sref = 32.488
Wing3.ar = 1.91
Wing3.span = 7.877
Wing3.sweep = 0.0*numpy.pi/180
Wing3.symmetric = False
Wing3.t_c = 0.08
Wing3.taper = 0.25
wing_planform(Wing3)
Wing3.chord_mac = 8.0
Wing3.S_exposed = 0.8*Wing3.area_wetted
Wing3.S_affected = 0.6*Wing3.area_wetted
#Wing3.Cl = 0.002
Wing3.e = 0.9
Wing3.twist_rc = 0.0*numpy.pi/180
Wing3.twist_tc = 0.0*numpy.pi/180
Wing3.vertical = True
aircraft.append_component(Wing3)
fus=Fuselage(tag = 'fuselage1')
fus.num_coach_seats = 200
fus.seat_pitch = 1
fus.seats_abreast = 6
fus.fineness_nose = 1.6
fus.fineness_tail = 2
fus.fwdspace = 6
fus.aftspace = 5
fus.width = 4
fus.height = 4
fuselage_planform(fus)
aircraft.append_component(fus)
turbofan=Turbofan()
turbofan.nacelle_dia= 4.0
aircraft.append_component(turbofan)
wing_aero = SUAVE.Attributes.Aerodynamics.Fidelity_Zero()
wing_aero.initialize(aircraft)
aircraft.Aerodynamics = wing_aero
Seg=Base_Segment()
Seg.p = 23900.0 # Pa
Seg.T = 218.0 # K
Seg.rho = 0.41 # kg/m^3
Seg.mew = 1.8*10**-5 # Ps-s
Seg.M = 0.8 # dimensionless
conditions = Data()
conditions.freestream = Data()
conditions.aerodynamics = Data()
# freestream conditions
#conditions.freestream.velocity = ones_1col * 0
conditions.freestream.mach_number = Seg.M
conditions.freestream.pressure = Seg.p
conditions.freestream.temperature = Seg.T
conditions.freestream.density = Seg.rho
#conditions.freestream.speed_of_sound = ones_1col * 0
conditions.freestream.viscosity = Seg.mew
#conditions.freestream.altitude = ones_1col * 0
#conditions.freestream.gravity = ones_1col * 0
#conditions.freestream.reynolds_number = ones_1col * 0
#conditions.freestream.dynamic_pressure = ones_1col * 0
# aerodynamics conditions
conditions.aerodynamics.angle_of_attack = 0.
conditions.aerodynamics.side_slip_angle = 0.
conditions.aerodynamics.roll_angle = 0.
conditions.aerodynamics.lift_coefficient = 0.
conditions.aerodynamics.drag_coefficient = 0.
conditions.aerodynamics.lift_breakdown = Data()
conditions.aerodynamics.drag_breakdown = Data()
[Cl,Cd]=aircraft.Aerodynamics(conditions)
print 'Aerodynamics module test script'
print 'aircraft Cl' , Cl
print 'aircraft Cd' , Cd
return
示例7: main
# 需要导入模块: from SUAVE.Structure import Data [as 别名]
# 或者: from SUAVE.Structure.Data import freestream [as 别名]
def main():
# ------------------------------------------------------------------
# Propulsor
# ------------------------------------------------------------------
# build network
net = Solar_Network()
net.number_motors = 1.
net.nacelle_dia = 0.2
# Component 1 the Sun?
sun = SUAVE.Components.Energy.Processes.Solar_Radiation()
net.solar_flux = sun
# Component 2 the solar panels
panel = SUAVE.Components.Energy.Converters.Solar_Panel()
panel.area = 100 * Units.m
panel.efficiency = 0.18
panel.mass_properties.mass = panel.area*.600
net.solar_panel = panel
# Component 3 the ESC
esc = SUAVE.Components.Energy.Distributors.Electronic_Speed_Controller()
esc.efficiency = 0.95 # Gundlach for brushless motors
net.esc = esc
# Component 5 the Propeller
#Propeller design specs
design_altitude = 0.0 * Units.km
Velocity = 10.0 # freestream m/s
RPM = 5887
Blades = 2.0
Radius = .4064
Hub_Radius = 0.05
Design_Cl = 0.7
Thrust = 0.0 #Specify either thrust or power to design for
Power = 7500. #Specify either thrust or power to design for
# Design the Propeller
prop_attributes = Data()
prop_attributes.number_blades = Blades
prop_attributes.freestream_velocity = Velocity
prop_attributes.angular_velocity = RPM*(2.*np.pi/60.0)
prop_attributes.tip_radius = Radius
prop_attributes.hub_radius = Hub_Radius
prop_attributes.design_Cl = Design_Cl
prop_attributes.design_altitude = design_altitude
prop_attributes.design_thrust = Thrust
prop_attributes.design_power = Power
prop_attributes = propeller_design(prop_attributes)
# Create and attach this propeller
prop = SUAVE.Components.Energy.Converters.Propeller()
prop.prop_attributes = prop_attributes
net.propeller = prop
# Component 4 the Motor
motor = SUAVE.Components.Energy.Converters.Motor()
motor.resistance = 0.01
motor.no_load_current = 8.0
motor.speed_constant = 140.*(2.*np.pi/60.) # RPM/volt converted to rad/s
motor.propeller_radius = prop.prop_attributes.tip_radius
motor.propeller_Cp = prop.prop_attributes.Cp
motor.gear_ratio = 1.
motor.gearbox_efficiency = 1.
motor.expected_current = 260.
motor.mass_properties.mass = 2.0
net.motor = motor
# Component 6 the Payload
payload = SUAVE.Components.Energy.Peripherals.Payload()
payload.power_draw = 0. #Watts
payload.mass_properties.mass = 0. * Units.kg
net.payload = payload
# Component 7 the Avionics
avionics = SUAVE.Components.Energy.Peripherals.Avionics()
avionics.power_draw = 0. #Watts
net.avionics = avionics
# Component 8 the Battery
bat = SUAVE.Components.Energy.Storages.Battery()
bat.mass_properties.mass = 50. #kg
bat.type = 'Li-Ion'
bat.resistance = 0.0
net.battery = bat
#Component 9 the system logic controller and MPPT
logic = SUAVE.Components.Energy.Distributors.Solar_Logic()
logic.system_voltage = 50.0
logic.MPPT_efficiency = 0.95
net.solar_logic = logic
# Setup the conditions to run the network
conditions = Data()
conditions.propulsion = Data()
conditions.freestream = Data()
conditions.frames = Data()
#.........这里部分代码省略.........
示例8: __defaults__
# 需要导入模块: from SUAVE.Structure import Data [as 别名]
# 或者: from SUAVE.Structure.Data import freestream [as 别名]
def __defaults__(self):
self.tag = 'Aerodynamic Segment'
# atmosphere and planet
self.planet = None
self.atmosphere = None
self.start_time = time.gmtime()
# --- Conditions and Unknowns
# user shouldn't change these in an input script
# only used for processing / post processing
# they will be shared with analysis modules and meaningful naming is important
# base matricies
# use a trivial operation to copy the array
ones_1col = np.ones([1,1])
ones_2col = np.ones([1,2])
ones_3col = np.ones([1,3])
# --- Conditions
# setup conditions
conditions = Data()
conditions.frames = Data()
conditions.freestream = Data()
conditions.aerodynamics = Data()
conditions.propulsion = Data()
conditions.weights = Data()
conditions.energies = Data()
self.conditions = conditions
# inertial frame conditions
conditions.frames.inertial = Data()
conditions.frames.inertial.position_vector = ones_3col * 0
conditions.frames.inertial.velocity_vector = ones_3col * 0
conditions.frames.inertial.acceleration_vector = ones_3col * 0
conditions.frames.inertial.gravity_force_vector = ones_3col * 0
conditions.frames.inertial.total_force_vector = ones_3col * 0
conditions.frames.inertial.time = ones_1col * 0
# wind frame conditions
conditions.frames.wind = Data()
conditions.frames.wind.body_rotations = ones_3col * 0 # rotations in [X,Y,Z] -> [phi,theta,psi]
conditions.frames.wind.velocity_vector = ones_3col * 0
conditions.frames.wind.lift_force_vector = ones_3col * 0
conditions.frames.wind.drag_force_vector = ones_3col * 0
conditions.frames.wind.transform_to_inertial = np.empty([0,0,0])
# body frame conditions
conditions.frames.body = Data()
conditions.frames.body.inertial_rotations = ones_3col * 0 # rotations in [X,Y,Z] -> [phi,theta,psi]
conditions.frames.body.thrust_force_vector = ones_3col * 0
conditions.frames.body.transform_to_inertial = np.empty([0,0,0])
# planet frame conditions
conditions.frames.planet = Data()
conditions.frames.planet.start_time = None
conditions.frames.planet.latitude = ones_1col * 0
conditions.frames.planet.longitude = ones_1col * 0
# freestream conditions
conditions.freestream.velocity = ones_1col * 0
conditions.freestream.mach_number = ones_1col * 0
conditions.freestream.pressure = ones_1col * 0
conditions.freestream.temperature = ones_1col * 0
conditions.freestream.density = ones_1col * 0
conditions.freestream.speed_of_sound = ones_1col * 0
conditions.freestream.viscosity = ones_1col * 0
conditions.freestream.altitude = ones_1col * 0
conditions.freestream.gravity = ones_1col * 0
conditions.freestream.reynolds_number = ones_1col * 0
conditions.freestream.dynamic_pressure = ones_1col * 0
# aerodynamics conditions
conditions.aerodynamics.angle_of_attack = ones_1col * 0
conditions.aerodynamics.side_slip_angle = ones_1col * 0
conditions.aerodynamics.roll_angle = ones_1col * 0
conditions.aerodynamics.lift_coefficient = ones_1col * 0
conditions.aerodynamics.drag_coefficient = ones_1col * 0
conditions.aerodynamics.lift_breakdown = Data()
conditions.aerodynamics.drag_breakdown = Data()
# propulsion conditions
conditions.propulsion.throttle = ones_1col * 0
conditions.propulsion.fuel_mass_rate = ones_1col * 0
conditions.propulsion.battery_energy = ones_1col * 0
conditions.propulsion.thrust_breakdown = Data()
# weights conditions
conditions.weights.total_mass = ones_1col * 0
conditions.weights.weight_breakdown = Data()
# energy conditions
conditions.energies.total_energy = ones_1col * 0
conditions.energies.total_efficiency = ones_1col * 0
conditions.energies.gravity_energy = ones_1col * 0
conditions.energies.propulsion_power = ones_1col * 0
#.........这里部分代码省略.........
示例9: main
# 需要导入模块: from SUAVE.Structure import Data [as 别名]
# 或者: from SUAVE.Structure.Data import freestream [as 别名]
def main():
# This script could fail if either the design or analysis scripts fail,
# in case of failure check both. The design and analysis powers will
# differ because of karman-tsien compressibility corrections in the
# analysis scripts
# Design the Propeller
prop_attributes = Data()
prop_attributes.number_blades = 2.0
prop_attributes.freestream_velocity = 50.0
prop_attributes.angular_velocity = 2000.*(2.*np.pi/60.0)
prop_attributes.tip_radius = 1.5
prop_attributes.hub_radius = 0.05
prop_attributes.design_Cl = 0.7
prop_attributes.design_altitude = 0.0 * Units.km
prop_attributes.design_thrust = 0.0
prop_attributes.design_power = 7000.
prop_attributes = propeller_design(prop_attributes)
# Find the operating conditions
atmosphere = SUAVE.Attributes.Atmospheres.Earth.US_Standard_1976()
p, T, rho, a, mu = atmosphere.compute_values(prop_attributes.design_altitude)
V = prop_attributes.freestream_velocity
conditions = Data()
conditions.freestream = Data()
conditions.propulsion = Data()
conditions.freestream.density = np.array([rho])
conditions.freestream.viscosity = np.array([mu])
conditions.freestream.velocity = np.array([[V]])
conditions.freestream.speed_of_sound = np.array([a])
conditions.freestream.temperature = np.array([T])
conditions.propulsion.throttle = np.array([[1.0]])
# Create and attach this propeller
prop = SUAVE.Components.Energy.Converters.Propeller()
prop.prop_attributes = prop_attributes
prop.inputs.omega = prop_attributes.angular_velocity
F, Q, P, Cplast = prop.spin(conditions)
# Truth values
F_truth = 166.41590262
Q_truth = 45.21732911
P_truth = 9470.2952633 # Over 9000!
Cplast_truth = 0.00085898
error = Data()
error.Thrust = np.max(np.abs(F-F_truth))
error.Power = np.max(np.abs(P-P_truth))
error.Torque = np.max(np.abs(Q-Q_truth))
error.Cp = np.max(np.abs(Cplast-Cplast_truth))
print error
for k,v in error.items():
assert(np.abs(v)<0.001)
return