SSTO Earth Launch#

This example is based on the Time-Optimal Launch of a Titan II example given in Appendix B of Longuski [LGuzmanP14]. It finds the pitch profile for a single-stage-to-orbit launch vehicle that minimizes the time required to reach orbit insertion under constant thrust.

The free-body-diagram of the single-stage-to-orbit problem.

The vehicle dynamics are given by

(79)#\[\begin{align} \frac{dx}{dt} &= v_x \\ \frac{dy}{dt} &= v_y \\ \frac{dv_x}{dt} &= \frac{1}{m} (T \cos \theta - D \cos \gamma) \\ \frac{dv_y}{dt} &= \frac{1}{m} (T \sin \theta - D \sin \gamma) - g \\ \frac{dm}{dt} &= \frac{T}{g I_{sp}} \end{align}\]

The initial conditions are

(80)#\[\begin{align} x_0 &= 0 \\ y_0 &= 0 \\ v_{x0} &= 0 \\ v_{y0} &= 0 \\ m_0 &= 117000 \rm{\,kg} \end{align}\]

and the final conditions are

(81)#\[\begin{align} x_f &= \rm{free} \\ y_f &= 185 \rm{\,km} \\ v_{xf} &= V_{circ} \\ v_{yf} &= 0 \\ m_f &= \rm{free} \end{align}\]

Defining the ODE#

Generally, one could define the ODE system as a composite group of multile components. The atmosphere component computes density (\(\rho\)). The eom component computes the state rates. Decomposing the ODE into smaller calculations makes it easier to derive the analytic derivatives.

The notional XDSM diagram for the ODE system in the SSTO problem.

However, for this example we will demonstrate the use of complex-step differentiation and define the ODE as a single component. This saves time up front in the deevlopment of the ODE at a minor cost in execution time.

The unconnected inputs to the EOM at the top of the diagram are provided by the Dymos phase as states, controls, or time values. The outputs, including the state rates, are shown on the right side of the diagram. The Dymos phases use state rate values to ensure that the integration technique satisfies the dynamics of the system.

import openmdao.api as om
import numpy as np


class LaunchVehicleODE(om.ExplicitComponent):

    def initialize(self):
        self.options.declare('num_nodes', types=int,
                             desc='Number of nodes to be evaluated in the RHS')

        self.options.declare('g', types=float, default=9.80665,
                             desc='Gravitational acceleration, m/s**2')

        self.options.declare('rho_ref', types=float, default=1.225,
                             desc='Reference atmospheric density, kg/m**3')

        self.options.declare('h_scale', types=float, default=8.44E3,
                             desc='Reference altitude, m')

        self.options.declare('CD', types=float, default=0.5,
                             desc='coefficient of drag')

        self.options.declare('S', types=float, default=7.069,
                             desc='aerodynamic reference area (m**2)')

    def setup(self):
        nn = self.options['num_nodes']

        self.add_input('y',
                       val=np.zeros(nn),
                       desc='altitude',
                       units='m')

        self.add_input('vx',
                       val=np.zeros(nn),
                       desc='x velocity',
                       units='m/s')

        self.add_input('vy',
                       val=np.zeros(nn),
                       desc='y velocity',
                       units='m/s')

        self.add_input('m',
                       val=np.zeros(nn),
                       desc='mass',
                       units='kg')

        self.add_input('theta',
                       val=np.zeros(nn),
                       desc='pitch angle',
                       units='rad')

        self.add_input('thrust',
                       val=2100000 * np.ones(nn),
                       desc='thrust',
                       units='N')

        self.add_input('Isp',
                       val=265.2 * np.ones(nn),
                       desc='specific impulse',
                       units='s')
        # Outputs
        self.add_output('xdot',
                        val=np.zeros(nn),
                        desc='velocity component in x',
                        units='m/s')

        self.add_output('ydot',
                        val=np.zeros(nn),
                        desc='velocity component in y',
                        units='m/s')

        self.add_output('vxdot',
                        val=np.zeros(nn),
                        desc='x acceleration magnitude',
                        units='m/s**2')

        self.add_output('vydot',
                        val=np.zeros(nn),
                        desc='y acceleration magnitude',
                        units='m/s**2')

        self.add_output('mdot',
                        val=np.zeros(nn),
                        desc='mass rate of change',
                        units='kg/s')

        self.add_output('rho',
                        val=np.zeros(nn),
                        desc='density',
                        units='kg/m**3')

        # Setup partials
        # Complex-step derivatives
        self.declare_coloring(wrt='*', method='cs', show_sparsity=True)

    def compute(self, inputs, outputs):

        theta = inputs['theta']
        cos_theta = np.cos(theta)
        sin_theta = np.sin(theta)
        vx = inputs['vx']
        vy = inputs['vy']
        m = inputs['m']
        F_T = inputs['thrust']
        Isp = inputs['Isp']
        y = inputs['y']

        g = self.options['g']
        rho_ref = self.options['rho_ref']
        h_scale = self.options['h_scale']

        CDA = self.options['CD'] * self.options['S']

        outputs['rho'] = rho_ref * np.exp(-y / h_scale)
        outputs['xdot'] = vx
        outputs['ydot'] = vy
        outputs['vxdot'] = (F_T * cos_theta - 0.5 * CDA * outputs['rho'] * vx**2) / m
        outputs['vydot'] = (F_T * sin_theta - 0.5 * CDA * outputs['rho'] * vy**2) / m - g
        outputs['mdot'] = -F_T / (g * Isp)

Solving the problem#

import matplotlib.pyplot as plt
import openmdao.api as om
import dymos as dm

#
# Setup and solve the optimal control problem
#
p = om.Problem(model=om.Group())
p.driver = om.pyOptSparseDriver()
p.driver.declare_coloring(tol=1.0E-12)

from dymos.examples.ssto.launch_vehicle_ode import LaunchVehicleODE

#
# Initialize our Trajectory and Phase
#
traj = dm.Trajectory()

phase = dm.Phase(ode_class=LaunchVehicleODE,
                 transcription=dm.GaussLobatto(num_segments=12, order=3, compressed=False))

traj.add_phase('phase0', phase)
p.model.add_subsystem('traj', traj)

#
# Set the options for the variables
#
phase.set_time_options(fix_initial=True, duration_bounds=(10, 500))

phase.add_state('x', fix_initial=True, ref=1.0E5, defect_ref=10000.0,
                rate_source='xdot')
phase.add_state('y', fix_initial=True, ref=1.0E5, defect_ref=10000.0,
                rate_source='ydot')
phase.add_state('vx', fix_initial=True, ref=1.0E3, defect_ref=1000.0,
                rate_source='vxdot')
phase.add_state('vy', fix_initial=True, ref=1.0E3, defect_ref=1000.0,
                rate_source='vydot')
phase.add_state('m', fix_initial=True, ref=1.0E3, defect_ref=100.0,
                rate_source='mdot')

phase.add_control('theta', units='rad', lower=-1.57, upper=1.57, targets=['theta'])
phase.add_parameter('thrust', units='N', opt=False, val=2100000.0, targets=['thrust'])

