Source code for RCAIDE.Library.Methods.Aerodynamics.Common.Drag.parasite_total
# RCAIDE/Methods/Aerodynamics/Common/Drag/parasite_drag_total.py
# (c) Copyright 2023 Aerospace Research Community LLC
#
# Created: Jun 2024, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
import RCAIDE
import numpy as np
# package imports
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# Total Parasite Drag
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def parasite_total(state,settings,geometry):
"""Sums up the parasite drags from all compoments
Assumptions:
None
Source:
None
Args:
state (dict): flight conditions [-]
settings (dict): analyses settings [-]
geometry (dict): aircraft data stucture [-]
conditions.aerodynamics.coefficients.drag.
parasite[wing.tag(s)].parasite_drag (numpy.ndarray): wing parasite drags [Unitless]
parasite[fuselage.tag(s)].parasite_drag (numpy.ndarray): fuselage parasite drags [Unitless]
parasite[boom.tag(s)].parasite_drag (numpy.ndarray): boom parasite drags [Unitless]
parasite[nacelle.tag(s)].parasite_drag (numpy.ndarray): nacelle parasite drags [Unitless]
parasite[pylon.tag(s)].parasite_drag (numpy.ndarray): pylon parasite drags [Unitless]
Returns:
None
"""
# unpack
conditions = state.conditions
vehicle_reference_area = geometry.reference_area
#compute parasite drag total
total_parasite_drag = 0.0
# renormalize parasite drag from wings using reference area of aircraft
for wing in geometry.wings:
wing_parasite_drag = conditions.aerodynamics.coefficients.drag.parasite[wing.tag].total
conditions.aerodynamics.coefficients.drag.parasite[wing.tag].total = wing_parasite_drag * wing.areas.reference/vehicle_reference_area
total_parasite_drag += wing_parasite_drag * wing.areas.reference/vehicle_reference_area
# renormalize parasite drag from fuselages using reference area of aircraft
for fuselage in geometry.fuselages:
if type(fuselage) == RCAIDE.Library.Components.Fuselages.Blended_Wing_Body_Fuselage:
continue
fuselage_parasite_drag = conditions.aerodynamics.coefficients.drag.parasite[fuselage.tag].total
conditions.aerodynamics.coefficients.drag.parasite[fuselage.tag].total = fuselage_parasite_drag * fuselage.areas.front_projected/vehicle_reference_area
total_parasite_drag += fuselage_parasite_drag * fuselage.areas.front_projected/vehicle_reference_area
# renormalize parasite drag from nacelles and pylons using reference area of aircraft
for network in geometry.networks:
for propulsor in network.propulsors:
if 'nacelle' in propulsor:
nacelle = propulsor.nacelle
ref_area = np.pi * nacelle.diameter * nacelle.length
nacelle_parasite_drag = conditions.aerodynamics.coefficients.drag.parasite[nacelle.tag].total
conditions.aerodynamics.coefficients.drag.parasite[nacelle.tag].total = nacelle_parasite_drag * nacelle_parasite_drag/vehicle_reference_area
total_parasite_drag += nacelle_parasite_drag * ref_area/vehicle_reference_area
if nacelle.has_pylon:
parasite_drag = conditions.aerodynamics.coefficients.drag.parasite[nacelle.tag + '_pylon'].total
conditions.aerodynamics.coefficients.drag.parasite[nacelle.tag + '_pylon'].total = parasite_drag * fuselage.areas.front_projected/vehicle_reference_area
total_parasite_drag += parasite_drag * ref_area/vehicle_reference_area
state.conditions.aerodynamics.coefficients.drag.parasite.total = total_parasite_drag * (1 - settings.drag_reduction_factors.parasite_drag)
return