Source code for RCAIDE.Library.Mission.Common.Pre_Process.stability
# RCAIDE/Library/Missions/Common/Pre_Process/stability.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# RCAIDE imports
import RCAIDE
from RCAIDE.Library.Methods.Geometry.Planform import wing_segmented_planform, wing_planform
# ----------------------------------------------------------------------------------------------------------------------
# stability
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def stability(mission):
"""
Initializes and processes stability models for mission segments
Parameters
----------
mission : Mission
The mission containing segments to be analyzed
- analyses.stability : Analysis
Stability analysis module
- vehicle : Vehicle
Aircraft geometry definition
- wings : list
Wing geometry definitions
- process.compute.lift.inviscid_wings : Process
Lift computation process
- surrogates : Data
Stability surrogate models
- reference_values : Data
Reference stability parameters
Returns
-------
None
Updates mission segment analyses directly
Notes
-----
This function prepares the stability analysis for each mission segment.
It ensures proper wing geometry computation and manages stability
surrogate models across segments for computational efficiency.
The function performs the following steps:
1. Computes wing planform properties
2. Reuses previous segment's stability data when possible
3. Initializes new stability 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 stability models between segments
* Proper initialization of first segment
* Continuous stability characteristics
See Also
--------
RCAIDE.Library.Methods.Geometry.Planform
RCAIDE.Framework.Mission.Segments
"""
last_tag = None
for tag,segment in mission.segments.items():
if segment.analyses.stability != None:
# ensure all properties of wing are computed before drag calculations
vehicle = segment.analyses.stability.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.stability.process.keys()):
segment.analyses.stability.process.compute.lift.inviscid_wings = mission.segments[last_tag].analyses.stability.process.compute.lift.inviscid_wings
segment.analyses.stability.surrogates = mission.segments[last_tag].analyses.stability.surrogates
segment.analyses.stability.reference_values = mission.segments[last_tag].analyses.stability.reference_values
else: # use aerodynamic results that have been previously processed
if (type(segment.analyses.aerodynamics) == RCAIDE.Framework.Analyses.Aerodynamics.Vortex_Lattice_Method) or\
(type(segment.analyses.aerodynamics) == RCAIDE.Framework.Analyses.Aerodynamics.Athena_Vortex_Lattice) :
segment.analyses.stability.process.compute.lift.inviscid_wings = segment.analyses.aerodynamics.process.compute.lift.inviscid_wings
segment.analyses.stability.surrogates = segment.analyses.aerodynamics.surrogates
segment.analyses.stability.reference_values = segment.analyses.aerodynamics.reference_values
last_tag = tag
else: # run new simulation
stab = segment.analyses.stability
stab.initialize()
last_tag = tag
return