Source code for RCAIDE.Library.Mission.Common.Initialize.time

# RCAIDE/Library/Missions/Common/Initialize/time.py
# 
# 
# Created:  Jul 2023, M. Clarke
 
# ----------------------------------------------------------------------------------------------------------------------
#  Initialize Time
# ---------------------------------------------------------------------------------------------------------------------- 
[docs] def time(segment): """ Initializes time variables for mission segment analysis Parameters ---------- segment : Segment The mission segment being analyzed Notes ----- This function sets up the initial time values for both inertial and planetary reference frames. It handles time continuity between segments and establishes start times for new segments. The function follows this priority for time initialization: 1. Previous segment final time (if initials exist) 2. Explicit segment start time (if specified) 3. Current initial time value **Required Segment State Variables** If segment.state.initials exists: state.initials.conditions.frames: inertial: - time : array Previous segment final time [s] planet: - start_time : float Previous segment start time [s] state.conditions.frames: inertial: - time : array Current segment time array [s] planet: - start_time : float Current segment start time [s] **Optional Segment Parameters** segment: - start_time : float Explicit segment start time [s] **Major Assumptions** * Continuous time tracking when using initials * Valid time values (non-negative) * Proper time synchronization between frames * Time measured in seconds Returns ------- None Updates segment conditions directly See Also -------- RCAIDE.Framework.Mission.Segments RCAIDE.Library.Mission.Common.Initialize.planet_position """ if segment.state.initials: t_initial = segment.state.initials.conditions.frames.inertial.time t_current = segment.state.conditions.frames.inertial.time segment.state.conditions.frames.inertial.time[:,:] = t_current + (t_initial[-1,0] - t_current[0,0]) else: t_initial = segment.state.conditions.frames.inertial.time[0,0] if segment.state.initials: segment.state.conditions.frames.planet.start_time = segment.state.initials.conditions.frames.planet.start_time elif 'start_time' in segment: segment.state.conditions.frames.planet.start_time = segment.start_time return