Source code for RCAIDE.Library.Mission.Common.Unpack_Unknowns.ground
# RCAIDE/Library/Missions/Common/Unknowns/ground.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# Unpack Unknowns
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def ground(segment):
"""
Updates ground segment states from solver unknowns
Parameters
----------
segment : Segment
The mission segment being analyzed
- state:
- unknowns:
- ground_velocity : array
Solved ground velocity [m/s]
- elapsed_time : float
Segment duration [s]
- conditions.frames.inertial:
- velocity_vector : array
Vehicle velocity [m/s]
- time : array
Segment time points [s]
- numerics.dimensionless:
- control_points : array
Normalized time points [-]
- air_speed_start : float
Initial airspeed [m/s]
Returns
-------
None
Updates segment conditions directly
Notes
-----
This function applies ground-specific solver values to the segment state,
handling velocity and time variables for ground operations. It ensures
proper velocity transitions and time scaling.
The function processes:
1. Ground velocity application
2. Time vector computation
3. Initial velocity preservation
**Major Assumptions**
* Continuous velocity transitions
* Valid time scaling
* Non-negative velocities
* Well-defined initial conditions
See Also
--------
RCAIDE.Framework.Mission.Segments.Ground
"""
# unpack unknowns
ground_velocity = segment.state.unknowns.ground_velocity
time = segment.state.unknowns.elapsed_time
# unpack givens
v0 = segment.air_speed_start
t_initial = segment.state.conditions.frames.inertial.time[0,0]
t_nondim = segment.state.numerics.dimensionless.control_points
# time
t_final = t_initial + time
times = t_nondim * (t_final-t_initial) + t_initial
# apply unknowns
conditions = segment.state.conditions
conditions.frames.inertial.velocity_vector[1:,0] = ground_velocity
conditions.frames.inertial.velocity_vector[0,0] = v0
conditions.frames.inertial.time[:,0] = times[:,0]