Timeseries Outputs#

Different optimal control transcriptions work in different ways. The Radau Pseudospectral transcription keeps a contiguous vector of state values at all nodes. The Gauss Lobatto transcription keeps two separate continuous vectors; one at the discretization nodes and the other at the collocation nodes. Retrieving a timeseries values of output values is thus transcription dependent.

In order to make obtaining the timeseries output of a phase easier, each phase provides a timeseries component which collects and outputs the appropriate timeseries data. For the pseudospectral transcriptions, timeseries outputs are provided at all nodes. By default, the timeseries output will include the following variables for every problem.

Paths to timeseries outputs in Dymos#

Path

Description

<phase path>.timeseries.time

Current time value

<phase path>.timeseries.time_phase

Current phase elapsed time

<phase path>.timeseries.<x>

Value of state variable named x

<phase path>.timeseries.<u>

Value of control variable named u

<phase path>.timeseries.<u>_rate

Time derivative of control named u

<phase path>.timeseries.<u>_rate2

Second time derivative of control named u

<phase path>.timeseries.<p>

Value of polynomial control variable named u

<phase path>.timeseries.<p>_rate

Time derivative of polynomial control named u

<phase path>.timeseries.<p>_rate2

Second time derivative of polynomial control named u

<phase path>.timeseries.<d>

Value of parameter named d

Adding additional timeseries outputs#

In addition to these default values, any output of the ODE can be added to the timeseries output using the add_timeseries_output method on Phase. These outputs are available as <phase path>.timeseries.<output name>. A glob pattern can be used with add_timeseries_output to add multiple outputs to the timeseries simultaneously. For instance, just passing ‘*’ as the variable name will add all dynamic outputs of the ODE to the timeseries.

Dymos will ignore any ODE outputs that are not sized such that the first dimension is the same as the number of nodes in the ODE. That is, if the output variable doesn’t appear to be dynamic, it will not be included in the timeseries outputs.

Phase.add_timeseries_output(name, output_name=None, units=unspecified, shape=unspecified, timeseries='timeseries', **kwargs)[source]

Add a variable to the timeseries outputs of the phase.

If name is given as an expression, this expression will be passed to an OpenMDAO ExecComp and the result computed and stored in the timeseries output under the variable name to the left of the equal sign.

Parameters:
namestr, or list of str

