Source code for RCAIDE.Library.Methods.Aerodynamics.Common.Drag.miscellaneous_drag

# RCAIDE/Library/Methods/Aerodynamics/Common/Drag/miscellaneous_drag.py 
# 
# Created:  Jun 2025, M. Clarke 

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ---------------------------------------------------------------------------------------------------------------------- 
  
from RCAIDE.Framework.Core                    import Data  

# package imports
import numpy as np

# ---------------------------------------------------------------------------------------------------------------------- 
#  Miscellaneous Drag Total
# ----------------------------------------------------------------------------------------------------------------------   
[docs] def miscellaneous_drag(state,settings,geometry): """ Computes the miscellaneous drag coefficient associated with aircraft components and configurations. Parameters ---------- state : Data Flight conditions containing: - conditions.freestream.mach_number : float Freestream Mach number [unitless] settings : dict Aerodynamic analysis settings and parameters geometry : Data Aircraft geometry containing: - reference_area : float Reference area for drag coefficient calculation [m²] - landing_gears : list List of landing gear objects containing: - gear_extended : bool Flag indicating if landing gear is deployed - fairing : bool Flag indicating if landing gear has fairings - wheels : int Number of wheels on the landing gear - tire_diameter : float Diameter of landing gear tires [m] - tire_width : float Width of landing gear tires [m] - wings : list List of wing objects containing: - areas.wetted : float Wetted area of the wing [m²] - fuselages : list List of fuselage objects containing: - areas.wetted : float Wetted area of the fuselage [m²] - booms : list List of boom objects containing: - areas.wetted : float Wetted area of the boom [m²] - networks : list List of propulsion networks containing propulsors - propulsors : list List of propulsor objects with nacelle attributes - nacelle : Nacelle, optional Nacelle object containing: - areas.wetted : float Wetted area of the nacelle [m²] - diameter : float Diameter of the nacelle [m] Returns ------- None Results are stored in state.conditions.aerodynamics.coefficients.drag.miscellaneous.total Notes ----- This function calculates the miscellaneous drag coefficient including landing gear drag, subsonic miscellaneous drag based on wetted area, and supersonic nacelle base drag and fuselage upsweep drag. The calculation method varies between subsonic and supersonic flight regimes. **Major Assumptions** * Landing gear drag is proportional to tire frontal area * Subsonic miscellaneous drag correlates with total wetted area * Supersonic drag includes nacelle base drag and fuselage upsweep effects * Landing gear fairings reduce drag by approximately 50% * Basic empirical correlations are valid for typical transport aircraft **Theory** Landing Gear Drag: The landing gear drag coefficient is calculated as: :math:`C_{D,LG} = \\sum_{i=1}^{n} N_{wheels,i} \\cdot C_{D,i} \\cdot \\frac{D_i \\cdot W_i}{S_{ref}}` where: - :math:`N_{wheels,i}` is the number of wheels on landing gear :math:`i` - :math:`C_{D,i}` is 0.15 for faired landing gear or 0.30 for unfaired - :math:`D_i` and :math:`W_i` are the tire diameter and width [m] - :math:`S_{ref}` is the reference area [m²] Subsonic Miscellaneous Drag: For Mach ≤ 1.0, the miscellaneous drag is: :math:`C_{D,misc} = \\frac{0.40(0.0184 + 0.000469 S_{wet} - 1.13 \\times 10^{-7} S_{wet}^2)}{S_{ref}}` where :math:`S_{wet}` is the total wetted area [m²]. Supersonic Miscellaneous Drag: For Mach > 1.0, the drag includes nacelle base drag and fuselage upsweep: :math:`C_{D,nacelle} = \\sum_{i=1}^{n} \\frac{0.5}{12} \\pi D_i \\cdot 0.2 / S_{ref}` :math:`C_{D,upsweep} = \\frac{0.006}{S_{ref}}` :math:`C_{D,misc} = C_{D,nacelle} + C_{D,upsweep}` **Definitions** 'Miscellaneous Drag' Drag component not accounted for by other drag categories, including landing gear, nacelle base, and fuselage upsweep effects. 'Landing Gear Drag' Additional drag caused by deployed landing gear, proportional to tire frontal area. 'Nacelle Base Drag' Drag caused by the base area of nacelles in supersonic flow. References ---------- [1] Stanford AA241 Course Notes. http://aerodesign.stanford.edu/aircraftdesign/aircraftdesign.html """ conditions = state.conditions S_ref = geometry.reference_area Mach = conditions.freestream.mach_number # landing gear drag landing_gear_drag = np.zeros_like(Mach) for landing_gear in geometry.landing_gears: if landing_gear.gear_extended == True: if landing_gear.fairing: cd_lg = 0.15 else: cd_lg = 0.30 landing_gear_drag[:,0] += landing_gear.wheels * cd_lg * (landing_gear.tire_diameter * landing_gear.tire_width) /S_ref # subsonic miscellaneous_drag = np.zeros_like(Mach) swet_tot = 0. for wing in geometry.wings: swet_tot += wing.areas.wetted for fuselage in geometry.fuselages: swet_tot += fuselage.areas.wetted for boom in geometry.booms: swet_tot += boom.areas.wetted for network in geometry.networks: for propulsor in network.propulsors: if propulsor.nacelle != None: swet_tot += propulsor.nacelle.areas.wetted miscellaneous_drag[:,0] = (0.40* (0.0184 + 0.000469 * swet_tot - 1.13*10**-7 * swet_tot ** 2)) / S_ref # supersonic fuselage_upsweep_drag = 0.006 /S_ref miscellaneous_drag[Mach>1] = fuselage_upsweep_drag # total misc drag total_miscellaneous_drag = miscellaneous_drag + landing_gear_drag # Store results conditions.aerodynamics.coefficients.drag.miscellaneous = Data( total = total_miscellaneous_drag) return