Source code for RCAIDE.Library.Mission.Common.Unpack_Unknowns.control_surfaces
# RCAIDE/Library/Missions/Common/Unpack_Unknowns/control_surfaces.py
#
#
# Created: Jul 2023, M. Clarke
import RCAIDE
# ----------------------------------------------------------------------------------------------------------------------
# Unpack Unknowns
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def control_surfaces(segment):
"""
Updates control surface deflections from solver unknowns
Parameters
----------
segment : Segment
The mission segment being analyzed
- assigned_control_variables : Data
Control variable configurations
- {control_type}.active : bool
Whether control is active
- {control_type}.assigned_surfaces : list
Surface names for each control group
- state.unknowns : Data
Solver unknown values
- state.conditions.control_surfaces : Data
Results data structure
- analyses : list
Analysis modules containing vehicle definition
Returns
-------
None
Updates segment state and vehicle model directly
Notes
-----
This function applies control surface deflection values from the solver's
unknowns to both the vehicle model and results data structure. It handles
all types of control surfaces including elevators, slats, rudders, flaps,
and ailerons.
The function processes:
1. Elevator deflections
2. Slat deflections
3. Rudder deflections
4. Flap deflections
5. Aileron deflections
6. Spoiler deflections
**Control Surface Types**
Supported controls:
- Elevator
- Slat
- Rudder
- Flap
- Aileron
- Spoiler
**Major Assumptions**
* Valid control surface definitions
* Proper surface assignments
* Compatible deflection values
* Well-defined vehicle geometry
See Also
--------
RCAIDE.Library.Components.Wings.Control_Surfaces
RCAIDE.Framework.Mission.Segments
"""
assigned_control_variables = segment.assigned_control_variables
control_surfaces = segment.state.conditions.control_surfaces
for analysis in segment.analyses:
if analysis != None:
if 'vehicle' in analysis:
wings = analysis.vehicle.wings
# loop through wings on aircraft
for wing in wings:
# Elevator Control
if assigned_control_variables.elevator_deflection.active:
for control_surface in wing.control_surfaces:
if type(control_surface) == RCAIDE.Library.Components.Wings.Control_Surfaces.Elevator:
control_surfaces.elevator.deflection = segment.state.unknowns["elevator"]
# Slat Control
if assigned_control_variables.slat_deflection.active:
for control_surface in wing.control_surfaces:
if type(control_surface) == RCAIDE.Library.Components.Wings.Control_Surfaces.Slat:
control_surfaces.slat.deflection = segment.state.unknowns["slat"]
# Rudder Control
if assigned_control_variables.rudder_deflection.active:
for control_surface in wing.control_surfaces:
if type(control_surface) == RCAIDE.Library.Components.Wings.Control_Surfaces.Rudder:
control_surfaces.rudder.deflection = segment.state.unknowns["rudder"]
# flap Control
if assigned_control_variables.flap_deflection.active:
for control_surface in wing.control_surfaces:
if type(control_surface) == RCAIDE.Library.Components.Wings.Control_Surfaces.Flap:
control_surfaces.flap.deflection = segment.state.unknowns["flap"]
# Aileron Control
if assigned_control_variables.aileron_deflection.active:
for control_surface in wing.control_surfaces:
if type(control_surface) == RCAIDE.Library.Components.Wings.Control_Surfaces.Aileron:
control_surfaces.aileron.deflection = segment.state.unknowns["aileron"]
return