#
# Set the options for our constraints and objective
#
phase.add_boundary_constraint('y', loc='final', equals=1.85E5, linear=True)
phase.add_boundary_constraint('vx', loc='final', equals=7796.6961)
phase.add_boundary_constraint('vy', loc='final', equals=0)

phase.add_objective('time', loc='final', scaler=0.01)

p.model.linear_solver = om.DirectSolver()

#
# Setup and set initial values
#
p.setup(check=True)

p.set_val('traj.phase0.t_initial', 0.0)
p.set_val('traj.phase0.t_duration', 150.0)
p.set_val('traj.phase0.states:x', phase.interp('x', [0, 1.15E5]))
p.set_val('traj.phase0.states:y', phase.interp('y', [0, 1.85E5]))
p.set_val('traj.phase0.states:vy', phase.interp('vy', [1.0E-6, 0]))
p.set_val('traj.phase0.states:m', phase.interp('m', [117000, 1163]))
p.set_val('traj.phase0.controls:theta', phase.interp('theta', [1.5, -0.76]))
p.set_val('traj.phase0.parameters:thrust', 2.1, units='MN')

#
# Solve the Problem
#
dm.run_problem(p, simulate=True)
--- Constraint Report [traj] ---
    --- phase0 ---
        [final]   1.8500e+05 == y [m]
        [final]   7.7967e+03 == vx [m/s]
        [final]   0.0000e+00 == vy [m/s]

INFO: checking out_of_order
INFO:check_config:checking out_of_order
INFO: checking system
INFO:check_config:checking system
INFO: checking solvers
INFO:check_config:checking solvers
INFO: checking dup_inputs
INFO:check_config:checking dup_inputs
INFO: checking missing_recorders
INFO:check_config:checking missing_recorders
WARNING: The Problem has no recorder of any kind attached
WARNING:check_config:The Problem has no recorder of any kind attached
INFO: checking unserializable_options
INFO:check_config:checking unserializable_options
INFO: checking comp_has_no_outputs
INFO:check_config:checking comp_has_no_outputs
INFO: checking auto_ivc_warnings
INFO:check_config:checking auto_ivc_warnings
Model viewer data has already been recorded for Driver.
INFO: checking out_of_order
INFO:check_config:checking out_of_order
INFO: checking system
INFO:check_config:checking system
INFO: checking solvers
INFO:check_config:checking solvers
INFO: checking dup_inputs
INFO:check_config:checking dup_inputs
INFO: checking missing_recorders
INFO:check_config:checking missing_recorders
WARNING: The Problem has no recorder of any kind attached
WARNING:check_config:The Problem has no recorder of any kind attached
INFO: checking unserializable_options
INFO:check_config:checking unserializable_options
INFO: checking comp_has_no_outputs
INFO:check_config:checking comp_has_no_outputs
INFO: checking auto_ivc_warnings
INFO:check_config:checking auto_ivc_warnings
Coloring for 'traj.phases.phase0.rhs_disc' (class LaunchVehicleODE)
........................f............................................................................................................................................... 0  xdot
.........................f.............................................................................................................................................. 1  xdot
..........................f............................................................................................................................................. 2  xdot
...........................f............................................................................................................................................ 3  xdot
............................f........................................................................................................................................... 4  xdot
.............................f.......................................................................................................................................... 5  xdot
..............................f......................................................................................................................................... 6  xdot
...............................f........................................................................................................................................ 7  xdot
................................f....................................................................................................................................... 8  xdot
.................................f...................................................................................................................................... 9  xdot
..................................f..................................................................................................................................... 10  xdot
...................................f.................................................................................................................................... 11  xdot
....................................f................................................................................................................................... 12  xdot
.....................................f.................................................................................................................................. 13  xdot
......................................f................................................................................................................................. 14  xdot
.......................................f................................................................................................................................ 15  xdot
........................................f............................................................................................................................... 16  xdot
.........................................f.............................................................................................................................. 17  xdot
..........................................f............................................................................................................................. 18  xdot
...........................................f............................................................................................................................ 19  xdot
............................................f........................................................................................................................... 20  xdot
.............................................f.......................................................................................................................... 21  xdot
..............................................f......................................................................................................................... 22  xdot
...............................................f........................................................................................................................ 23  xdot
................................................f....................................................................................................................... 24  ydot
.................................................f...................................................................................................................... 25  ydot
..................................................f..................................................................................................................... 26  ydot
...................................................f.................................................................................................................... 27  ydot
....................................................f................................................................................................................... 28  ydot
.....................................................f.................................................................................................................. 29  ydot
......................................................f................................................................................................................. 30  ydot
.......................................................f................................................................................................................ 31  ydot
........................................................f............................................................................................................... 32  ydot
.........................................................f.............................................................................................................. 33  ydot
..........................................................f............................................................................................................. 34  ydot
...........................................................f............................................................................................................ 35  ydot
............................................................f........................................................................................................... 36  ydot
.............................................................f.......................................................................................................... 37  ydot
..............................................................f......................................................................................................... 38  ydot
...............................................................f........................................................................................................ 39  ydot
................................................................f....................................................................................................... 40  ydot
.................................................................f...................................................................................................... 41  ydot
..................................................................f..................................................................................................... 42  ydot
...................................................................f.................................................................................................... 43  ydot
....................................................................f................................................................................................... 44  ydot
.....................................................................f.................................................................................................. 45  ydot
......................................................................f................................................................................................. 46  ydot
.......................................................................f................................................................................................ 47  ydot
f.......................f...............................................f.......................f.......................f............................................... 48  vxdot
.f.......................f...............................................f.......................f.......................f.............................................. 49  vxdot
..f.......................f...............................................f.......................f.......................f............................................. 50  vxdot
...f.......................f...............................................f.......................f.......................f............................................ 51  vxdot
....f.......................f...............................................f.......................f.......................f........................................... 52  vxdot
.....f.......................f...............................................f.......................f.......................f.......................................... 53  vxdot
......f.......................f...............................................f.......................f.......................f......................................... 54  vxdot
.......f.......................f...............................................f.............
..........f.......................f........................................ 55  vxdot
........f.......................f...............................................f.......................f.......................f....................................... 56  vxdot
.........f.......................f...............................................f.......................f.......................f...................................... 57  vxdot
..........f.......................f...............................................f.......................f.......................f..................................... 58  vxdot
...........f.......................f...............................................f.......................f.......................f.................................... 59  vxdot
............f.......................f...............................................f.......................f.......................f................................... 60  vxdot
.............f.......................f...............................................f.......................f.......................f.................................. 61  vxdot
..............f.......................f...............................................f.......................f.......................f................................. 62  vxdot
...............f.......................f...............................................f.......................f.......................f................................ 63  vxdot
................f.......................f...............................................f.......................f.......................f............................... 64  vxdot
.................f.......................f...............................................f.......................f.......................f.............................. 65  vxdot
..................f.......................f...............................................f.......................f.......................f............................. 66  vxdot
...................f.......................f...............................................f.......................f.......................f............................ 67  vxdot
....................f.......................f...............................................f.......................f.......................f........................... 68  vxdot
.....................f.......................f...............................................f.......................f.......................f.......................... 69  vxdot
......................f.......................f...............................................f.......................f.......................f......................... 70  vxdot
.......................f.......................f...............................................f.......................f.......................f........................ 71  vxdot
f...............................................f.......................f.......................f.......................f............................................... 72  vydot
.f...............................................f.......................f.......................f.......................f.............................................. 73  vydot
..f...............................................f.......................f.......................f.......................f............................................. 74  vydot
...................................................f.......................f.......................f.......................f............................................ 75  vydot
....................................................f.......................f.......................f.......................f........................................... 76  vydot
.....................................................f.......................f.......................f.......................f.......................................... 77  vydot
......................................................f.......................f.......................f.......................f......................................... 78  vydot
...............................................
........f.......................f.......................f.......................f........................................ 79  vydot
........................................................f.......................f.......................f.......................f....................................... 80  vydot
.........................................................f.......................f.......................f.......................f...................................... 81  vydot
..........................................................f.......................f.......................f.......................f..................................... 82  vydot
...........................................................f.......................f.......................f.......................f.................................... 83  vydot
............................................................f.......................f.......................f.......................f................................... 84  vydot
.............................................................f.......................f.......................f.......................f.................................. 85  vydot
..............................................................f.......................f.......................f.......................f................................. 86  vydot
...............................................................f.......................f.......................f.......................f................................ 87  vydot
................................................................f.......................f.......................f.......................f............................... 88  vydot
.................................................................f.......................f.......................f.......................f.............................. 89  vydot
..................................................................f.......................f.......................f.......................f............................. 90  vydot
...................................................................f.......................f.......................f.......................f............................ 91  vydot
....................................................................f.......................f.......................f.......................f........................... 92  vydot
.....................................................................f.......................f.......................f.......................f.......................... 93  vydot
......................................................................f.......................f.......................f.......................f....................
..... 94  vydot
.......................................................................f.......................f.......................f.......................f........................ 95  vydot
........................................................................................................................f.......................f....................... 96  mdot
.........................................................................................................................f.......................f...................... 97  mdot
..........................................................................................................................f.......................f..................... 98  mdot
...........................................................................................................................f.......................f.................... 99  mdot
............................................................................................................................f.......................f................... 100  mdot
.............................................................................................................................f.......................f.................. 101  mdot
..............................................................................................................................f.......................f................. 102  mdot
...............................................................................................................................f.......................f................ 103  mdot
................................................................................................................................f.......................f............... 104  mdot
.................................................................................................................................f.......................f.............. 105  mdot
..................................................................................................................................f.......................f............. 106  mdot
...................................................................................................................................f.......................f............ 107  mdot
....................................................................................................................................f.......................f........... 108  mdot
.....................................................................................................................................f.......................f.......... 109  mdot
......................................................................................................................................f.......................f......... 110  mdot
.......................................................................................................................................f.......................f........ 111  mdot
........................................................................................................................................f.......................f....... 112  mdot
.........................................................................................................................................f.......................f...... 113  mdot
..........................................................................................................................................f.......................f..... 114  mdot
...........................................................................................................................................f.......................f.... 115  mdot
............................................................................................................................................f.......................f... 116  mdot
.............................................................................................................................................f.......................f.. 117  mdot
..............................................................................................................................................f.......................f. 118  mdot
...............................................................................................................................................f.......................f 119  mdot
f....................................................................................................................................................................... 120  rho
.f...................................................................................................................................................................... 121  rho
..f..................................................................................................................................................................... 122  rho
...f.................................................................................................................................................................... 123  rho
....f................................................................................................................................................................... 124  rho
.....f.................................................................................................................................................................. 125  rho
......f................................................................................................................................................................. 126  rho
.......f................................................................................................................................................................ 127  rho
........f............................................................................................................................................................... 128  rho
.........f.............................................................................................................................................................. 129  rho
..........f............................................................................................................................................................. 130  rho
...........f............................................................................................................................................................ 131  rho
............f........................................................................................................................................................... 132  rho
.............f.......................................................................................................................................................... 133  rho
..............f......................................................................................................................................................... 134  rho
...............f........................................................................................................................................................ 135  rho
................f....................................................................................................................................................... 136  rho
.................f...................................................................................................................................................... 137  rho
..................f..................................................................................................................................................... 138  rho
...................f.................................................................................................................................................... 139  rho
....................f................................................................................................................................................... 140  rho
.....................f.................................................................................................................................................. 141  rho
......................f................................................................................................................................................. 142  rho
.......................f................................................................................................................................................ 143  rho
|y
                        |vx
                                                |vy
                                                                        |m
                                                                                                |theta
                                                                                                                        |thrust
                                                                                                                                                |Isp

