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
from RCAIDE.Framework.Core import Data
# package imports
import numpy as np
[docs]
def extract_wing_collocation_points(VD,conditions,settings,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 - RCAIDE 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
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,0:wing_instance_idx])
start_pt = breaks[semispan_idx]
# Find the final index of the wing
end_semispan_idx = semispan_idx + 1 + sym[0,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 = np.tile(np.atleast_2d(np.array(len(VD_wing.XC[0]) )), (len(VD_wing.XC), 1))
VD_wing.n_cw = VD.n_cw[:,ids]
VD_wing.n_sw = VD.n_sw[:,ids]
return VD_wing, pt_ids