Source code for RCAIDE.Library.Mission.Common.Pre_Process.aerodynamics
# RCAIDE/Library/Missions/Common/Pre_Process/aerodynamics.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
from RCAIDE.Library.Methods.Geometry.Planform import wing_segmented_planform, wing_planform
# ----------------------------------------------------------------------------------------------------------------------
# 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
- reference_values : Data
Reference aerodynamic parameters
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:
- If multi-segmented: Uses wing_segmented_planform
- If single segment: 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 segment.analyses.aerodynamics != None:
# ensure all properties of wing are computed before drag calculations
vehicle = segment.analyses.aerodynamics.vehicle
for wing in vehicle.wings:
if len(wing.segments) > 1:
wing_segmented_planform(wing)
else:
wing_planform(wing)
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.reference_values = mission.segments[last_tag].analyses.aerodynamics.reference_values
else:
aero = segment.analyses.aerodynamics
aero.initialize()
last_tag = tag
return