Jacobian shape: (144, 168)  ( 1.40% nonzero)
FWD solves: 5   REV solves: 0
Total colors vs. total size: 5 vs 168  (97.0% improvement)

Sparsity computed using tolerance: 1e-25
Time to compute sparsity: 0.056227 sec.
Time to compute coloring: 0.029014 sec.
Memory to compute coloring: 0.125000 MB.

Coloring for 'traj.phases.phase0.rhs_col' (class LaunchVehicleODE)
............f....................................................................... 0  xdot
.............f...................................................................... 1  xdot
..............f..................................................................... 2  xdot
...............f.................................................................... 3  xdot
................f................................................................... 4  xdot
.................f.................................................................. 5  xdot
..................f................................................................. 6  xdot
...................f................................................................ 7  xdot
....................f............................................................... 8  xdot
.....................f.............................................................. 9  xdot
......................f............................................................. 10  xdot
.......................f............................................................ 11  xdot
........................f........................................................... 12  ydot
.........................f.......................................................... 13  ydot
..........................f......................................................... 14  ydot
...........................f........................................................ 15  ydot
............................f....................................................... 16  ydot
.............................f...................................................... 17  ydot
..............................f..................................................... 18  ydot
...............................f.................................................... 19  ydot
................................f................................................... 20  ydot
.................................f.................................................. 21  ydot
..................................f................................................. 22  ydot
...................................f................................................ 23  ydot
f...........f.......................f...........f...........f....................... 24  vxdot
.f...........f.......................f...........f...........f...................... 25  vxdot
..f...........f.......................f...........f...........f..................... 26  vxdot
...f...........f.......................f...........f...........f.................... 27  vxdot
....f...........f.......................f...........f...........f................... 28  vxdot
.....f...........f.......................f...........f...........f.................. 29  vxdot
......f...........f.......................f...........f...........f................. 30  vxdot
.......f...........f.......................f...........f...........f................ 31  vxdot
........f...........f.......................f...........f...........f............... 32  vxdot
.........f...........f.......................f...........f...........f.............. 33  vxdot
..........f...........f.......................f...........f...........f............. 34  vxdot
...........f...........f.......................f...........f...........f............ 35  vxdot
f.......................f...........f...........f...........f....................... 36  vydot
.f.......................f...........f...........f...........f...................... 37  vydot
..f.......................f...........f...........f...........f..................... 38  vydot
...f.......................f...........f...........f...........f.................... 39  vydot
....f.......................f...........f...........f...........f................... 40  vydot
.....f.......................f...........f...........f...........f.................. 41  vydot
......f.......................f...........f...........f...........f................. 42  vydot
.......f.......................f...........f...........f...........f................ 43  vydot
........f.......................f...........f...........f...........f............... 44  vydot
.........f.......................f...........f...........f...........f.............. 45  vydot
..........f.......................f...........f...........f...........f............. 46  vydot
...........f.......................f...........f...........f...........f............ 47  vydot
............................................................f...........f........... 48  mdot
.............................................................f...........f.......... 49  mdot
..............................................................f...........f......... 50  mdot
...............................................................f...........f........ 51  mdot
................................................................f...........f....... 52  mdot
.................................................................f...........f...... 53  mdot
..................................................................f...........f..... 54  mdot
...................................................................f...........f.... 55  mdot
....................................................................f...........f... 56  mdot
.....................................................................f...........f.. 57  mdot
......................................................................f...........f. 58  mdot
.......................................................................f...........f 59  mdot
f................................................................................... 60  rho
.f.................................................................................. 61  rho
..f................................................................................. 62  rho
...f................................................................................ 63  rho
....f............................................................................... 64  rho
.....f.............................................................................. 65  rho
......f............................................................................. 66  rho
.......f............................................................................ 67  rho
........f........................................................................... 68  rho
.........f.......................................................................... 69  rho
..........f......................................................................... 70  rho
...........f........................................................................ 71  rho
|y
            |vx
                        |vy
                                    |m
                                                |theta
                                                            |thrust
                                                                        |Isp

