Source code for RCAIDE.Library.Mission.Common.Pre_Process.aerodynamics
# RCAIDE/Library/Missions/Common/Pre_Process/aerodynamics.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
import RCAIDE
import os, sys
# ----------------------------------------------------------------------------------------------------------------------
# aerodynamics
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def aerodynamics(mission):
"""
Initializes and processes aerodynamic models for mission segments
Parameters
----------
mission : Mission
The mission containing segments to be analyzed
- analyses.aerodynamics : Analysis
Aerodynamic analysis module
- vehicle : Vehicle
Aircraft geometry definition
- wings : list
Wing geometry definitions
- process.compute.lift.inviscid_wings : Process
Lift computation process
- surrogates : Data
Aerodynamic surrogate models
Notes
-----
This function prepares the aerodynamic analysis for each mission segment.
It ensures proper wing geometry computation and manages aerodynamic
surrogate models across segments for computational efficiency.
The function performs the following steps:
1. Computes wing planform properties
2. Reuses previous segment's aerodynamic data when possible
3. Initializes new aerodynamic analyses when needed
**Wing Processing**
For each wing:
- Uses wing_planform
**Major Assumptions**
* Valid wing geometry definitions
* Compatible aerodynamic models between segments
* Proper initialization of first segment
* Continuous aerodynamic characteristics
Returns
-------
None
Updates mission segment analyses directly
See Also
--------
RCAIDE.Library.Methods.Geometry.Planform
"""
last_tag = None
for tag,segment in mission.segments.items():
if type(segment) == RCAIDE.Framework.Mission.Segments.Vertical_Flight.Climb or \
type(segment) == RCAIDE.Framework.Mission.Segments.Vertical_Flight.Hover or \
type(segment) == RCAIDE.Framework.Mission.Segments.Vertical_Flight.Descent:
pass
else:
if segment.analyses.aerodynamics != None:
if last_tag!= None and 'compute' in mission.segments[last_tag].analyses.aerodynamics.process.keys():
segment.analyses.aerodynamics.process.compute.lift.inviscid_wings = mission.segments[last_tag].analyses.aerodynamics.process.compute.lift.inviscid_wings
segment.analyses.aerodynamics.surrogates = mission.segments[last_tag].analyses.aerodynamics.surrogates
segment.analyses.aerodynamics.settings.vortex_distribution = mission.segments[last_tag].analyses.aerodynamics.settings.vortex_distribution
segment.analyses.aerodynamics.aileron_flag = mission.segments[last_tag].analyses.aerodynamics.aileron_flag
segment.analyses.aerodynamics.flap_flag = mission.segments[last_tag].analyses.aerodynamics.flap_flag
segment.analyses.aerodynamics.rudder_flag = mission.segments[last_tag].analyses.aerodynamics.rudder_flag
segment.analyses.aerodynamics.elevator_flag = mission.segments[last_tag].analyses.aerodynamics.elevator_flag
segment.analyses.aerodynamics.slat_flag = mission.segments[last_tag].analyses.aerodynamics.slat_flag
else:
segment.analyses.aerodynamics.filename = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), segment.analyses.vehicle.tag +"_" + segment.analyses.aerodynamics.tag +"_aero_training_data.pkl")
segment.analyses.aerodynamics.initialize(segment.analyses.vehicle)
last_tag = tag
return