Source code for RCAIDE.Library.Methods.Aerodynamics.Common.Drag.wave_drag
# RCAIDE/Methods/Aerodynamics/Common/Drag/wave_drag.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# RCAIDE imports
import numpy as np
from RCAIDE.Library.Components.Wings import Main_Wing
# ----------------------------------------------------------------------
# Wave Drag
# ----------------------------------------------------------------------
[docs]
def wave_drag(conditions,wing):
"""Computes wave drag due to lift
Assumptions:
Main wing is the primary lift contributor
Source:
Yoshida, Kenji. "Supersonic drag reduction technology in the scaled supersonic
experimental airplane project by JAXA."
Args:
conditions.freestream.mach_number [Unitless]
conditions.aerodynamics.coefficients.lift [Unitless]
wing.spans.projected [m]
wing.total_length [m]
wing.aspect_ratio [-]
Returns:
wave_drag_lift [Unitless]
"""
# Unpack
freestream = conditions.freestream
Mach = freestream.mach_number * 1.0
# Lift coefficient
if isinstance(wing,Main_Wing):
CL = conditions.aerodynamics.coefficients.lift.total
l = np.maximum(wing.total_length,wing.chords.root)
else:
CL = np.zeros_like(conditions.aerodynamics.coefficients.lift.total)
l = np.maximum(wing.total_length,wing.chords.root)
# JAXA method
s = wing.spans.projected / 2
AR = wing.aspect_ratio
p = 2/AR*s/l
beta = np.sqrt(Mach[Mach >= 1.01]**2-1)
Kw = (1+1/p)*fw(beta*s/l)/(2*beta**2*(s/l)**2)
# Ignore area comparison since this is full vehicle CL
CDwl = CL[Mach >= 1.01]**2 * (beta**2/np.pi*p*(s/l)*Kw)
wave_drag_lift = np.zeros_like(Mach)
wave_drag_lift[Mach >= 1.01] = CDwl
return wave_drag_lift
[docs]
def fw(x):
"""Helper function for lift wave drag computations.
Assumptions:
N/A
Source:
Yoshida, Kenji. "Supersonic drag reduction technology in the scaled supersonic
experimental airplane project by JAXA."
Args:
x [Unitless]
Returns:
ret [Unitless]
Properties Used:
N/A
"""
ret = np.zeros_like(x)
ret[x > 0.178] = 0.4935 - 0.2382*x[x > 0.178] + 1.6306*x[x > 0.178]**2 - \
0.86*x[x > 0.178]**3 + 0.2232*x[x > 0.178]**4 - 0.0365*x[x > 0.178]**5 - 0.5
return ret