Jacobian shape: (72, 84)  ( 2.98% nonzero)
FWD solves: 5   REV solves: 0
Total colors vs. total size: 5 vs 84  (94.0% improvement)

Sparsity computed using tolerance: 1e-25
Time to compute sparsity: 0.024767 sec.
Time to compute coloring: 0.015089 sec.
Memory to compute coloring: 0.000000 MB.
Full total jacobian was computed 3 times, taking 0.419022 seconds.
Total jacobian shape: (74, 152) 


Jacobian shape: (74, 152)  ( 5.38% nonzero)
FWD solves: 12   REV solves: 0
Total colors vs. total size: 12 vs 152  (92.1% improvement)

Sparsity computed using tolerance: 1e-12
Time to compute sparsity: 0.419022 sec.
Time to compute coloring: 0.107034 sec.
Memory to compute coloring: 0.125000 MB.
Optimization Problem -- Optimization using pyOpt_sparse
================================================================================
    Objective Function: _objfunc

    Solution: 
--------------------------------------------------------------------------------
    Total Time:                    2.2349
       User Objective Time :       0.1281
       User Sensitivity Time :     1.1438
       Interface Time :            0.2437
       Opt Solver Time:            0.7193
    Calls to Objective Function :      51
    Calls to Sens Function :           48


   Objectives
      Index  Name                                 Value
          0  traj.phases.phase0.time.t     1.431612E+00

   Variables (c - continuous, i - integer, d - discrete)
      Index  Name                                                                Type      Lower Bound            Value      Upper Bound     Status
          0  traj.phase0.t_duration_0                                               c     1.000000E+01     1.431612E+02     5.000000E+02           
          1  traj.phases.phase0.indep_states.states:x_0                             c    -1.000000E+16     1.423870E-03     1.000000E+16           
          2  traj.phases.phase0.indep_states.states:x_1                             c    -1.000000E+16     1.423870E-03     1.000000E+16           
          3  traj.phases.phase0.indep_states.states:x_2                             c    -1.000000E+16     5.539810E-03     1.000000E+16           
          4  traj.phases.phase0.indep_states.states:x_3                             c    -1.000000E+16     5.539810E-03     1.000000E+16           
          5  traj.phases.phase0.indep_states.states:x_4                             c    -1.000000E+16     1.299270E-02     1.000000E+16           
          6  traj.phases.phase0.indep_states.states:x_5                             c    -1.000000E+16     1.299270E-02     1.000000E+16           
          7  traj.phases.phase0.indep_states.states:x_6                             c    -1.000000E+16     2.477512E-02     1.000000E+16           
          8  traj.phases.phase0.indep_states.states:x_7                             c    -1.000000E+16     2.477512E-02     1.000000E+16           
          9  traj.phases.phase0.indep_states.states:x_8                             c    -1.000000E+16     4.205719E-02     1.000000E+16           
         10  traj.phases.phase0.indep_states.states:x_9                             c    -1.000000E+16     4.205719E-02     1.000000E+16           
         11  traj.phases.phase0.indep_states.states:x_10                            c    -1.000000E+16     6.704410E-02     1.000000E+16           
         12  traj.phases.phase0.indep_states.states:x_11                            c    -1.000000E+16     6.704410E-02     1.000000E+16           
         13  traj.phases.phase0.indep_states.states:x_12                            c    -1.000000E+16     1.024324E-01     1.000000E+16           
         14  traj.phases.phase0.indep_states.states:x_13                            c    -1.000000E+16     1.024324E-01     1.000000E+16           
         15  traj.phases.phase0.indep_states.states:x_14                            c    -1.000000E+16     1.531004E-01     1.000000E+16           
         16  traj.phases.phase0.indep_states.states:x_15                            c    -1.000000E+16     1.531004E-01     1.000000E+16           
         17  traj.phases.phase0.indep_states.states:x_16                            c    -1.000000E+16     2.286348E-01     1.000000E+16           
         18  traj.phases.phase0.indep_states.states:x_17                            c    -1.000000E+16     2.286348E-01     1.000000E+16           
         19  traj.phases.phase0.indep_states.states:x_18                            c    -1.000000E+16     3.530010E-01     1.000000E+16           
         20  traj.phases.phase0.indep_states.states:x_19                            c    -1.000000E+16     3.530010E-01     1.000000E+16           
         21  traj.phases.phase0.indep_states.states:x_20                            c    -1.000000E+16     5.931618E-01     1.000000E+16           
         22  traj.phases.phase0.indep_states.states:x_21                            c    -1.000000E+16     5.931618E-01     1.000000E+16           
         23  traj.phases.phase0.indep_states.states:x_22                            c    -1.000000E+16     1.124444E+00     1.000000E+16           
         24  traj.phases.phase0.indep_states.states:y_0                             c    -1.000000E+16     6.071941E-03     1.000000E+16           
         25  traj.phases.phase0.indep_states.states:y_1                             c    -1.000000E+16     6.071941E-03     1.000000E+16           
         26  traj.phases.phase0.indep_states.states:y_2                             c    -1.000000E+16     2.558451E-02     1.000000E+16           
         27  traj.phases.phase0.indep_states.states:y_3                             c    -1.000000E+16     2.558451E-02     1.000000E+16           
         28  traj.phases.phase0.indep_states.states:y_4                             c    -1.000000E+16     6.038537E-02     1.000000E+16           
         29  traj.phases.phase0.indep_states.states:y_5                             c    -1.000000E+16     6.038537E-02     1.000000E+16           
         30  traj.phases.phase0.indep_states.states:y_6                             c    -1.000000E+16     1.127399E-01     1.000000E+16           
         31  traj.phases.phase0.indep_states.states:y_7                             c    -1.000000E+16     1.127399E-01     1.000000E+16           
         32  traj.phases.phase0.indep_states.states:y_8                             c    -1.000000E+16     1.861696E-01     1.000000E+16           
         33  traj.phases.phase0.indep_states.states:y_9                             c    -1.000000E+16     1.861696E-01     1.000000E+16           
         34  traj.phases.phase0.indep_states.states:y_10                            c    -1.000000E+16     2.860066E-01     1.000000E+16           
         35  traj.phases.phase0.indep_states.states:y_11                            c    -1.000000E+16     2.860066E-01     1.000000E+16           
         36  traj.phases.phase0.indep_states.states:y_12                            c    -1.000000E+16     4.198521E-01     1.000000E+16           
         37  traj.phases.phase0.indep_states.states:y_13                            c    -1.000000E+16     4.198521E-01     1.000000E+16           
         38  traj.phases.phase0.indep_states.states:y_14                            c    -1.000000E+16     5.976777E-01     1.000000E+16           
         39  traj.phases.phase0.indep_states.states:y_15                            c    -1.000000E+16     5.976777E-01     1.000000E+16           
         40  traj.phases.phase0.indep_states.states:y_16                            c    -1.000000E+16     8.326284E-01     1.000000E+16           
         41  traj.phases.phase0.indep_states.states:y_17                            c    -1.000000E+16     8.326284E-01     1.000000E+16           
         42  traj.phases.phase0.indep_states.states:y_18                            c    -1.000000E+16     1.140649E+00     1.000000E+16           
         43  traj.phases.phase0.indep_states.states:y_19                            c    -1.000000E+16     1.140649E+00     1.000000E+16           
         44  traj.phases.phase0.indep_states.states:y_20                            c    -1.000000E+16     1.525001E+00     1.000000E+16           
         45  traj.phases.phase0.indep_states.states:y_21                            c    -1.000000E+16     1.525001E+00     1.000000E+16           
         46  traj.phases.phase0.indep_states.states:y_22                            c    -1.000000E+16     1.850000E+00     1.000000E+16           
         47  traj.phases.phase0.indep_states.states:vx_0                            c    -1.000000E+18     2.327869E-02     1.000000E+18           
         48  traj.phases.phase0.indep_states.states:vx_1                            c    -1.000000E+18     2.327869E-02     1.000000E+18           
         49  traj.phases.phase0.indep_states.states:vx_2                            c    -1.000000E+18     4.659191E-02     1.000000E+18           
         50  traj.phases.phase0.indep_states.states:vx_3                            c    -1.000000E+18     4.659191E-02     1.000000E+18           
         51  traj.phases.phase0.indep_states.states:vx_4                            c    -1.000000E+18     7.980599E-02     1.000000E+18           
         52  traj.phases.phase0.indep_states.states:vx_5                            c    -1.000000E+18     7.980599E-02     1.000000E+18           
         53  traj.phases.phase0.indep_states.states:vx_6                            c    -1.000000E+18     1.191955E-01     1.000000E+18           
         54  traj.phases.phase0.indep_states.states:vx_7                            c    -1.000000E+18     1.191955E-01     1.000000E+18           
         55  traj.phases.phase0.indep_states.states:vx_8                            c    -1.000000E+18     1.737234E-01     1.000000E+18           
         56  traj.phases.phase0.indep_states.states:vx_9                            c    -1.000000E+18     1.737234E-01     1.000000E+18           
         57  traj.phases.phase0.indep_states.states:vx_10                           c    -1.000000E+18     2.487371E-01     1.000000E+18           
         58  traj.phases.phase0.indep_states.states:vx_11                           c    -1.000000E+18     2.487371E-01     1.000000E+18           
         59  traj.phases.phase0.indep_states.states:vx_12                           c    -1.000000E+18     3.510681E-01     1.000000E+18           
         60  traj.phases.phase0.indep_states.states:vx_13                           c    -1.000000E+18     3.510681E-01     1.000000E+18           
         61  traj.phases.phase0.indep_states.states:vx_14                           c    -1.000000E+18     5.108624E-01     1.000000E+18           
         62  traj.phases.phase0.indep_states.states:vx_15                           c    -1.000000E+18     5.108624E-01     1.000000E+18           
         63  traj.phases.phase0.indep_states.states:vx_16                           c    -1.000000E+18     7.858760E-01     1.000000E+18           
         64  traj.phases.phase0.indep_states.states:vx_17                           c    -1.000000E+18     7.858760E-01     1.000000E+18           
         65  traj.phases.phase0.indep_states.states:vx_18                           c    -1.000000E+18     1.384927E+00     1.000000E+18           
         66  traj.phases.phase0.indep_states.states:vx_19                           c    -1.000000E+18     1.384927E+00     1.000000E+18           
         67  traj.phases.phase0.indep_states.states:vx_20                           c    -1.000000E+18     2.869862E+00     1.000000E+18           
         68  traj.phases.phase0.indep_states.states:vx_21                           c    -1.000000E+18     2.869862E+00     1.000000E+18           
         69  traj.phases.phase0.indep_states.states:vx_22                           c    -1.000000E+18     7.796696E+00     1.000000E+18           
         70  traj.phases.phase0.indep_states.states:vy_0                            c    -1.000000E+18     1.045598E-01     1.000000E+18           
         71  traj.phases.phase0.indep_states.states:vy_1                            c    -1.000000E+18     1.045598E-01     1.000000E+18           
         72  traj.phases.phase0.indep_states.states:vy_2                            c    -1.000000E+18     2.250738E-01     1.000000E+18           
         73  traj.phases.phase0.indep_states.states:vy_3                            c    -1.000000E+18     2.250738E-01     1.000000E+18           
         74  traj.phases.phase0.indep_states.states:vy_4                            c    -1.000000E+18     3.613861E-01     1.000000E+18           
         75  traj.phases.phase0.indep_states.states:vy_5                            c    -1.000000E+18     3.613861E-01     1.000000E+18           
         76  traj.phases.phase0.indep_states.states:vy_6                            c    -1.000000E+18     5.211650E-01     1.000000E+18           
         77  traj.phases.phase0.indep_states.states:vy_7                            c    -1.000000E+18     5.211650E-01     1.000000E+18           
         78  traj.phases.phase0.indep_states.states:vy_8                            c    -1.000000E+18     7.172279E-01     1.000000E+18           
         79  traj.phases.phase0.indep_states.states:vy_9                            c    -1.000000E+18     7.172279E-01     1.000000E+18           
         80  traj.phases.phase0.indep_states.states:vy_10                           c    -1.000000E+18     9.670879E-01     1.000000E+18           
         81  traj.phases.phase0.indep_states.states:vy_11                           c    -1.000000E+18     9.670879E-01     1.000000E+18           
         82  traj.phases.phase0.indep_states.states:vy_12                           c    -1.000000E+18     1.290602E+00     1.000000E+18           
         83  traj.phases.phase0.indep_states.states:vy_13                           c    -1.000000E+18     1.290602E+00     1.000000E+18           
         84  traj.phases.phase0.indep_states.states:vy_14                           c    -1.000000E+18     1.708746E+00     1.000000E+18           
         85  traj.phases.phase0.indep_states.states:vy_15                           c    -1.000000E+18     1.708746E+00     1.000000E+18           
         86  traj.phases.phase0.indep_states.states:vy_16                           c    -1.000000E+18     2.253313E+00     1.000000E+18           
         87  traj.phases.phase0.indep_states.states:vy_17                           c    -1.000000E+18     2.253313E+00     1.000000E+18           
         88  traj.phases.phase0.indep_states.states:vy_18                           c    -1.000000E+18     2.923999E+00     1.000000E+18           
         89  traj.phases.phase0.indep_states.states:vy_19                           c    -1.000000E+18     2.923999E+00     1.000000E+18           
         90  traj.phases.phase0.indep_states.states:vy_20                           c    -1.000000E+18     3.379547E+00     1.000000E+18           
         91  traj.phases.phase0.indep_states.states:vy_21                           c    -1.000000E+18     3.379547E+00     1.000000E+18           
         92  traj.phases.phase0.indep_states.states:vy_22                           c    -1.000000E+18    -2.421144E-23     1.000000E+18           
         93  traj.phases.phase0.indep_states.states:m_0                             c    -1.000000E+18     1.073668E+02     1.000000E+18           
         94  traj.phases.phase0.indep_states.states:m_1                             c    -1.000000E+18     1.073668E+02     1.000000E+18           
         95  traj.phases.phase0.indep_states.states:m_2                             c    -1.000000E+18     9.773367E+01     1.000000E+18           
         96  traj.phases.phase0.indep_states.states:m_3                             c    -1.000000E+18     9.773367E+01     1.000000E+18           
         97  traj.phases.phase0.indep_states.states:m_4                             c    -1.000000E+18     8.810050E+01     1.000000E+18           
         98  traj.phases.phase0.indep_states.states:m_5                             c    -1.000000E+18     8.810050E+01     1.000000E+18           
         99  traj.phases.phase0.indep_states.states:m_6                             c    -1.000000E+18     7.846734E+01     1.000000E+18           
        100  traj.phases.phase0.indep_states.states:m_7                             c    -1.000000E+18     7.846734E+01     1.000000E+18           
        101  traj.phases.phase0.indep_states.states:m_8                             c    -1.000000E+18     6.883417E+01     1.000000E+18           
        102  traj.phases.phase0.indep_states.states:m_9                             c    -1.000000E+18     6.883417E+01     1.000000E+18           
        103  traj.phases.phase0.indep_states.states:m_10                            c    -1.000000E+18     5.920100E+01     1.000000E+18           
        104  traj.phases.phase0.indep_states.states:m_11                            c    -1.000000E+18     5.920100E+01     1.000000E+18           
        105  traj.phases.phase0.indep_states.states:m_12                            c    -1.000000E+18     4.956784E+01     1.000000E+18           
        106  traj.phases.phase0.indep_states.states:m_13                            c    -1.000000E+18     4.956784E+01     1.000000E+18           
        107  traj.phases.phase0.indep_states.states:m_14                            c    -1.000000E+18     3.993467E+01     1.000000E+18           
        108  traj.phases.phase0.indep_states.states:m_15                            c    -1.000000E+18     3.993467E+01     1.000000E+18           
        109  traj.phases.phase0.indep_states.states:m_16                            c    -1.000000E+18     3.030151E+01     1.000000E+18           
        110  traj.phases.phase0.indep_states.states:m_17                            c    -1.000000E+18     3.030151E+01     1.000000E+18           
        111  traj.phases.phase0.indep_states.states:m_18                            c    -1.000000E+18     2.066834E+01     1.000000E+18           
        112  traj.phases.phase0.indep_states.states:m_19                            c    -1.000000E+18     2.066834E+01     1.000000E+18           
        113  traj.phases.phase0.indep_states.states:m_20                            c    -1.000000E+18     1.103517E+01     1.000000E+18           
        114  traj.phases.phase0.indep_states.states:m_21                            c    -1.000000E+18     1.103517E+01     1.000000E+18           
        115  traj.phases.phase0.indep_states.states:m_22                            c    -1.000000E+18     1.402009E+00     1.000000E+18           
        116  traj.phases.phase0.control_group.indep_controls.controls:theta_0       c    -1.570000E+00     1.477517E+00     1.570000E+00           
        117  traj.phases.phase0.control_group.indep_controls.controls:theta_1       c    -1.570000E+00     1.468233E+00     1.570000E+00           
        118  traj.phases.phase0.control_group.indep_controls.controls:theta_2       c    -1.570000E+00     1.474148E+00     1.570000E+00           
        119  traj.phases.phase0.control_group.indep_controls.controls:theta_3       c    -1.570000E+00     1.474148E+00     1.570000E+00           
        120  traj.phases.phase0.control_group.indep_controls.controls:theta_4       c    -1.570000E+00     1.477669E+00     1.570000E+00           
        121  traj.phases.phase0.control_group.indep_controls.controls:theta_5       c    -1.570000E+00     1.461203E+00     1.570000E+00           
        122  traj.phases.phase0.control_group.indep_controls.controls:theta_6       c    -1.570000E+00     1.461203E+00     1.570000E+00           
        123  traj.phases.phase0.control_group.indep_controls.controls:theta_7       c    -1.570000E+00     1.442523E+00     1.570000E+00           
        124  traj.phases.phase0.control_group.indep_controls.controls:theta_8       c    -1.570000E+00     1.439401E+00     1.570000E+00           
        125  traj.phases.phase0.control_group.indep_controls.controls:theta_9       c    -1.570000E+00     1.439401E+00     1.570000E+00           
        126  traj.phases.phase0.control_group.indep_controls.controls:theta_10      c    -1.570000E+00     1.438089E+00     1.570000E+00           
        127  traj.phases.phase0.control_group.indep_controls.controls:theta_11      c    -1.570000E+00     1.424836E+00     1.570000E+00           
        128  traj.phases.phase0.control_group.indep_controls.controls:theta_12      c    -1.570000E+00     1.424836E+00     1.570000E+00           
        129  traj.phases.phase0.control_group.indep_controls.controls:theta_13      c    -1.570000E+00     1.406383E+00     1.570000E+00           
        130  traj.phases.phase0.control_group.indep_controls.controls:theta_14      c    -1.570000E+00     1.389470E+00     1.570000E+00           
        131  traj.phases.phase0.control_group.indep_controls.controls:theta_15      c    -1.570000E+00     1.389470E+00     1.570000E+00           
        132  traj.phases.phase0.control_group.indep_controls.controls:theta_16      c    -1.570000E+00     1.375128E+00     1.570000E+00           
        133  traj.phases.phase0.control_group.indep_controls.controls:theta_17      c    -1.570000E+00     1.364390E+00     1.570000E+00           
        134  traj.phases.phase0.control_group.indep_controls.controls:theta_18      c    -1.570000E+00     1.364390E+00     1.570000E+00           
        135  traj.phases.phase0.control_group.indep_controls.controls:theta_19      c    -1.570000E+00     1.348778E+00     1.570000E+00           
        136  traj.phases.phase0.control_group.indep_controls.controls:theta_20      c    -1.570000E+00     1.319811E+00     1.570000E+00           
        137  traj.phases.phase0.control_group.indep_controls.controls:theta_21      c    -1.570000E+00     1.319811E+00     1.570000E+00           
        138  traj.phases.phase0.control_group.indep_controls.controls:theta_22      c    -1.570000E+00     1.283485E+00     1.570000E+00           
        139  traj.phases.phase0.control_group.indep_controls.controls:theta_23      c    -1.570000E+00     1.245798E+00     1.570000E+00           
        140  traj.phases.phase0.control_group.indep_controls.controls:theta_24      c    -1.570000E+00     1.245798E+00     1.570000E+00           
        141  traj.phases.phase0.control_group.indep_controls.controls:theta_25      c    -1.570000E+00     1.187473E+00     1.570000E+00           
        142  traj.phases.phase0.control_group.indep_controls.controls:theta_26      c    -1.570000E+00     1.089238E+00     1.570000E+00           
        143  traj.phases.phase0.control_group.indep_controls.controls:theta_27      c    -1.570000E+00     1.089238E+00     1.570000E+00           
        144  traj.phases.phase0.control_group.indep_controls.controls:theta_28      c    -1.570000E+00     9.418841E-01     1.570000E+00           
        145  traj.phases.phase0.control_group.indep_controls.controls:theta_29      c    -1.570000E+00     7.362030E-01     1.570000E+00           
        146  traj.phases.phase0.control_group.indep_controls.controls:theta_30      c    -1.570000E+00     7.362030E-01     1.570000E+00           
        147  traj.phases.phase0.control_group.indep_controls.controls:theta_31      c    -1.570000E+00     4.319487E-01     1.570000E+00           
        148  traj.phases.phase0.control_group.indep_controls.controls:theta_32      c    -1.570000E+00    -1.112473E-02     1.570000E+00           
        149  traj.phases.phase0.control_group.indep_controls.controls:theta_33      c    -1.570000E+00    -1.112473E-02     1.570000E+00           
        150  traj.phases.phase0.control_group.indep_controls.controls:theta_34      c    -1.570000E+00    -4.570600E-01     1.570000E+00           
        151  traj.phases.phase0.control_group.indep_controls.controls:theta_35      c    -1.570000E+00    -7.698997E-01     1.570000E+00           

   Constraints (i - inequality, e - equality)
      Index  Name                                                               Type          Lower           Value           Upper    Status  Lagrange Multiplier (N/A)
          0  traj.phases.phase0->final_boundary_constraint->y                      e   1.850000E+05    1.850000E+05    1.850000E+05              9.00000E+100
          1  traj.phases.phase0->final_boundary_constraint->vx                     e   7.796696E+03    7.796696E+03    7.796696E+03              9.00000E+100
          2  traj.phases.phase0->final_boundary_constraint->vy                     e   0.000000E+00   -2.421144E-20    0.000000E+00              9.00000E+100
          3  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00   -1.188094E-10    0.000000E+00              9.00000E+100
          4  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00    1.371169E-10    0.000000E+00              9.00000E+100
          5  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00   -2.557595E-10    0.000000E+00              9.00000E+100
          6  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00    2.888822E-10    0.000000E+00              9.00000E+100
          7  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00   -1.643806E-10    0.000000E+00              9.00000E+100
          8  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00   -7.405641E-10    0.000000E+00              9.00000E+100
          9  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00    3.453420E-10    0.000000E+00              9.00000E+100
         10  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00    4.648821E-10    0.000000E+00              9.00000E+100
         11  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00   -8.441020E-10    0.000000E+00              9.00000E+100
         12  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00    5.812105E-10    0.000000E+00              9.00000E+100
         13  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00    2.671527E-10    0.000000E+00              9.00000E+100
         14  traj.phases.phase0.collocation_constraint.defects:x                   e   0.000000E+00   -6.157080E-09    0.000000E+00              9.00000E+100
         15  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    4.185466E-10    0.000000E+00              9.00000E+100
         16  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    9.614961E-09    0.000000E+00              9.00000E+100
         17  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    2.809379E-08    0.000000E+00              9.00000E+100
         18  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    3.174746E-08    0.000000E+00              9.00000E+100
         19  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    1.376446E-08    0.000000E+00              9.00000E+100
         20  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00   -3.754024E-08    0.000000E+00              9.00000E+100
         21  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00   -5.322523E-08    0.000000E+00              9.00000E+100
         22  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    2.998142E-09    0.000000E+00              9.00000E+100
         23  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    2.476581E-09    0.000000E+00              9.00000E+100
         24  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    1.813847E-09    0.000000E+00              9.00000E+100
         25  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    2.495046E-10    0.000000E+00              9.00000E+100
         26  traj.phases.phase0.collocation_constraint.defects:y                   e   0.000000E+00    8.522368E-09    0.000000E+00              9.00000E+100
         27  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    3.499577E-09    0.000000E+00              9.00000E+100
         28  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    3.213875E-09    0.000000E+00              9.00000E+100
         29  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    8.760738E-09    0.000000E+00              9.00000E+100
         30  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    1.050294E-08    0.000000E+00              9.00000E+100
         31  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    1.502428E-08    0.000000E+00              9.00000E+100
         32  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    3.872966E-08    0.000000E+00              9.00000E+100
         33  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    1.357671E-08    0.000000E+00              9.00000E+100
         34  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    3.378725E-09    0.000000E+00              9.00000E+100
         35  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    2.245357E-08    0.000000E+00              9.00000E+100
         36  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    6.435004E-09    0.000000E+00              9.00000E+100
         37  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    2.368121E-09    0.000000E+00              9.00000E+100
         38  traj.phases.phase0.collocation_constraint.defects:vx                  e   0.000000E+00    2.374244E-08    0.000000E+00              9.00000E+100
         39  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00    2.920377E-08    0.000000E+00              9.00000E+100
         40  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00    1.258180E-08    0.000000E+00              9.00000E+100
         41  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00   -2.350687E-08    0.000000E+00              9.00000E+100
         42  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00   -1.084222E-07    0.000000E+00              9.00000E+100
         43  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00   -1.702733E-07    0.000000E+00              9.00000E+100
         44  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00   -2.750436E-08    0.000000E+00              9.00000E+100
         45  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00   -1.483104E-08    0.000000E+00              9.00000E+100
         46  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00    2.808630E-08    0.000000E+00              9.00000E+100
         47  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00    6.222977E-08    0.000000E+00              9.00000E+100
         48  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00    9.789008E-09    0.000000E+00              9.00000E+100
         49  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00    1.080768E-09    0.000000E+00              9.00000E+100
         50  traj.phases.phase0.collocation_constraint.defects:vy                  e   0.000000E+00   -2.001000E-08    0.000000E+00              9.00000E+100
         51  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00    6.781475E-15    0.000000E+00              9.00000E+100
         52  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00    6.781475E-15    0.000000E+00              9.00000E+100
         53  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -8.815917E-14    0.000000E+00              9.00000E+100
         54  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00    7.459622E-14    0.000000E+00              9.00000E+100
         55  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -7.459622E-14    0.000000E+00              9.00000E+100
         56  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00    4.747032E-14    0.000000E+00              9.00000E+100
         57  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -4.747032E-14    0.000000E+00              9.00000E+100
         58  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00    4.747032E-14    0.000000E+00              9.00000E+100
         59  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -2.034442E-14    0.000000E+00              9.00000E+100
         60  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -6.781475E-15    0.000000E+00              9.00000E+100
         61  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00    2.034442E-14    0.000000E+00              9.00000E+100
         62  traj.phases.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -6.781475E-15    0.000000E+00              9.00000E+100
         63  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         64  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00   -1.136868E-13    0.000000E+00              9.00000E+100
         65  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         66  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         67  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         68  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         69  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         70  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         71  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         72  traj.phases.phase0.continuity_comp.defect_states:x                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         73  traj.phases.phase0.continuity_comp.defect_states:x                    e   2.678272E-12    1.455192E-11    2.678272E-12              9.00000E+100
         74  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         75  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         76  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         77  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         78  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         79  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         80  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         81  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         82  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         83  traj.phases.phase0.continuity_comp.defect_states:y                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         84  traj.phases.phase0.continuity_comp.defect_states:y                    e   8.235664E-12    2.910383E-11    8.235664E-12              9.00000E+100
         85  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         86  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         87  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         88  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         89  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         90  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         91  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         92  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         93  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         94  traj.phases.phase0.continuity_comp.defect_states:vx                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         95  traj.phases.phase0.continuity_comp.defect_states:vx                   e  -2.081668E-17    0.000000E+00   -2.081668E-17              9.00000E+100
         96  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         97  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         98  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         99  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        100  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        101  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        102  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        103  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        104  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        105  traj.phases.phase0.continuity_comp.defect_states:vy                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        106  traj.phases.phase0.continuity_comp.defect_states:vy                   e  -2.584939E-24    0.000000E+00   -2.584939E-24              9.00000E+100
        107  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        108  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        109  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        110  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        111  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        112  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        113  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        114  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        115  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        116  traj.phases.phase0.continuity_comp.defect_states:m                    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        117  traj.phases.phase0.continuity_comp.defect_states:m                    e  -8.952838E-13   -1.818989E-12   -8.952838E-13              9.00000E+100
        118  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00   -1.334854E-15    0.000000E+00              9.00000E+100
        119  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00    9.561283E-15    0.000000E+00              9.00000E+100
        120  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00   -2.623144E-15    0.000000E+00              9.00000E+100
        121  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00   -6.674272E-15    0.000000E+00              9.00000E+100
        122  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00   -1.210682E-15    0.000000E+00              9.00000E+100
        123  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00   -1.080301E-14    0.000000E+00              9.00000E+100
        124  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00   -2.110933E-15    0.000000E+00              9.00000E+100
        125  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00   -2.669709E-15    0.000000E+00              9.00000E+100
        126  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00    2.235105E-15    0.000000E+00              9.00000E+100
        127  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        128  traj.phases.phase0.continuity_comp.defect_control_rates:theta_rate    e   0.000000E+00   -2.980140E-15    0.000000E+00              9.00000E+100
        129  traj.phases.phase0.continuity_comp.defect_controls:theta              e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        130  traj.phases.phase0.continuity_comp.defect_controls:theta              e   2.168404E-17    0.000000E+00    2.168404E-17              9.00000E+100
        131  traj.phases.phase0.continuity_comp.defect_controls:theta              e  -4.065758E-17    0.000000E+00   -4.065758E-17              9.00000E+100
        132  traj.phases.phase0.continuity_comp.defect_controls:theta              e  -1.149181E-16   -1.145955E-16   -1.149181E-16              9.00000E+100
        133  traj.phases.phase0.continuity_comp.defect_controls:theta              e   3.702715E-17    1.759206E-16    3.702715E-17              9.00000E+100
        134  traj.phases.phase0.continuity_comp.defect_controls:theta              e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        135  traj.phases.phase0.continuity_comp.defect_controls:theta              e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        136  traj.phases.phase0.continuity_comp.defect_controls:theta              e  -4.177734E-18   -4.023448E-17   -4.177734E-18              9.00000E+100
        137  traj.phases.phase0.continuity_comp.defect_controls:theta              e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        138  traj.phases.phase0.continuity_comp.defect_controls:theta              e   3.964971E-16    4.342420E-16    3.964971E-16              9.00000E+100
        139  traj.phases.phase0.continuity_comp.defect_controls:theta              e  -1.734723E-16   -1.734723E-16   -1.734723E-16              9.00000E+100


   Exit Status
      Inform  Description
           0  Optimization terminated successfully.
