Source code for RCAIDE.Library.Methods.Aerodynamics.Common.Drag.parasite_drag_pylon
# RCAIDE/Library/Methods/Aerodynamics/Common/Drag/pparasite_drag_pylon.py
# (c) Copyright 2023 Aerospace Research Community LLC
#
# Created: Jun 2024, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# RCAIDE imporst
from RCAIDE.Framework.Core import Data
# python imports
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# Pylon Drag Fuselage
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def parasite_drag_pylon(state,settings,geometry):
"""
Computes the parasite drag coefficient for pylons as a proportion of nacelle drag.
Parameters
----------
state : Data
Flight conditions and aerodynamic state containing:
- conditions.aerodynamics.coefficients.drag.parasite : dict
Dictionary of parasite drag data indexed by nacelle tag containing:
- total : float
Total parasite drag coefficient [unitless]
- wetted_area : float
Wetted area [m²]
- skin_friction : float
Skin friction coefficient [unitless]
- compressibility_factor : float
Compressibility correction factor [unitless]
- reynolds_factor : float
Reynolds number correction factor [unitless]
- form_factor : float
Form factor [unitless]
settings : dict
Aerodynamic analysis settings and parameters. Not used.
geometry : Data
Aircraft geometry containing:
- reference_area : float
Reference area for drag coefficient calculation [m²]
- networks : list
List of propulsion networks containing propulsors
- propulsors : list
List of propulsor objects with nacelle attributes
- nacelle : Nacelle, optional
Nacelle object containing:
- diameter : float
Diameter of the nacelle [m]
- has_pylon : bool
Flag indicating if nacelle has an associated pylon
- tag : str
Unique identifier for the nacelle
Returns
-------
None
Results are stored in state.conditions.aerodynamics.coefficients.drag.parasite[nacelle.tag + '_pylon']
Notes
-----
This function calculates the parasite drag coefficient for pylons based on the
corresponding nacelle drag characteristics. The pylon drag is estimated as a
proportion of the nacelle drag, accounting for the relative size and aerodynamic
characteristics of the pylon compared to the nacelle.
**Major Assumptions**
* Pylon drag is proportional to nacelle drag
* Pylon factor of 0.2 represents a typical pylon-to-nacelle drag ratio
* Pylon inherits aerodynamic characteristics from associated nacelle
* Pylon reference area is based on nacelle diameter
* Pylon drag scales with the ratio of pylon to aircraft reference areas
**Theory**
The pylon drag is calculated as a proportion of the nacelle drag:
:math:`C_{D,pylon} = f_{pylon} \\cdot C_{D,nacelle} \\cdot \\frac{S_{ref,pylon}}{S_{ref,aircraft}}`
where:
- :math:`f_{pylon} = 0.2` is the pylon factor
- :math:`C_{D,nacelle}` is the nacelle parasite drag coefficient
- :math:`S_{ref,pylon} = \\frac{\\pi d_{nacelle}^2}{4}` is the pylon reference area
- :math:`S_{ref,aircraft}` is the aircraft reference area
The pylon inherits the aerodynamic characteristics from the nacelle:
:math:`C_{f,pylon} = C_{f,nacelle}`
:math:`k_{comp,pylon} = k_{comp,nacelle}`
:math:`k_{reyn,pylon} = k_{reyn,nacelle}`
:math:`FF_{pylon} = FF_{nacelle}`
The pylon wetted area is scaled proportionally:
:math:`S_{wet,pylon} = f_{pylon} \\cdot S_{wet,nacelle}`
**Definitions**
'Pylon'
Structural support connecting an engine nacelle to the aircraft wing or fuselage.
References
----------
[1] Stanford AA241 Course Notes
"""
drag = state.conditions.aerodynamics.coefficients.drag
pylon_factor = 0.2
# Estimating pylon drag
for network in geometry.networks:
for propulsor in network.propulsors:
if propulsor.nacelle != None:
nacelle = propulsor.nacelle
if nacelle.has_pylon:
ref_area = nacelle.diameter**2 / 4 * np.pi
pylon_parasite_drag = pylon_factor * drag.parasite[nacelle.tag].total* (ref_area/geometry.reference_area)
pylon_wetted_area = pylon_factor * drag.parasite[nacelle.tag].wetted_area
pylon_cf = drag.parasite[nacelle.tag].skin_friction
pylon_compr_fact = drag.parasite[nacelle.tag].compressibility_factor
pylon_rey_fact = drag.parasite[nacelle.tag].reynolds_factor
pylon_FF = drag.parasite[nacelle.tag].form_factor
pylon_result = Data(
wetted_area = pylon_wetted_area ,
reference_area = geometry.reference_area ,
total = pylon_parasite_drag ,
skin_friction = pylon_cf ,
compressibility_factor = pylon_compr_fact ,
reynolds_factor = pylon_rey_fact ,
form_factor = pylon_FF , )
drag.parasite[ nacelle.tag + '_pylon'] = pylon_result
return