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 Data
# ----------------------------------------------------------------------
# Compute drag of turbofan in windmilling condition
# ----------------------------------------------------------------------
[docs]
def windmilling_drag(geometry,state):
"""
Computes windmilling drag coefficient for turbofan engines in windmilling condition.
Parameters
----------
geometry : Vehicle
Vehicle geometry object containing:
- reference_area : float, optional
Reference area for drag coefficient calculation [m^2]
- wings : list
List of wing objects with sref attribute [m^2]
- networks : list
List of propulsion networks containing propulsors
- propulsors : list
List of propulsor objects with nacelle attributes
- nacelle : Nacelle, optional
Nacelle object with areas.wetted attribute [m^2]
state : State
State object to store results in conditions.aerodynamics.coefficients.drag.windmilling
Returns
-------
windmilling_drag_coefficient : float
Windmilling drag coefficient [unitless]
Notes
-----
This function calculates the windmilling drag coefficient for turbofan engines
when they are not producing thrust but are still rotating due to incoming airflow.
The calculation is based on empirical correlations from wind tunnel testing.
**Major Assumptions**
* Turbofan engines are in windmilling condition
* Drag is primarily due to nacelle wetted area
* Linear relationship between wetted area and drag coefficient
**Theory**
The windmilling drag coefficient is calculated using an empirical correlation:
:math:`C_{D,windmilling} = 0.007274 \\frac{S_{wet,nacelle}}{S_{ref}}`
where:
- :math:`C_{D,windmilling}` is the windmilling drag coefficient
- :math:`S_{wet,nacelle}` is the total wetted area of all nacelles [m²]
- :math:`S_{ref}` is the reference area [m²]
**Definitions**
'Windmilling'
Condition where a turbofan engine is not producing thrust but continues to rotate due to incoming airflow, typically during engine failure or shutdown scenarios.
'Wetted Area'
Total surface area of the nacelle exposed to the airflow, used as a proxy for the drag-producing surface area.
References
----------
[1] Askin, T. (2002). "Aircraft Engine Integration and Installation Effects." Virginia Tech Thesis. http://www.dept.aoe.vt.edu/~mason/Mason_f/AskinThesis2002_13.pdf
See Also
--------
RCAIDE.Library.Components.Wings.Main_Wing
"""
# ==============================================
# 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 propulsor.nacelle != None:
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