Source code for RCAIDE.Library.Methods.Aerodynamics.Vortex_Lattice_Method.extract_wing_collocation_points
# extract_wing_collocation_points.py
#
# Created: Feb 2022, R. Erhard
# Modified: Mar 2022, R. Erhard
# Apr 2022, E. Botero
# ----------------------------------------------------------------------
# Imports
# ----------------------------------------------------------------------
# RCAIDE imports
import RCAIDE
from RCAIDE.Framework.Core import Data
# package imports
import numpy as np
[docs]
def extract_wing_collocation_points(geometry, wing_instance_idx):
""" This extracts the collocation points of the vehicle vortex distribution
belonging to the specified wing instance index. This is useful for slipstream
analysis, where the wake of a propeller is included in the VLM analysis
of a specified wing in the vehicle.
Source:
None
Inputs:
geometry - SUAVE vehicle
wing_instance - wing instance tag
Outputs:
VD_wing - colocation points of vortex distribution for specified wing
ids - indices in the vortex distribution corresponding to specified wing
Properties Used:
N/A
"""
# unpack vortex distribution properties
try:
VD = geometry.vortex_distribution
except:
print("No vortex distribution defined. Creating default vortex distribution from vehicle.")
settings = RCAIDE.Framework.Analyses.Aerodynamics.Vortex_Lattice_Method().settings
VD = RCAIDE.Library.Methods.Aerodynamics.Vortex_Lattice_Method.generate_vortex_distribution(geometry,settings)
sym = VD.symmetric_wings
# Find the beginning and end indices of the wing
# all breaks
breaks = np.hstack([0,np.cumsum(VD.n_cw*VD.n_sw)])
# Find the initial index of the wing
semispan_idx = wing_instance_idx + np.sum(sym[0:wing_instance_idx])
start_pt = breaks[semispan_idx]
# Find the final index of the wing
end_semispan_idx = semispan_idx + 1 + sym[wing_instance_idx]
end_pt = breaks[end_semispan_idx]
# Make ranges of points
ids = range(semispan_idx, end_semispan_idx)
pt_ids = range(start_pt,end_pt)
# Pack the wing level resultss
VD_wing = Data()
VD_wing.XC = VD.XC[pt_ids]
VD_wing.YC = VD.YC[pt_ids]
VD_wing.ZC = VD.ZC[pt_ids]
VD_wing.XA1 = VD.XA1[pt_ids]
VD_wing.XA2 = VD.XA2[pt_ids]
VD_wing.XB1 = VD.XB1[pt_ids]
VD_wing.XB2 = VD.XB2[pt_ids]
VD_wing.YA1 = VD.YA1[pt_ids]
VD_wing.YA2 = VD.YA2[pt_ids]
VD_wing.YB1 = VD.YB1[pt_ids]
VD_wing.YB2 = VD.YB2[pt_ids]
VD_wing.ZA1 = VD.ZA1[pt_ids]
VD_wing.ZA2 = VD.ZA2[pt_ids]
VD_wing.ZB1 = VD.ZB1[pt_ids]
VD_wing.ZB2 = VD.ZB2[pt_ids]
VD_wing.n_cp = len(VD_wing.XC)
VD_wing.n_cw = VD.n_cw[ids]
VD_wing.n_sw = VD.n_sw[ids]
return VD_wing, pt_ids