Source code for RCAIDE.Library.Methods.Aerodynamics.Athena_Vortex_Lattice.evaluate_AVL
# RCAIDE/Library/Methods/Aerodynamics/Vortex_Lattice_Method/evaluate_AVL_surrogate.py
#
# Created: Oct 2024, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# RCAIDE imports
from RCAIDE.Framework.Core import Data
from RCAIDE.Library.Methods.Aerodynamics.Athena_Vortex_Lattice.run_AVL_analysis import run_AVL_analysis
# package imports
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# Vortex_Lattice
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def evaluate_AVL_surrogate(state,settings,vehicle):
"""Evaluates surrogates forces and moments using built surrogates
Assumptions:
None
Source:
None
Args:
aerodynamics : VLM analysis [unitless]
state : flight conditions [unitless]
settings : VLM analysis settings [unitless]
vehicle : vehicle configuration [unitless]
Returns:
None
"""
conditions = state.conditions
aerodynamics = state.analyses.aerodynamics
Mach = conditions.freestream.mach_number
AoA = conditions.aerodynamics.angles.alpha
lift_model = aerodynamics.surrogates.Clift_alpha
lift_y_model = aerodynamics.surrogates.Clift_spanwise
drag_model = aerodynamics.surrogates.Cdrag_induced_alpha
e_model = aerodynamics.surrogates.span_efficincy
Cm_alpha_model = aerodynamics.surrogates.dCM_dalpha
Cn_beta_model = aerodynamics.surrogates.dCN_dbeta
neutral_point_model = aerodynamics.surrogates.neutral_point
cg = vehicle.mass_properties.center_of_gravity[0]
MAC = vehicle.wings.main_wing.chords.mean_aerodynamic
pts = np.hstack((AoA,Mach))
conditions.aerodynamics.coefficients.lift.inviscid.total = np.atleast_2d(lift_model(pts)).T
conditions.aerodynamics.coefficients.drag.induced.inviscid = np.atleast_2d(drag_model(pts)).T
conditions.aerodynamics.span_efficiency = np.atleast_2d(e_model(pts)).T
conditions.static_stability.derivatives.CM_alpha = np.atleast_2d(Cm_alpha_model(pts)).T
conditions.static_stability.derivatives.CN_beta = np.atleast_2d(Cn_beta_model(pts)).T
conditions.static_stability.neutral_point = np.atleast_2d(neutral_point_model(pts)).T
conditions.aerodynamics.coefficients.lift.spanwise = np.atleast_2d(lift_y_model(pts))
conditions.static_stability.static_margin = (conditions.static_stability.neutral_point - cg)/MAC
aerodynamics.settings.span_efficiency = conditions.aerodynamics.span_efficiency
return
[docs]
def evaluate_AVL_no_surrogate(state,settings,vehicle):
"""Evaluates forces and moments directly using VLM.
Assumptions:
None
Source:
None
Args:
aerodynamics : AVL analysis [unitless]
state : flight conditions [unitless]
vehicle : vehicle configuration [unitless]
Returns:
None
"""
# unpack
conditions = state.conditions
aerodynamics = state.analyses.aerodynamics
run_AVL_analysis(aerodynamics,conditions, vehicle)
return