The name(s) of the variable to be used as a timeseries output, or a mathematical expression to be used as a timeseries output. If a name, it must be one of the integration variable, the phase-relative value of the integration variable (e.g. ‘time_phase’, one of the states, controls, control rates, or parameters, in the phase, the path to an output variable in the ODE, or a glob pattern matching some outputs in the ODE.

output_namestr or None or list or dict

The name of the variable as listed in the phase timeseries outputs. By default this is the last element in name when split by dots. The user may override the timeseries name if splitting the path causes name collisions.

unitsstr or None or _unspecified

The units to express the timeseries output. If None, use the units associated with the target. If provided, must be compatible with the target units. If a list of names is provided, units can be a matching list or dictionary.

shapetuple or _unspecified

The shape of the timeseries output variable. This must be provided (if not scalar) since Dymos doesn’t necessarily know the shape of ODE outputs until setup time.

timeseriesstr or None

The name of the timeseries to which the output is being added.

**kwargs

Additional arguments passed to the exec comp.

Interpolated Timeseries Outputs#

Sometimes a user may want to interpolate the results of a phase onto a different grid. This is particularly useful in the context of tandem phases. Additional timeseries may be added to a phase using the add_timeseries method. By default all timeseries will provide times, states, controls, and parameters on the specified output grid. Adding other variables is accomplished using the timeseries argument in the add_timeseries_output method.

Phase.add_timeseries(name, transcription, subset='all')[source]

Adds a new timeseries output upon which outputs can be provided.

Parameters:
namestr

A name for the timeseries output path.

transcriptionstr

A transcription object which provides a grid upon which the outputs of the timeseries are provided.

subsetstr

The name of the node subset in the given transcription at which outputs are to be provided.

Interpolating Timeseries Outputs#

Outputs from the timeseries are provided at the node resolution used to solve the problem. Sometimes it is useful to visualize the data at a different resolution - for instance to see oscillatory behavior in the solution that may not be noticeable by only viewing the solution nodes.

The Phase.interp method allows nodes to be provided as a sequence in the “tau space” (nondimensional time) of the phase. In phase tau space, the time-like variable is -1 at the start of the phase and +1 at the end of the phase.

For instance, let’s say we want to solve the minimum time climb example and plot the control solution at 100 nodes equally spaced throughout the phase.

import numpy as np
import matplotlib.pyplot as plt

from dymos.examples.min_time_climb.min_time_climb_ode import MinTimeClimbODE

p = om.Problem(model=om.Group())

p.driver = om.pyOptSparseDriver()
p.driver.options['optimizer'] = 'IPOPT'
p.driver.options['print_results'] = 'minimal'
p.driver.declare_coloring()

p.driver.opt_settings['tol'] = 1.0E-5
p.driver.opt_settings['print_level'] = 0
p.driver.opt_settings['mu_strategy'] = 'monotone'
p.driver.opt_settings['bound_mult_init_method'] = 'mu-based'
p.driver.opt_settings['mu_init'] = 0.01

tx = dm.Radau(num_segments=8, order=3)

traj = dm.Trajectory()

phase = dm.Phase(ode_class=MinTimeClimbODE, transcription=tx)
traj.add_phase('phase0', phase)

p.model.add_subsystem('traj', traj)

phase.set_time_options(fix_initial=True, duration_bounds=(50, 400),
                       duration_ref=100.0)

phase.add_state('r', fix_initial=True, lower=0, upper=1.0E6,
                ref=1.0E3, defect_ref=1.0E3, units='m',
                rate_source='flight_dynamics.r_dot')

phase.add_state('h', fix_initial=True, lower=0, upper=20000.0,
                ref=20_000, defect_ref=20_000, units='m',
                rate_source='flight_dynamics.h_dot', targets=['h'])

phase.add_state('v', fix_initial=True, lower=10.0,
                ref=1.0E2, defect_ref=1.0E2, units='m/s',
                rate_source='flight_dynamics.v_dot', targets=['v'])

phase.add_state('gam', fix_initial=True, lower=-1.5, upper=1.5,
                ref=1.0, defect_ref=1.0, units='rad',
                rate_source='flight_dynamics.gam_dot', targets=['gam'])

phase.add_state('m', fix_initial=True, lower=10.0, upper=1.0E5,
                ref=10_000, defect_ref=10_000, units='kg',
                rate_source='prop.m_dot', targets=['m'])

phase.add_control('alpha', units='deg', lower=-8.0, upper=8.0, scaler=1.0,
                    rate_continuity=True, rate_continuity_scaler=100.0,
                    rate2_continuity=False, targets=['alpha'])

phase.add_parameter('S', val=49.2386, units='m**2', opt=False, targets=['S'])
phase.add_parameter('Isp', val=1600.0, units='s', opt=False, targets=['Isp'])
phase.add_parameter('throttle', val=1.0, opt=False, targets=['throttle'])

phase.add_boundary_constraint('h', loc='final', equals=20000, scaler=1.0E-3)
phase.add_boundary_constraint('aero.mach', loc='final', equals=1.0)
phase.add_boundary_constraint('gam', loc='final', equals=0.0)

phase.add_path_constraint(name='h', lower=100.0, upper=20000, ref=20000)
phase.add_path_constraint(name='aero.mach', lower=0.1, upper=1.8)

# Minimize time at the end of the phase
phase.add_objective('time', loc='final', ref=1.0)

# test mixing wildcard ODE variable expansion and unit overrides
phase.add_timeseries_output(['aero.*', 'prop.thrust', 'prop.m_dot'],
                            units={'aero.f_lift': 'lbf', 'prop.thrust': 'lbf'})

p.model.linear_solver = om.DirectSolver()

p.setup(check=True)

p['traj.phase0.t_initial'] = 0.0
p['traj.phase0.t_duration'] = 350.0

phase.set_time_val(initial=0.0, duration=350.0)
phase.set_state_val('r', [0.0, 111319.54])
phase.set_state_val('h', [100.0, 20000.0])
phase.set_state_val('v', [135.964, 283.159])
phase.set_state_val('gam', [0.0, 0.0])
phase.set_state_val('m', [19030.468, 16841.431])
phase.set_control_val('alpha', [0.0, 0.0])

dm.run_problem(p)
--- Constraint Report [traj] ---
    --- phase0 ---
        [final]   2.0000e+04 == h [m]
        [final]   1.0000e+00 == aero.mach [None]
        [final]   0.0000e+00 == gam [rad]
        [path]    1.0000e+02 <= h <= 2.0000e+04  [m]
        [path]    1.0000e-01 <= aero.mach <= 1.8000e+00  [None]

INFO: checking out_of_order
INFO: checking system
INFO: checking solvers
INFO: checking dup_inputs
INFO: checking missing_recorders
INFO: checking unserializable_options
INFO: checking comp_has_no_outputs
INFO: checking auto_ivc_warnings
Model viewer data has already been recorded for Driver.
INFO: checking out_of_order
INFO: checking system
INFO: checking solvers
INFO: checking dup_inputs
INFO: checking missing_recorders
INFO: checking unserializable_options
INFO: checking comp_has_no_outputs
INFO: checking auto_ivc_warnings
Model viewer data has already been recorded for Driver.
INFO: checking out_of_order
INFO: checking system
INFO: checking solvers
INFO: checking dup_inputs
INFO: checking missing_recorders
INFO: checking unserializable_options
INFO: checking comp_has_no_outputs
INFO: checking auto_ivc_warnings
Full total jacobian for problem 'problem' was computed 3 times, taking 0.07026734800001577 seconds.
Total jacobian shape: (200, 145) 
Jacobian shape: (200, 145)  (4.19% nonzero)
FWD solves: 17   REV solves: 0
Total colors vs. total size: 17 vs 145  (88.28% improvement)

Sparsity computed using tolerance: 1e-25
Time to compute sparsity:   0.0703 sec
Time to compute coloring:   0.0880 sec
Memory to compute coloring:   0.2500 MB
Coloring created on: 2024-11-18 20:37:27
/usr/share/miniconda/envs/test/lib/python3.11/site-packages/openmdao/core/total_jac.py:1652: DerivativesWarning:Constraints or objectives [('traj.phases.phase0->path_constraint->h', inds=[(0, 0)]), ('traj.phases.phase0->path_constraint->mach', inds=[(0, 0)])] cannot be impacted by the design variables of the problem.
minimal_print is not available for this solution


Optimization Problem -- Optimization using pyOpt_sparse
================================================================================
    Objective Function: _objfunc

    Solution: 
--------------------------------------------------------------------------------
    Total Time:                    3.2225
       User Objective Time :       1.2297
       User Sensitivity Time :     1.1505
       Interface Time :            0.3760
       Opt Solver Time:            0.4663
    Calls to Objective Function :     174
    Calls to Sens Function :          104


   Objectives
      Index  Name                     Value
          0  traj.phase0.t     3.253204E+02

   Variables (c - continuous, i - integer, d - discrete)
      Index  Name                            Type      Lower Bound            Value      Upper Bound     Status
          0  traj.phase0.t_duration_0           c     5.000000E-01     3.253204E+00     4.000000E+00           
          1  traj.phase0.states:r_0             c     0.000000E+00     2.637841E+00     1.000000E+03           
          2  traj.phase0.states:r_1             c     0.000000E+00     7.739037E+00     1.000000E+03           
          3  traj.phase0.states:r_2             c     0.000000E+00     9.490993E+00     1.000000E+03           
          4  traj.phase0.states:r_3             c     0.000000E+00     1.327357E+01     1.000000E+03           
          5  traj.phase0.states:r_4             c     0.000000E+00     1.833262E+01     1.000000E+03           
          6  traj.phase0.states:r_5             c     0.000000E+00     1.996971E+01     1.000000E+03           
          7  traj.phase0.states:r_6             c     0.000000E+00     2.400238E+01     1.000000E+03           
          8  traj.phase0.states:r_7             c     0.000000E+00     3.025519E+01     1.000000E+03           
          9  traj.phase0.states:r_8             c     0.000000E+00     3.242125E+01     1.000000E+03           
         10  traj.phase0.states:r_9             c     0.000000E+00     3.780648E+01     1.000000E+03           
         11  traj.phase0.states:r_10            c     0.000000E+00     4.608203E+01     1.000000E+03           
         12  traj.phase0.states:r_11            c     0.000000E+00     4.885164E+01     1.000000E+03           
         13  traj.phase0.states:r_12            c     0.000000E+00     5.518480E+01     1.000000E+03           
         14  traj.phase0.states:r_13            c     0.000000E+00     6.405457E+01     1.000000E+03           
         15  traj.phase0.states:r_14            c     0.000000E+00     6.691000E+01     1.000000E+03           
         16  traj.phase0.states:r_15            c     0.000000E+00     7.362471E+01     1.000000E+03           
         17  traj.phase0.states:r_16            c     0.000000E+00     8.329900E+01     1.000000E+03           
         18  traj.phase0.states:r_17            c     0.000000E+00     8.646720E+01     1.000000E+03           
         19  traj.phase0.states:r_18            c     0.000000E+00     9.388694E+01     1.000000E+03           
         20  traj.phase0.states:r_19            c     0.000000E+00     1.038337E+02     1.000000E+03           
         21  traj.phase0.states:r_20            c     0.000000E+00     1.067134E+02     1.000000E+03           
         22  traj.phase0.states:r_21            c     0.000000E+00     1.119502E+02     1.000000E+03           
         23  traj.phase0.states:r_22            c     0.000000E+00     1.177690E+02     1.000000E+03           
         24  traj.phase0.states:r_23            c     0.000000E+00     1.196756E+02     1.000000E+03           
         25  traj.phase0.states:h_0             c     0.000000E+00     4.999997E-03     1.000000E+00           
         26  traj.phase0.states:h_1             c     0.000000E+00     6.309076E-02     1.000000E+00           
         27  traj.phase0.states:h_2             c     0.000000E+00     1.121188E-01     1.000000E+00           
         28  traj.phase0.states:h_3             c     0.000000E+00     2.248131E-01     1.000000E+00           
         29  traj.phase0.states:h_4             c     0.000000E+00     3.707366E-01     1.000000E+00           
         30  traj.phase0.states:h_5             c     0.000000E+00     4.035153E-01     1.000000E+00           
         31  traj.phase0.states:h_6             c     0.000000E+00     4.460697E-01     1.000000E+00           
         32  traj.phase0.states:h_7             c     0.000000E+00     4.381600E-01     1.000000E+00           
         33  traj.phase0.states:h_8             c     0.000000E+00     4.216805E-01     1.000000E+00           
         34  traj.phase0.states:h_9             c     0.000000E+00     3.787952E-01     1.000000E+00           
         35  traj.phase0.states:h_10            c     0.000000E+00     3.493046E-01     1.000000E+00           
         36  traj.phase0.states:h_11            c     0.000000E+00     3.567527E-01     1.000000E+00           
         37  traj.phase0.states:h_12            c     0.000000E+00     3.853664E-01     1.000000E+00           
         38  traj.phase0.states:h_13            c     0.000000E+00     4.275797E-01     1.000000E+00           
         39  traj.phase0.states:h_14            c     0.000000E+00     4.347828E-01     1.000000E+00           
         40  traj.phase0.states:h_15            c     0.000000E+00     4.442897E-01     1.000000E+00           
         41  traj.phase0.states:h_16            c     0.000000E+00     4.487381E-01     1.000000E+00           
         42  traj.phase0.states:h_17            c     0.000000E+00     4.508781E-01     1.000000E+00           
         43  traj.phase0.states:h_18            c     0.000000E+00     4.651480E-01     1.000000E+00           
         44  traj.phase0.states:h_19            c     0.000000E+00     5.588391E-01     1.000000E+00           
         45  traj.phase0.states:h_20            c     0.000000E+00     6.204695E-01     1.000000E+00           
         46  traj.phase0.states:h_21            c     0.000000E+00     7.973559E-01     1.000000E+00           
         47  traj.phase0.states:h_22            c     0.000000E+00     9.850850E-01     1.000000E+00           
         48  traj.phase0.states:h_23            c     0.000000E+00     1.000000E+00     1.000000E+00          u
         49  traj.phase0.states:v_0             c     1.000000E-01     2.229877E+00     1.000000E+19           
         50  traj.phase0.states:v_1             c     1.000000E-01     3.039675E+00     1.000000E+19           
         51  traj.phase0.states:v_2             c     1.000000E-01     3.066591E+00     1.000000E+19           
         52  traj.phase0.states:v_3             c     1.000000E-01     3.022225E+00     1.000000E+19           
         53  traj.phase0.states:v_4             c     1.000000E-01     2.828282E+00     1.000000E+19           
         54  traj.phase0.states:v_5             c     1.000000E-01     2.811670E+00     1.000000E+19           
         55  traj.phase0.states:v_6             c     1.000000E-01     2.943772E+00     1.000000E+19           
         56  traj.phase0.states:v_7             c     1.000000E-01     3.386840E+00     1.000000E+19           
         57  traj.phase0.states:v_8             c     1.000000E-01     3.559156E+00     1.000000E+19           
         58  traj.phase0.states:v_9             c     1.000000E-01     3.969503E+00     1.000000E+19           
         59  traj.phase0.states:v_10            c     1.000000E-01     4.345897E+00     1.000000E+19           
         60  traj.phase0.states:v_11            c     1.000000E-01     4.380089E+00     1.000000E+19           
         61  traj.phase0.states:v_12            c     1.000000E-01     4.431640E+00     1.000000E+19           
         62  traj.phase0.states:v_13            c     1.000000E-01     4.517315E+00     1.000000E+19           
         63  traj.phase0.states:v_14            c     1.000000E-01     4.574616E+00     1.000000E+19           
         64  traj.phase0.states:v_15            c     1.000000E-01     4.734368E+00     1.000000E+19           
         65  traj.phase0.states:v_16            c     1.000000E-01     4.983114E+00     1.000000E+19           
         66  traj.phase0.states:v_17            c     1.000000E-01     5.055009E+00     1.000000E+19           
         67  traj.phase0.states:v_18            c     1.000000E-01     5.177031E+00     1.000000E+19           
         68  traj.phase0.states:v_19            c     1.000000E-01     4.990167E+00     1.000000E+19           
         69  traj.phase0.states:v_20            c     1.000000E-01     4.776168E+00     1.000000E+19           
         70  traj.phase0.states:v_21            c     1.000000E-01     4.012747E+00     1.000000E+19           
         71  traj.phase0.states:v_22            c     1.000000E-01     3.067220E+00     1.000000E+19           
         72  traj.phase0.states:v_23            c     1.000000E-01     2.950719E+00     1.000000E+19           
         73  traj.phase0.states:gam_0           c    -1.500000E+00     4.619597E-02     1.500000E+00           
         74  traj.phase0.states:gam_1           c    -1.500000E+00     4.272152E-01     1.500000E+00           
         75  traj.phase0.states:gam_2           c    -1.500000E+00     4.879843E-01     1.500000E+00           
         76  traj.phase0.states:gam_3           c    -1.500000E+00     5.639954E-01     1.500000E+00           
         77  traj.phase0.states:gam_4           c    -1.500000E+00     4.317062E-01     1.500000E+00           
         78  traj.phase0.states:gam_5           c    -1.500000E+00     3.265088E-01     1.500000E+00           
         79  traj.phase0.states:gam_6           c    -1.500000E+00     9.876657E-02     1.500000E+00           
         80  traj.phase0.states:gam_7           c    -1.500000E+00    -1.255410E-01     1.500000E+00           
         81  traj.phase0.states:gam_8           c    -1.500000E+00    -1.629673E-01     1.500000E+00           
         82  traj.phase0.states:gam_9           c    -1.500000E+00    -1.392727E-01     1.500000E+00           
         83  traj.phase0.states:gam_10          c    -1.500000E+00     1.665445E-02     1.500000E+00           
         84  traj.phase0.states:gam_11          c    -1.500000E+00     6.494162E-02     1.500000E+00           
         85  traj.phase0.states:gam_12          c    -1.500000E+00     1.053947E-01     1.500000E+00           
         86  traj.phase0.states:gam_13          c    -1.500000E+00     6.666109E-02     1.500000E+00           
         87  traj.phase0.states:gam_14          c    -1.500000E+00     4.591422E-02     1.500000E+00           
         88  traj.phase0.states:gam_15          c    -1.500000E+00     1.498471E-02     1.500000E+00           
         89  traj.phase0.states:gam_16          c    -1.500000E+00     1.038295E-02     1.500000E+00           
         90  traj.phase0.states:gam_17          c    -1.500000E+00     1.850414E-02     1.500000E+00           
         91  traj.phase0.states:gam_18          c    -1.500000E+00     7.525419E-02     1.500000E+00           
         92  traj.phase0.states:gam_19          c    -1.500000E+00     3.387751E-01     1.500000E+00           
         93  traj.phase0.states:gam_20          c    -1.500000E+00     4.862925E-01     1.500000E+00           
         94  traj.phase0.states:gam_21          c    -1.500000E+00     6.652380E-01     1.500000E+00           
         95  traj.phase0.states:gam_22          c    -1.500000E+00     3.073223E-01     1.500000E+00           
         96  traj.phase0.states:gam_23          c    -1.500000E+00    -2.003042E-33     1.500000E+00           
         97  traj.phase0.states:m_0             c     1.000000E-03     1.890596E+00     1.000000E+01           
         98  traj.phase0.states:m_1             c     1.000000E-03     1.871835E+00     1.000000E+01           
         99  traj.phase0.states:m_2             c     1.000000E-03     1.865977E+00     1.000000E+01           
        100  traj.phase0.states:m_3             c     1.000000E-03     1.854296E+00     1.000000E+01           
        101  traj.phase0.states:m_4             c     1.000000E-03     1.841664E+00     1.000000E+01           
        102  traj.phase0.states:m_5             c     1.000000E-03     1.838504E+00     1.000000E+01           
        103  traj.phase0.states:m_6             c     1.000000E-03     1.831626E+00     1.000000E+01           
        104  traj.phase0.states:m_7             c     1.000000E-03     1.821751E+00     1.000000E+01           
        105  traj.phase0.states:m_8             c     1.000000E-03     1.818164E+00     1.000000E+01           
        106  traj.phase0.states:m_9             c     1.000000E-03     1.808560E+00     1.000000E+01           
        107  traj.phase0.states:m_10            c     1.000000E-03     1.792732E+00     1.000000E+01           
        108  traj.phase0.states:m_11            c     1.000000E-03     1.787323E+00     1.000000E+01           
        109  traj.phase0.states:m_12            c     1.000000E-03     1.775341E+00     1.000000E+01           
        110  traj.phase0.states:m_13            c     1.000000E-03     1.759503E+00     1.000000E+01           
        111  traj.phase0.states:m_14            c     1.000000E-03     1.754667E+00     1.000000E+01           
        112  traj.phase0.states:m_15            c     1.000000E-03     1.743366E+00     1.000000E+01           
        113  traj.phase0.states:m_16            c     1.000000E-03     1.727256E+00     1.000000E+01           
        114  traj.phase0.states:m_17            c     1.000000E-03     1.721989E+00     1.000000E+01           
        115  traj.phase0.states:m_18            c     1.000000E-03     1.709806E+00     1.000000E+01           
        116  traj.phase0.states:m_19            c     1.000000E-03     1.694530E+00     1.000000E+01           
        117  traj.phase0.states:m_20            c     1.000000E-03     1.690605E+00     1.000000E+01           
        118  traj.phase0.states:m_21            c     1.000000E-03     1.685074E+00     1.000000E+01           
        119  traj.phase0.states:m_22            c     1.000000E-03     1.682152E+00     1.000000E+01           
        120  traj.phase0.states:m_23            c     1.000000E-03     1.681652E+00     1.000000E+01           
        121  traj.phase0.controls:alpha_0       c    -8.000000E+00     4.289002E+00     8.000000E+00           
        122  traj.phase0.controls:alpha_1       c    -8.000000E+00     2.743100E+00     8.000000E+00           
        123  traj.phase0.controls:alpha_2       c    -8.000000E+00     1.583497E+00     8.000000E+00           
        124  traj.phase0.controls:alpha_3       c    -8.000000E+00     1.451648E+00     8.000000E+00           
        125  traj.phase0.controls:alpha_4       c    -8.000000E+00     1.318112E+00     8.000000E+00           
        126  traj.phase0.controls:alpha_5       c    -8.000000E+00     1.261674E+00     8.000000E+00           
        127  traj.phase0.controls:alpha_6       c    -8.000000E+00     1.274689E+00     8.000000E+00           
        128  traj.phase0.controls:alpha_7       c    -8.000000E+00     1.348987E+00     8.000000E+00           
        129  traj.phase0.controls:alpha_8       c    -8.000000E+00     1.541789E+00     8.000000E+00           
        130  traj.phase0.controls:alpha_9       c    -8.000000E+00     1.624621E+00     8.000000E+00           
        131  traj.phase0.controls:alpha_10      c    -8.000000E+00     1.735723E+00     8.000000E+00           
        132  traj.phase0.controls:alpha_11      c    -8.000000E+00     1.591575E+00     8.000000E+00           
        133  traj.phase0.controls:alpha_12      c    -8.000000E+00     1.474096E+00     8.000000E+00           
        134  traj.phase0.controls:alpha_13      c    -8.000000E+00     1.233285E+00     8.000000E+00           
        135  traj.phase0.controls:alpha_14      c    -8.000000E+00     1.123528E+00     8.000000E+00           
        136  traj.phase0.controls:alpha_15      c    -8.000000E+00     1.142545E+00     8.000000E+00           
        137  traj.phase0.controls:alpha_16      c    -8.000000E+00     1.209550E+00     8.000000E+00           
        138  traj.phase0.controls:alpha_17      c    -8.000000E+00     1.281856E+00     8.000000E+00           
        139  traj.phase0.controls:alpha_18      c    -8.000000E+00     1.299873E+00     8.000000E+00           
        140  traj.phase0.controls:alpha_19      c    -8.000000E+00     1.664437E+00     8.000000E+00           
        141  traj.phase0.controls:alpha_20      c    -8.000000E+00     3.237875E+00     8.000000E+00           
        142  traj.phase0.controls:alpha_21      c    -8.000000E+00     3.994455E+00     8.000000E+00           
        143  traj.phase0.controls:alpha_22      c    -8.000000E+00     3.797223E+00     8.000000E+00           
        144  traj.phase0.controls:alpha_23      c    -8.000000E+00    -3.278871E+00     8.000000E+00           

   Constraints (i - inequality, e - equality)
      Index  Name                                                        Type          Lower           Value           Upper    Status  Lagrange Multiplier (N/A)
          0  traj.phases.phase0->final_boundary_constraint->h               e   2.000000E+01    2.000000E+01    2.000000E+01              9.00000E+100
          1  traj.phases.phase0->final_boundary_constraint->mach            e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
          2  traj.phases.phase0->final_boundary_constraint->gam             e   0.000000E+00   -2.003042E-33    0.000000E+00              9.00000E+100
          3  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    5.200967E-15    0.000000E+00              9.00000E+100
          4  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00   -5.778852E-16    0.000000E+00              9.00000E+100
          5  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    6.819045E-14    0.000000E+00              9.00000E+100
          6  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    8.090393E-14    0.000000E+00              9.00000E+100
          7  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    2.773849E-14    0.000000E+00              9.00000E+100
          8  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.964810E-14    0.000000E+00              9.00000E+100
          9  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.132655E-13    0.000000E+00              9.00000E+100
         10  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    4.634639E-13    0.000000E+00              9.00000E+100
         11  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    9.419529E-13    0.000000E+00              9.00000E+100
         12  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    7.986374E-13    0.000000E+00              9.00000E+100
         13  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.248232E-13    0.000000E+00              9.00000E+100
         14  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    7.258238E-13    0.000000E+00              9.00000E+100
         15  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.259790E-12    0.000000E+00              9.00000E+100
         16  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.510592E-12    0.000000E+00              9.00000E+100
         17  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    4.935140E-13    0.000000E+00              9.00000E+100
         18  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.745213E-13    0.000000E+00              9.00000E+100
         19  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    5.547698E-14    0.000000E+00              9.00000E+100
         20  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.058686E-12    0.000000E+00              9.00000E+100
         21  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.240142E-12    0.000000E+00              9.00000E+100
         22  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.056374E-12    0.000000E+00              9.00000E+100
         23  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00   -6.703468E-14    0.000000E+00              9.00000E+100
         24  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    2.623599E-13    0.000000E+00              9.00000E+100
         25  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    8.263758E-13    0.000000E+00              9.00000E+100
         26  traj.phase0.collocation_constraint.defects:r                   e   0.000000E+00    1.074866E-13    0.000000E+00              9.00000E+100
         27  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
         28  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    1.986480E-17    0.000000E+00              9.00000E+100
         29  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    4.478610E-15    0.000000E+00              9.00000E+100
         30  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    9.592894E-15    0.000000E+00              9.00000E+100
         31  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    1.112429E-14    0.000000E+00              9.00000E+100
         32  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -1.473607E-15    0.000000E+00              9.00000E+100
         33  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -5.244308E-15    0.000000E+00              9.00000E+100
         34  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    1.925080E-15    0.000000E+00              9.00000E+100
         35  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    4.001855E-14    0.000000E+00              9.00000E+100
         36  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    4.695317E-14    0.000000E+00              9.00000E+100
         37  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    1.742324E-14    0.000000E+00              9.00000E+100
         38  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -4.496489E-14    0.000000E+00              9.00000E+100
         39  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -3.388574E-14    0.000000E+00              9.00000E+100
         40  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    1.504669E-14    0.000000E+00              9.00000E+100
         41  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    3.838241E-14    0.000000E+00              9.00000E+100
         42  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    2.722562E-14    0.000000E+00              9.00000E+100
         43  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -1.133106E-14    0.000000E+00              9.00000E+100
         44  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -2.097452E-14    0.000000E+00              9.00000E+100
         45  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -5.637993E-15    0.000000E+00              9.00000E+100
         46  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    2.794797E-14    0.000000E+00              9.00000E+100
         47  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00    6.414526E-15    0.000000E+00              9.00000E+100
         48  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -9.939626E-15    0.000000E+00              9.00000E+100
         49  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -1.675867E-15    0.000000E+00              9.00000E+100
         50  traj.phase0.collocation_constraint.defects:h                   e   0.000000E+00   -1.083535E-15    0.000000E+00              9.00000E+100
         51  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    7.223565E-16    0.000000E+00              9.00000E+100
         52  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00   -1.083535E-15    0.000000E+00              9.00000E+100
         53  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    4.541817E-14    0.000000E+00              9.00000E+100
         54  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    1.936593E-13    0.000000E+00              9.00000E+100
         55  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    4.788095E-13    0.000000E+00              9.00000E+100
         56  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    2.814030E-13    0.000000E+00              9.00000E+100
         57  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    2.483326E-13    0.000000E+00              9.00000E+100
         58  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00   -6.546356E-15    0.000000E+00              9.00000E+100
         59  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00   -3.250604E-14    0.000000E+00              9.00000E+100
         60  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    1.272250E-13    0.000000E+00              9.00000E+100
         61  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    5.613613E-13    0.000000E+00              9.00000E+100
         62  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    6.082693E-13    0.000000E+00              9.00000E+100
         63  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    2.706354E-13    0.000000E+00              9.00000E+100
         64  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00   -3.349928E-14    0.000000E+00              9.00000E+100
         65  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    3.536161E-13    0.000000E+00              9.00000E+100
         66  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    5.079746E-13    0.000000E+00              9.00000E+100
         67  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    6.177503E-13    0.000000E+00              9.00000E+100
         68  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    1.542231E-13    0.000000E+00              9.00000E+100
         69  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    2.158040E-14    0.000000E+00              9.00000E+100
         70  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    1.449679E-13    0.000000E+00              9.00000E+100
         71  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    8.112064E-13    0.000000E+00              9.00000E+100
         72  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    9.318399E-14    0.000000E+00              9.00000E+100
         73  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00   -1.278571E-13    0.000000E+00              9.00000E+100
         74  traj.phase0.collocation_constraint.defects:v                   e   0.000000E+00    2.344950E-13    0.000000E+00              9.00000E+100
         75  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00    1.763566E-16    0.000000E+00              9.00000E+100
         76  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00    7.759689E-16    0.000000E+00              9.00000E+100
         77  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -1.410853E-16    0.000000E+00              9.00000E+100
         78  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -4.260775E-14    0.000000E+00              9.00000E+100
         79  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -1.367557E-13    0.000000E+00              9.00000E+100
         80  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -1.547353E-13    0.000000E+00              9.00000E+100
         81  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -1.710659E-13    0.000000E+00              9.00000E+100
         82  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -5.604612E-14    0.000000E+00              9.00000E+100
         83  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -2.652403E-13    0.000000E+00              9.00000E+100
         84  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00    1.237670E-13    0.000000E+00              9.00000E+100
         85  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00    9.891840E-14    0.000000E+00              9.00000E+100
         86  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -2.331434E-14    0.000000E+00              9.00000E+100
         87  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -4.052674E-14    0.000000E+00              9.00000E+100
         88  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -7.546518E-14    0.000000E+00              9.00000E+100
         89  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -8.804602E-14    0.000000E+00              9.00000E+100
         90  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -9.122925E-14    0.000000E+00              9.00000E+100
         91  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -9.422731E-14    0.000000E+00              9.00000E+100
         92  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -6.586036E-14    0.000000E+00              9.00000E+100
         93  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -5.265566E-14    0.000000E+00              9.00000E+100
         94  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -5.694554E-14    0.000000E+00              9.00000E+100
         95  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -1.446124E-13    0.000000E+00              9.00000E+100
         96  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -1.009465E-13    0.000000E+00              9.00000E+100
         97  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00    1.058845E-13    0.000000E+00              9.00000E+100
         98  traj.phase0.collocation_constraint.defects:gam                 e   0.000000E+00   -5.996123E-14    0.000000E+00              9.00000E+100
         99  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -1.764356E-15    0.000000E+00              9.00000E+100
        100  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -9.896284E-16    0.000000E+00              9.00000E+100
        101  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    3.864607E-16    0.000000E+00              9.00000E+100
        102  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    7.656979E-16    0.000000E+00              9.00000E+100
        103  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -2.835249E-16    0.000000E+00              9.00000E+100
        104  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    8.216805E-16    0.000000E+00              9.00000E+100
        105  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -3.377017E-16    0.000000E+00              9.00000E+100
        106  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -6.681798E-17    0.000000E+00              9.00000E+100
        107  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    2.076775E-15    0.000000E+00              9.00000E+100
        108  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    1.372477E-15    0.000000E+00              9.00000E+100
        109  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    1.955780E-15    0.000000E+00              9.00000E+100
        110  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -7.006858E-16    0.000000E+00              9.00000E+100
        111  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -1.524172E-15    0.000000E+00              9.00000E+100
        112  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    3.611783E-17    0.000000E+00              9.00000E+100
        113  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    3.521488E-16    0.000000E+00              9.00000E+100
        114  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -8.451571E-16    0.000000E+00              9.00000E+100
        115  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -2.546307E-16    0.000000E+00              9.00000E+100
        116  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    2.347659E-16    0.000000E+00              9.00000E+100
        117  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -1.473607E-15    0.000000E+00              9.00000E+100
        118  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -3.611783E-18    0.000000E+00              9.00000E+100
        119  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00   -4.964395E-15    0.000000E+00              9.00000E+100
        120  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    5.421286E-15    0.000000E+00              9.00000E+100
        121  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    4.677258E-16    0.000000E+00              9.00000E+100
        122  traj.phase0.collocation_constraint.defects:m                   e   0.000000E+00    5.115187E-16    0.000000E+00              9.00000E+100
        123  traj.phase0.continuity_comp.defect_control_rates:alpha_rate    e   0.000000E+00    1.044031E-12    0.000000E+00              9.00000E+100
        124  traj.phase0.continuity_comp.defect_control_rates:alpha_rate    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        125  traj.phase0.continuity_comp.defect_control_rates:alpha_rate    e   0.000000E+00   -1.410853E-12    0.000000E+00              9.00000E+100
        126  traj.phase0.continuity_comp.defect_control_rates:alpha_rate    e   0.000000E+00   -3.386046E-13    0.000000E+00              9.00000E+100
        127  traj.phase0.continuity_comp.defect_control_rates:alpha_rate    e   0.000000E+00    3.527131E-13    0.000000E+00              9.00000E+100
        128  traj.phase0.continuity_comp.defect_control_rates:alpha_rate    e   0.000000E+00   -5.361240E-13    0.000000E+00              9.00000E+100
        129  traj.phase0.continuity_comp.defect_control_rates:alpha_rate    e   0.000000E+00    4.514728E-13    0.000000E+00              9.00000E+100
        130  traj.phase0.continuity_comp.defect_controls:alpha              e   0.000000E+00    2.220446E-16    0.000000E+00              9.00000E+100
        131  traj.phase0.continuity_comp.defect_controls:alpha              e   0.000000E+00    2.220446E-16    0.000000E+00              9.00000E+100
        132  traj.phase0.continuity_comp.defect_controls:alpha              e   0.000000E+00   -4.440892E-16    0.000000E+00              9.00000E+100
        133  traj.phase0.continuity_comp.defect_controls:alpha              e   0.000000E+00    4.440892E-16    0.000000E+00              9.00000E+100
        134  traj.phase0.continuity_comp.defect_controls:alpha              e   0.000000E+00    2.220446E-16    0.000000E+00              9.00000E+100
        135  traj.phase0.continuity_comp.defect_controls:alpha              e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        136  traj.phase0.continuity_comp.defect_controls:alpha              e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        137  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    5.000000E-03    1.000000E+00         l    9.00000E+100
        138  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.999997E-03    1.000000E+00         l    9.00000E+100
        139  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    6.309076E-02    1.000000E+00              9.00000E+100
        140  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    1.121188E-01    1.000000E+00              9.00000E+100
        141  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    1.121188E-01    1.000000E+00              9.00000E+100
        142  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    2.248131E-01    1.000000E+00              9.00000E+100
        143  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    3.707366E-01    1.000000E+00              9.00000E+100
        144  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.035153E-01    1.000000E+00              9.00000E+100
        145  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.035153E-01    1.000000E+00              9.00000E+100
        146  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.460697E-01    1.000000E+00              9.00000E+100
        147  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.381600E-01    1.000000E+00              9.00000E+100
        148  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.216805E-01    1.000000E+00              9.00000E+100
        149  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.216805E-01    1.000000E+00              9.00000E+100
        150  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    3.787952E-01    1.000000E+00              9.00000E+100
        151  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    3.493046E-01    1.000000E+00              9.00000E+100
        152  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    3.567527E-01    1.000000E+00              9.00000E+100
        153  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    3.567527E-01    1.000000E+00              9.00000E+100
        154  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    3.853664E-01    1.000000E+00              9.00000E+100
        155  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.275797E-01    1.000000E+00              9.00000E+100
        156  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.347828E-01    1.000000E+00              9.00000E+100
        157  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.347828E-01    1.000000E+00              9.00000E+100
        158  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.442897E-01    1.000000E+00              9.00000E+100
        159  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.487381E-01    1.000000E+00              9.00000E+100
        160  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.508781E-01    1.000000E+00              9.00000E+100
        161  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.508781E-01    1.000000E+00              9.00000E+100
        162  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    4.651480E-01    1.000000E+00              9.00000E+100
        163  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    5.588391E-01    1.000000E+00              9.00000E+100
        164  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    6.204695E-01    1.000000E+00              9.00000E+100
        165  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    6.204695E-01    1.000000E+00              9.00000E+100
        166  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    7.973559E-01    1.000000E+00              9.00000E+100
        167  traj.phases.phase0->path_constraint->h                         i   5.000000E-03    9.850850E-01    1.000000E+00              9.00000E+100
        168  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    4.000084E-01    1.800000E+00              9.00000E+100
        169  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    6.560335E-01    1.800000E+00              9.00000E+100
        170  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    9.062569E-01    1.800000E+00              9.00000E+100
        171  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    9.248643E-01    1.800000E+00              9.00000E+100
        172  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    9.248643E-01    1.800000E+00              9.00000E+100
        173  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    9.368865E-01    1.800000E+00              9.00000E+100
        174  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    9.106927E-01    1.800000E+00              9.00000E+100
        175  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    9.134687E-01    1.800000E+00              9.00000E+100
        176  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    9.134687E-01    1.800000E+00              9.00000E+100
        177  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    9.677785E-01    1.800000E+00              9.00000E+100
        178  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.110968E+00    1.800000E+00              9.00000E+100
        179  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.162135E+00    1.800000E+00              9.00000E+100
        180  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.162135E+00    1.800000E+00              9.00000E+100
        181  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.280952E+00    1.800000E+00              9.00000E+100
        182  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.391323E+00    1.800000E+00              9.00000E+100
        183  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.405068E+00    1.800000E+00              9.00000E+100
        184  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.405068E+00    1.800000E+00              9.00000E+100
        185  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.432640E+00    1.800000E+00              9.00000E+100
        186  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.477416E+00    1.800000E+00              9.00000E+100
        187  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.499169E+00    1.800000E+00              9.00000E+100
        188  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.499169E+00    1.800000E+00              9.00000E+100
        189  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.555666E+00    1.800000E+00              9.00000E+100
        190  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.639453E+00    1.800000E+00              9.00000E+100
        191  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.664111E+00    1.800000E+00              9.00000E+100
        192  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.664111E+00    1.800000E+00              9.00000E+100
        193  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.711187E+00    1.800000E+00              9.00000E+100
        194  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.691710E+00    1.800000E+00              9.00000E+100
        195  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.618693E+00    1.800000E+00              9.00000E+100
        196  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.618693E+00    1.800000E+00              9.00000E+100
        197  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.359961E+00    1.800000E+00              9.00000E+100
        198  traj.phases.phase0->path_constraint->mach                      i   1.000000E-01    1.039513E+00    1.800000E+00              9.00000E+100


   Exit Status
      Inform  Description
           0  Solve Succeeded
--------------------------------------------------------------------------------
Problem: problem
Driver:  pyOptSparseDriver
  success     : True
  iterations  : 175
  runtime     : 3.5056E+00 s
  model_evals : 175
  model_time  : 1.1631E+00 s
  deriv_evals : 104
  deriv_time  : 6.4029E-01 s
  exit_status : SUCCESS

Now we pull the values of time and alpha from the timeseries. Remember that the timeseries provides values at the nodes only. The fitting polynomials may exhibit oscillations between these nodes.

We use cubic interpolation to interpolate time and alpha onto 100 evenly distributed nodes across the phase, and then plot the results.

t = p.get_val('traj.phase0.timeseries.time')
alpha = p.get_val('traj.phase0.timeseries.alpha', units='deg')

t_100 = phase.interp(xs=t, ys=t,
                     nodes=np.linspace(-1, 1, 100),
                     kind='cubic')
alpha_100 = phase.interp(xs=t, ys=alpha,
                         nodes=np.linspace(-1, 1, 100),
                         kind='cubic')

# Plot the solution nodes
%matplotlib inline
plt.plot(t, alpha, 'o')
plt.plot(t_100, alpha_100, '-')
plt.xlabel('time (s)')
plt.ylabel('angle of attack (deg)')
plt.grid()
plt.show()
../../_images/0f8499f7ee1a71ce2e7856b1786e51052b37e87c2e218ea4dee18f6e22cea3f9.png

Both the simulate method and the interp method can provide more dense output. The difference is that simulate is effectively finding a different solution for the states, by starting from the initial values and propagating the ODE forward in time using the interpolated control splines as inputs. The interp method is making some assumptions about the interpolation (for instance, cubic interpolation in this case), so it may not be a perfectly accurate representation of the underlying interpolating polynomials.