Source code for RCAIDE.Library.Methods.Aerodynamics.Common.Drag.windmilling_drag
# ----------------------------------------------------------------------
# Imports
# ----------------------------------------------------------------------
# RCAIDE Imports
from RCAIDE import *
from RCAIDE import *
from RCAIDE.Library.Components import Wings
from RCAIDE.Framework.Core import Units, Data
# ----------------------------------------------------------------------
# Compute drag of turbofan in windmilling condition
# ----------------------------------------------------------------------
[docs]
def windmilling_drag(geometry,state):
"""Computes windmilling drag for turbofan engines
Assumptions:
None
Source:
http://www.dept.aoe.vt.edu/~mason/Mason_f/AskinThesis2002_13.pdf
Inputs:
geometry.
max_mach_operational [Unitless]
reference_area [m^2]
wings.sref [m^2]
networks.
areas.wetted [m^2]
length [m]
Outputs:
windmilling_drag_coefficient [Unitless]
Properties Used:
N/A
"""
# ==============================================
# Unpack
# ==============================================
vehicle = geometry
# Defining reference area
if vehicle.reference_area:
reference_area = vehicle.reference_area
else:
n_wing = 0
for wing in vehicle.wings:
if not isinstance(wing,Wings.Main_Wing): continue
n_wing = n_wing + 1
reference_area = wing.sref
if n_wing > 1:
print(' More than one Main_Wing in the vehicle. Last one will be considered.')
elif n_wing == 0:
print('No Main_Wing defined! Using the 1st wing found')
for wing in vehicle.wings:
if not isinstance(wing,Wings.Wing): continue
reference_area = wing.sref
break
# getting geometric data from engine (estimating when not available)
swet_nac = 0
for network in vehicle.networks:
for propulsor in network.propulsors:
if 'nacelle' in propulsor:
swet_nac += propulsor.nacelle.areas.wetted
# Compute
windmilling_drag_coefficient = 0.007274 * swet_nac / reference_area
# dump data to state
windmilling_result = Data(
wetted_area = swet_nac ,
total = windmilling_drag_coefficient ,
)
state.conditions.aerodynamics.coefficients.drag.windmilling = windmilling_result
return windmilling_drag_coefficient