Source code for RCAIDE.Library.Mission.Common.Segments

import RCAIDE
import numpy as np
from tqdm import tqdm

[docs] def sequential_segments(mission): print(r""" +----------------------------------------------------+ | MISSION SOLVER INITIATED | +----------------------------------------------------+ """) segments = list(mission.segments.items()) last_state = None # bar_format includes {desc} on the left bar_format = ( "{desc} |{bar}| " "{n_fmt}/{total_fmt} segs " "[{elapsed}<{remaining}, {rate_fmt}]" ) # start out green with tqdm(total=len(segments), bar_format=bar_format, colour="green", unit="seg") as pbar: error_flag = False for tag, segment in segments: # update the {desc} field pbar.set_description(f"Solving {segment.tag}") # carry over state if last_state is not None: segment.state.initials = last_state last_state = segment.state # tag it segment.mission_tag = mission.tag # the moment we see a non-converged segment, flip to red if segment.state.initials != {}: if not segment.state.initials.numerics.solver.converged and not error_flag: pbar.colour = "red" error_flag = True # expand state before evaluate, skip during segment's own process original_expand = segment.process.initialize.expand_state segment.process.initialize.expand_state(segment) segment.process.initialize.expand_state = RCAIDE.Library.Methods.skip segment.evaluate() segment.process.initialize.expand_state = original_expand segment.state.number_of_residuals = 0 segment.state.number_of_unknowns = 0 pbar.update(1)