--------------------------------------------------------------------------------
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/visualization/opt_report/opt_report.py:634: UserWarning: Attempting to set identical low and high ylims makes transformation singular; automatically expanding.
  ax.set_ylim([ymin_plot, ymax_plot])
Simulating trajectory traj
Model viewer data has already been recorded for Driver.
Done simulating trajectory traj
False
Hide code cell source
sol = om.CaseReader('dymos_solution.db').get_case('final')
sim = om.CaseReader('dymos_simulation.db').get_case('final')

fig, [traj_ax, control_ax] = plt.subplots(nrows=2, ncols=1, figsize=(10, 8))

traj_ax.plot(sol.get_val('traj.phase0.timeseries.x'),
             sol.get_val('traj.phase0.timeseries.y'),
             marker='o',
             ms=4,
             linestyle='None',
             label='solution')

traj_ax.plot(sim.get_val('traj.phase0.timeseries.x'),
             sim.get_val('traj.phase0.timeseries.y'),
             marker=None,
             linestyle='-',
             label='simulation')

traj_ax.set_xlabel('range (m)')
traj_ax.set_ylabel('altitude (m)')
traj_ax.set_aspect('equal')
traj_ax.grid(True)

control_ax.plot(sol.get_val('traj.phase0.timeseries.time'),
             sol.get_val('traj.phase0.timeseries.theta'),
             marker='o',
             ms=4,
             linestyle='None')

control_ax.plot(sim.get_val('traj.phase0.timeseries.time'),
             sim.get_val('traj.phase0.timeseries.theta'),
             linestyle='-',
             marker=None)

control_ax.set_xlabel('time (s)')
control_ax.set_ylabel('theta (deg)')
control_ax.grid(True)

plt.suptitle('Single Stage to Orbit Solution Using A Dynamic Control')
fig.legend(loc='lower center', ncol=2)

plt.show()
../../_images/45ffb86a2760a44a969d09145c4b4015b6f7d6a7737a616dc9b8bc4790a93ba2.png

References#

[LGuzmanP14]

James M Longuski, José J Guzmán, and John E Prussing. Optimal control with aerospace applications. Springer, 1 edition, 2014. ISBN 978-1-4939-4917-5. doi:https://doi.org/10.1007/978-1-4614-8945-0.