Level 1#

What is level 1#

This part is a tutorial type introduction. We assume users have read Aviary User Interface. In this doc page we discuss Level 1’s interface, but also other details, such as inputs and outputs.

If you have not yet, make sure to install Aviary.

To run Aviary in the Level 1 command-line interface (CLI), type this in a terminal:

!aviary
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/pyoptsparse/pyOpt_MPI.py:68: UserWarning: mpi4py could not be imported. mpi4py is required to use the parallel gradient analysis and parallel objective analysis for non-gradient based optimizers. Continuing using a dummy MPI module from pyOptSparse.
  warnings.warn(warn)
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/pyoptsparse/pyOpt_MPI.py:68: UserWarning: mpi4py could not be imported. mpi4py is required to use the parallel gradient analysis and parallel objective analysis for non-gradient based optimizers. Continuing using a dummy MPI module from pyOptSparse.
  warnings.warn(warn)
usage: aviary [-h] [--version]  ...

aviary Command Line Tools

options:
  -h, --help          show this help message and exit
  --version           show version and exit

Tools:
  
    convert_aero_table
                      Converts FLOPS- or GASP-formatted aero data files into
                      Aviary csv format.
    convert_engine    Converts FLOPS- or GASP-formatted engine decks into
                      Aviary csv format. FLOPS decks are changed from column-
                      delimited to csv format with added headers. GASP decks
                      are reorganized into column based csv. T4 is recovered
                      through calculation. Data points whose T4 exceeds T4max
                      are removed.
    convert_prop_table
                      Converts GASP-formatted propeller map file into Aviary
                      csv format.
    dashboard         Run the Dashboard tool
    draw_mission      Allows users to draw a mission profile for use in
                      Aviary.
    fortran_to_aviary
                      Converts legacy Fortran input decks to Aviary csv based
                      decks
    hangar            Allows users that pip installed Aviary to download
                      models from the Aviary hangar
    plot_drag_polar   Plot a Drag Polar Graph using a provided polar data csv
                      input
    run_mission       Runs Aviary using a provided input deck

We’ll now discuss the different parts of the CLI, starting with how to run an Aviary problem.

First level 1 run#

We are ready to run some models. By default, Aviary runs the optimizer for up to 50 iterations. In order to reduce the run time, we will limit the maximum number of iterations to 1. It will be faster for these examples, but you will not get optimal solutions. Issue the following command:

!aviary run_mission models/test_aircraft/aircraft_for_bench_GwGm.csv --optimizer IPOPT --max_iter 1
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/pyoptsparse/pyOpt_MPI.py:68: UserWarning: mpi4py could not be imported. mpi4py is required to use the parallel gradient analysis and parallel objective analysis for non-gradient based optimizers. Continuing using a dummy MPI module from pyOptSparse.
  warnings.warn(warn)
Loaded default phase_info for 2dof equations of motion
/home/runner/work/Aviary/Aviary/aviary/utils/preprocessors.py:264: UserWarning: Mount location for engines of type <turbofan_23k_1> not specified. Wing-mounted engines are assumed.
  warnings.warn(
The following variables have been overridden:
  'aircraft:fuselage:wetted_area
--- Constraint Report [traj] ---
    --- groundroll ---
        None
    --- rotation ---
        [final]   0.0000e+00 == normal_force [lbf]
    --- ascent ---
        [final]   5.0000e+02 == altitude [ft]
        [path]    0.0000e+00 <= load_factor <= 1.1000e+00  [unitless]
        [path]    0.0000e+00 <= fuselage_pitch <= 1.5000e+01  [deg]
    --- accel ---
        [final]   2.5000e+02 == EAS [kn]
    --- climb1 ---
        [final]   1.0000e+04 == altitude [ft]
    --- climb2 ---
        [final]   3.7500e+04 == altitude [ft]
        [final]   1.0000e-01 <= altitude_rate  [ft/min]
        [final]   8.0000e-01 == mach [unitless]
    --- cruise ---
        None
    --- desc1 ---
        [final]   1.0000e+04 == altitude [ft]
    --- desc2 ---
        [final]   1.0000e+03 == altitude [ft]
'rhs_checking' is disabled for 'DirectSolver in 'traj.phases.ascent' <class Phase>' but that solver has redundant adjoint solves. If it is expensive to compute derivatives for this solver, turning on 'rhs_checking' may improve performance.


'rhs_checking' is disabled for 'DirectSolver in 'traj.phases.climb1' <class Phase>' but that solver has redundant adjoint solves. If it is expensive to compute derivatives for this solver, turning on 'rhs_checking' may improve performance.


'rhs_checking' is disabled for 'DirectSolver in 'traj.phases.desc1' <class Phase>' but that solver has redundant adjoint solves. If it is expensive to compute derivatives for this solver, turning on 'rhs_checking' may improve performance.

/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/recorders/sqlite_recorder.py:226: UserWarning:The existing case recorder file, problem_history.db, is being overwritten.
Model viewer data has already been recorded for Driver.
Model viewer data has already been recorded for Driver.
Full total jacobian for problem 'aircraft_for_bench_GwGm' was computed 3 times, taking 2.0455629439999257 seconds.
Total jacobian shape: (238, 212) 
Jacobian shape: (238, 212)  (7.77% nonzero)
FWD solves: 45   REV solves: 0
Total colors vs. total size: 45 vs 212  (78.77% improvement)

Sparsity computed using tolerance: 1e-25
Time to compute sparsity:   2.0456 sec
Time to compute coloring:   0.1912 sec
Memory to compute coloring:   1.1250 MB
Coloring created on: 2024-09-16 15:53:51
This is Ipopt version 3.14.16, running with linear solver MUMPS 5.7.3.

Number of nonzeros in equality constraint Jacobian...:     2783
Number of nonzeros in inequality constraint Jacobian.:      586
Number of nonzeros in Lagrangian Hessian.............:        0
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/core/total_jac.py:1646: DerivativesWarning:Constraints or objectives [('traj.phases.climb2->final_boundary_constraint->mach', inds=[(11, 0)])] cannot be impacted by the design variables of the problem.
Total number of variables............................:      212
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      212
                     variables with only upper bounds:        0
Total number of equality constraints.................:      204
Total number of inequality constraints...............:       33
        inequality constraints with only lower bounds:        1
   inequality constraints with lower and upper bounds:       32
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  5.2731333e+00 1.74e+03 1.75e+01  -5.0 0.00e+00    -  0.00e+00 0.00e+00   0
Number of Iterations....: 1

                                   (scaled)                 (unscaled)
Objective...............:   4.4311630965122113e+00    4.4311630965122113e+00
Dual infeasibility......:   1.7256288661293315e+01    1.7256288661293315e+01
Constraint violation....:   5.3444402775040338e+01    3.0967642538254563e+02
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000016687732632e+05    1.0000016687732632e+05
Overall NLP error.......:   1.0000016687732632e+05    1.0000016687732632e+05


Number of objective function evaluations             = 2
Number of objective gradient evaluations             = 2
Number of equality constraint evaluations            = 2
Number of inequality constraint evaluations          = 2
Number of equality constraint Jacobian evaluations   = 2
Number of inequality constraint Jacobian evaluations = 2
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 2.654

EXIT: Maximum Number of Iterations Exceeded.
minimal_print is not available for this solution


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

    Solution: 
--------------------------------------------------------------------------------
    Total Time:                    2.6555
       User Objective Time :       0.7444
       User Sensitivity Time :     1.8828
       Interface Time :            0.0168
       Opt Solver Time:            0.0115
    Calls to Objective Function :       3
    Calls to Sens Function :            3


   Objectives
      Index  Name                               Value
          0  mission:objectives:fuel     4.431163E+00

   Variables (c - continuous, i - integer, d - discrete)
      Index  Name                                      Type      Lower Bound            Value      Upper Bound     Status
          0  mission:design:gross_mass_0                  c     5.714286E-05     9.944034E-01     2.285714E+00           
          1  mission:summary:gross_mass_0                 c     5.714286E-05     9.944035E-01     2.285714E+00           
          2  mission:takeoff:ascent_t_initial_0           c     0.000000E+00     5.650502E-01     3.333333E+00           
          3  mission:takeoff:ascent_duration_0            c     1.000000E-01     5.388115E-01     1.000000E+02           
          4  tau_gear_0                                   c     1.000000E-02     2.003487E-01     1.000000E+00           
          5  tau_flaps_0                                  c     1.000000E-02     9.687969E-01     1.000000E+00           
          6  traj.accel.t_duration_0                      c     9.950249E-03     2.932722E-01     1.990050E+00           
          7  traj.accel.states:velocity_0                 c     0.000000E+00     5.093870E-01     1.200000E+00           
          8  traj.accel.states:velocity_1                 c     0.000000E+00     8.991875E-01     1.200000E+00           
          9  traj.accel.states:velocity_2                 c     0.000000E+00     1.018244E+00     1.200000E+00           
         10  traj.accel.states:mass_0                     c     0.000000E+00     1.157669E+00     6.666667E+15           
         11  traj.accel.states:mass_1                     c     0.000000E+00     1.157411E+00     6.666667E+15           
         12  traj.accel.states:mass_2                     c     0.000000E+00     1.157052E+00     6.666667E+15           
         13  traj.accel.states:mass_3                     c     0.000000E+00     1.156938E+00     6.666667E+15           
         14  traj.accel.states:distance_0                 c     0.000000E+00     3.427051E-01     3.000000E+01           
         15  traj.accel.states:distance_1                 c     0.000000E+00     5.211554E-01     3.000000E+01           
         16  traj.accel.states:distance_2                 c     0.000000E+00     5.834642E-01     3.000000E+01           
         17  traj.ascent.states:flight_path_angle_0       c    -9.999996E+00    -4.629096E-03     1.999999E+01           
         18  traj.ascent.states:flight_path_angle_1       c    -9.999996E+00    -1.093032E-02     1.999999E+01           
         19  traj.ascent.states:flight_path_angle_2       c    -9.999996E+00    -1.682921E-02     1.999999E+01           
         20  traj.ascent.states:flight_path_angle_3       c    -9.999996E+00    -3.734529E-03     1.999999E+01           
         21  traj.ascent.states:flight_path_angle_4       c    -9.999996E+00     3.556619E-02     1.999999E+01           
         22  traj.ascent.states:flight_path_angle_5       c    -9.999996E+00     4.650743E-02     1.999999E+01           
         23  traj.ascent.states:flight_path_angle_6       c    -9.999996E+00     6.076313E-02     1.999999E+01           
         24  traj.ascent.states:flight_path_angle_7       c    -9.999996E+00     7.400452E-02     1.999999E+01           
         25  traj.ascent.states:flight_path_angle_8       c    -9.999996E+00     8.149113E-02     1.999999E+01           
         26  traj.ascent.states:flight_path_angle_9       c    -9.999996E+00     1.076033E-01     1.999999E+01           
         27  traj.ascent.states:flight_path_angle_10      c    -9.999996E+00     1.243957E-01     1.999999E+01           
         28  traj.ascent.states:flight_path_angle_11      c    -9.999996E+00     1.148198E-01     1.999999E+01           
         29  traj.ascent.states:altitude_0                c     0.000000E+00     5.811474E-01     7.000000E-01           
         30  traj.ascent.states:altitude_1                c     0.000000E+00     5.771019E-01     7.000000E-01           
         31  traj.ascent.states:altitude_2                c     0.000000E+00     5.577665E-01     7.000000E-01           
         32  traj.ascent.states:altitude_3                c     0.000000E+00     5.481900E-01     7.000000E-01           
         33  traj.ascent.states:altitude_4                c     0.000000E+00     5.220937E-01     7.000000E-01           
         34  traj.ascent.states:altitude_5                c     0.000000E+00     4.968364E-01     7.000000E-01           
         35  traj.ascent.states:altitude_6                c     0.000000E+00     4.944076E-01     7.000000E-01           
         36  traj.ascent.states:altitude_7                c     0.000000E+00     4.902435E-01     7.000000E-01           
         37  traj.ascent.states:altitude_8                c     0.000000E+00     4.854844E-01     7.000000E-01           
         38  traj.ascent.states:altitude_9                c     0.000000E+00     4.832423E-01     7.000000E-01           
         39  traj.ascent.states:altitude_10               c     0.000000E+00     4.860013E-01     7.000000E-01           
         40  traj.ascent.states:altitude_11               c     0.000000E+00     4.974825E-01     7.000000E-01           
         41  traj.ascent.states:altitude_12               c     0.000000E+00     5.000000E-01     7.000000E-01           
         42  traj.ascent.states:velocity_0                c     0.000000E+00     7.739311E-01     3.500000E+00           
         43  traj.ascent.states:velocity_1                c     0.000000E+00     7.907314E-01     3.500000E+00           
         44  traj.ascent.states:velocity_2                c     0.000000E+00     7.960871E-01     3.500000E+00           
         45  traj.ascent.states:velocity_3                c     0.000000E+00     8.112676E-01     3.500000E+00           
         46  traj.ascent.states:velocity_4                c     0.000000E+00     8.275790E-01     3.500000E+00           
         47  traj.ascent.states:velocity_5                c     0.000000E+00     8.308268E-01     3.500000E+00           
         48  traj.ascent.states:velocity_6                c     0.000000E+00     8.381625E-01     3.500000E+00           
         49  traj.ascent.states:velocity_7                c     0.000000E+00     8.479327E-01     3.500000E+00           
         50  traj.ascent.states:velocity_8                c     0.000000E+00     8.510587E-01     3.500000E+00           
         51  traj.ascent.states:velocity_9                c     0.000000E+00     8.551756E-01     3.500000E+00           
         52  traj.ascent.states:velocity_10               c     0.000000E+00     8.587208E-01     3.500000E+00           
         53  traj.ascent.states:velocity_11               c     0.000000E+00     8.606569E-01     3.500000E+00           
         54  traj.ascent.states:mass_0                    c     0.000000E+00     1.157797E+00     6.666667E+15           
         55  traj.ascent.states:mass_1                    c     0.000000E+00     1.157785E+00     6.666667E+15           
         56  traj.ascent.states:mass_2                    c     0.000000E+00     1.157770E+00     6.666667E+15           
         57  traj.ascent.states:mass_3                    c     0.000000E+00     1.157765E+00     6.666667E+15           
         58  traj.ascent.states:mass_4                    c     0.000000E+00     1.157754E+00     6.666667E+15           
         59  traj.ascent.states:mass_5                    c     0.000000E+00     1.157738E+00     6.666667E+15           
         60  traj.ascent.states:mass_6                    c     0.000000E+00     1.157733E+00     6.666667E+15           
         61  traj.ascent.states:mass_7                    c     0.000000E+00     1.157722E+00     6.666667E+15           
         62  traj.ascent.states:mass_8                    c     0.000000E+00     1.157706E+00     6.666667E+15           
         63  traj.ascent.states:mass_9                    c     0.000000E+00     1.157701E+00     6.666667E+15           
         64  traj.ascent.states:mass_10                   c     0.000000E+00     1.157690E+00     6.666667E+15           
         65  traj.ascent.states:mass_11                   c     0.000000E+00     1.157674E+00     6.666667E+15           
         66  traj.ascent.states:mass_12                   c     0.000000E+00     1.157669E+00     6.666667E+15           
         67  traj.ascent.states:distance_0                c     0.000000E+00     5.742454E-01     1.500000E+00           
         68  traj.ascent.states:distance_1                c     0.000000E+00     5.919774E-01     1.500000E+00           
         69  traj.ascent.states:distance_2                c     0.000000E+00     5.977682E-01     1.500000E+00           
         70  traj.ascent.states:distance_3                c     0.000000E+00     6.110076E-01     1.500000E+00           
         71  traj.ascent.states:distance_4                c     0.000000E+00     6.294238E-01     1.500000E+00           
         72  traj.ascent.states:distance_5                c     0.000000E+00     6.351897E-01     1.500000E+00           
         73  traj.ascent.states:distance_6                c     0.000000E+00     6.480987E-01     1.500000E+00           
         74  traj.ascent.states:distance_7                c     0.000000E+00     6.653188E-01     1.500000E+00           
         75  traj.ascent.states:distance_8                c     0.000000E+00     6.706281E-01     1.500000E+00           
         76  traj.ascent.states:distance_9                c     0.000000E+00     6.823386E-01     1.500000E+00           
         77  traj.ascent.states:distance_10               c     0.000000E+00     6.973283E-01     1.500000E+00           
         78  traj.ascent.states:distance_11               c     0.000000E+00     7.017846E-01     1.500000E+00           
         79  traj.ascent.controls:alpha_0                 c    -6.000000E+00     2.019069E+00     6.000000E+00           
         80  traj.ascent.controls:alpha_1                 c    -6.000000E+00     1.207226E+00     6.000000E+00           
         81  traj.ascent.controls:alpha_2                 c    -6.000000E+00     8.923167E-01     6.000000E+00           
         82  traj.ascent.controls:alpha_3                 c    -6.000000E+00     9.871868E-01     6.000000E+00           
         83  traj.ascent.controls:alpha_4                 c    -6.000000E+00     1.216371E+00     6.000000E+00           
         84  traj.ascent.controls:alpha_5                 c    -6.000000E+00     1.220151E+00     6.000000E+00           
         85  traj.ascent.controls:alpha_6                 c    -6.000000E+00     1.145866E+00     6.000000E+00           
         86  traj.ascent.controls:alpha_7                 c    -6.000000E+00     1.005413E+00     6.000000E+00           
         87  traj.ascent.controls:alpha_8                 c    -6.000000E+00     1.045434E+00     6.000000E+00           
         88  traj.ascent.controls:alpha_9                 c    -6.000000E+00     1.114587E+00     6.000000E+00           
         89  traj.ascent.controls:alpha_10                c    -6.000000E+00     1.165234E+00     6.000000E+00           
         90  traj.ascent.controls:alpha_11                c    -6.000000E+00     7.793457E-01     6.000000E+00           
         91  traj.climb1.t_duration_0                     c     1.818182E-01     1.021398E+00     1.818182E+00           
         92  traj.climb1.states:altitude_0                c     4.000000E-02     7.168694E-02     1.100000E+00           
         93  traj.climb1.states:altitude_1                c     4.000000E-02     4.140097E-01     1.100000E+00           
         94  traj.climb1.states:altitude_2                c     4.000000E-02     8.659345E-01     1.100000E+00           
         95  traj.climb1.states:altitude_3                c     4.000000E-02     1.000000E+00     1.100000E+00           
         96  traj.climb1.states:mass_0                    c     0.000000E+00     1.156938E+00     6.666667E+15           
         97  traj.climb1.states:mass_1                    c     0.000000E+00     1.155479E+00     6.666667E+15           
         98  traj.climb1.states:mass_2                    c     0.000000E+00     1.153597E+00     6.666667E+15           
         99  traj.climb1.states:mass_3                    c     0.000000E+00     1.153031E+00     6.666667E+15           
        100  traj.climb1.states:distance_0                c     0.000000E+00     7.183627E-01     5.000000E+01           
        101  traj.climb1.states:distance_1                c     0.000000E+00     1.344648E+00     5.000000E+01           
        102  traj.climb1.states:distance_2                c     0.000000E+00     1.552423E+00     5.000000E+01           
        103  traj.climb2.t_duration_0                     c     2.325581E-02     1.300797E-01     1.976744E+00           
        104  traj.climb2.states:altitude_0                c     3.000000E-01     5.443709E-01     1.333333E+00           
        105  traj.climb2.states:altitude_1                c     3.000000E-01     7.761784E-01     1.333333E+00           
        106  traj.climb2.states:altitude_2                c     3.000000E-01     8.378956E-01     1.333333E+00           
        107  traj.climb2.states:altitude_3                c     3.000000E-01     9.600602E-01     1.333333E+00           
        108  traj.climb2.states:altitude_4                c     3.000000E-01     1.081703E+00     1.333333E+00           
        109  traj.climb2.states:altitude_5                c     3.000000E-01     1.113959E+00     1.333333E+00           
        110  traj.climb2.states:altitude_6                c     3.000000E-01     1.181301E+00     1.333333E+00           
        111  traj.climb2.states:altitude_7                c     3.000000E-01     1.239916E+00     1.333333E+00           
        112  traj.climb2.states:altitude_8                c     3.000000E-01     1.250000E+00     1.333333E+00           
        113  traj.climb2.states:mass_0                    c     0.000000E+00     1.153031E+00     6.666667E+15           
        114  traj.climb2.states:mass_1                    c     0.000000E+00     1.150380E+00     6.666667E+15           
        115  traj.climb2.states:mass_2                    c     0.000000E+00     1.147269E+00     6.666667E+15           
        116  traj.climb2.states:mass_3                    c     0.000000E+00     1.146379E+00     6.666667E+15           
        117  traj.climb2.states:mass_4                    c     0.000000E+00     1.144399E+00     6.666667E+15           
        118  traj.climb2.states:mass_5                    c     0.000000E+00     1.141955E+00     6.666667E+15           
        119  traj.climb2.states:mass_6                    c     0.000000E+00     1.141217E+00     6.666667E+15           
        120  traj.climb2.states:mass_7                    c     0.000000E+00     1.139552E+00     6.666667E+15           
        121  traj.climb2.states:mass_8                    c     0.000000E+00     1.137430E+00     6.666667E+15           
        122  traj.climb2.states:mass_9                    c     0.000000E+00     1.136808E+00     6.666667E+15           
        123  traj.climb2.states:distance_0                c     2.000000E-02     5.540061E-02     2.000000E+00           
        124  traj.climb2.states:distance_1                c     2.000000E-02     9.315071E-02     2.000000E+00           
        125  traj.climb2.states:distance_2                c     2.000000E-02     1.060128E-01     2.000000E+00           
        126  traj.climb2.states:distance_3                c     2.000000E-02     1.370026E-01     2.000000E+00           
        127  traj.climb2.states:distance_4                c     2.000000E-02     1.827678E-01     2.000000E+00           
        128  traj.climb2.states:distance_5                c     2.000000E-02     1.978462E-01     2.000000E+00           
        129  traj.climb2.states:distance_6                c     2.000000E-02     2.336254E-01     2.000000E+00           
        130  traj.climb2.states:distance_7                c     2.000000E-02     2.824069E-01     2.000000E+00           
        131  traj.climb2.states:distance_8                c     2.000000E-02     2.966811E-01     2.000000E+00           
        132  traj.cruise.t_initial_0                      c     0.000000E+00     1.705213E+00     1.000000E+02           
        133  traj.cruise.t_duration_0                     c    -2.000000E+02    -6.752069E-01    -2.000000E-05           
        134  traj.desc1.t_duration_0                      c     5.000000E-01     9.564265E-01     1.500000E+00           
        135  traj.desc1.states:altitude_0                 c     3.333333E-02     1.252983E+00     1.333333E+00           
        136  traj.desc1.states:altitude_1                 c     3.333333E-02     1.162429E+00     1.333333E+00           
        137  traj.desc1.states:altitude_2                 c     3.333333E-02     1.031394E+00     1.333333E+00           
        138  traj.desc1.states:altitude_3                 c     3.333333E-02     9.874884E-01     1.333333E+00           
        139  traj.desc1.states:altitude_4                 c     3.333333E-02     8.813386E-01     1.333333E+00           
        140  traj.desc1.states:altitude_5                 c     3.333333E-02     7.159097E-01     1.333333E+00           
        141  traj.desc1.states:altitude_6                 c     3.333333E-02     6.574220E-01     1.333333E+00           
        142  traj.desc1.states:altitude_7                 c     3.333333E-02     5.355583E-01     1.333333E+00           
        143  traj.desc1.states:altitude_8                 c     3.333333E-02     3.799084E-01     1.333333E+00           
        144  traj.desc1.states:altitude_9                 c     3.333333E-02     3.333333E-01     1.333333E+00           
        145  traj.desc1.states:mass_0                     c     0.000000E+00     9.768638E-01     7.142857E+15           
        146  traj.desc1.states:mass_1                     c     0.000000E+00     9.768023E-01     7.142857E+15           
        147  traj.desc1.states:mass_2                     c     0.000000E+00     9.767039E-01     7.142857E+15           
        148  traj.desc1.states:mass_3                     c     0.000000E+00     9.766693E-01     7.142857E+15           
        149  traj.desc1.states:mass_4                     c     0.000000E+00     9.765819E-01     7.142857E+15           
        150  traj.desc1.states:mass_5                     c     0.000000E+00     9.764402E-01     7.142857E+15           
        151  traj.desc1.states:mass_6                     c     0.000000E+00     9.763892E-01     7.142857E+15           
        152  traj.desc1.states:mass_7                     c     0.000000E+00     9.762656E-01     7.142857E+15           
        153  traj.desc1.states:mass_8                     c     0.000000E+00     9.760762E-01     7.142857E+15           
        154  traj.desc1.states:mass_9                     c     0.000000E+00     9.760115E-01     7.142857E+15           
        155  traj.desc1.states:distance_0                 c     8.163265E-01     9.735223E-01     1.360544E+00           
        156  traj.desc1.states:distance_1                 c     8.163265E-01     9.768131E-01     1.360544E+00           
        157  traj.desc1.states:distance_2                 c     8.163265E-01     9.778688E-01     1.360544E+00           
        158  traj.desc1.states:distance_3                 c     8.163265E-01     9.803064E-01     1.360544E+00           
        159  traj.desc1.states:distance_4                 c     8.163265E-01     9.837316E-01     1.360544E+00           
        160  traj.desc1.states:distance_5                 c     8.163265E-01     9.848336E-01     1.360544E+00           
        161  traj.desc1.states:distance_6                 c     8.163265E-01     9.872018E-01     1.360544E+00           
        162  traj.desc1.states:distance_7                 c     8.163265E-01     9.902548E-01     1.360544E+00           
        163  traj.desc1.states:distance_8                 c     8.163265E-01     9.911760E-01     1.360544E+00           
        164  traj.desc2.t_duration_0                      c     3.921569E-02     1.691213E-01     1.960784E+00           
        165  traj.desc2.states:altitude_0                 c    -5.555556E-02     9.201160E-01     1.111111E+00           
        166  traj.desc2.states:altitude_1                 c    -5.555556E-02     7.517109E-01     1.111111E+00           
        167  traj.desc2.states:altitude_2                 c    -5.555556E-02     5.349794E-01     1.111111E+00           
        168  traj.desc2.states:altitude_3                 c    -5.555556E-02     3.160728E-01     1.111111E+00           
        169  traj.desc2.states:altitude_4                 c    -5.555556E-02     1.365397E-01     1.111111E+00           
        170  traj.desc2.states:altitude_5                 c    -5.555556E-02     2.674479E-02     1.111111E+00           
        171  traj.desc2.states:altitude_6                 c    -5.555556E-02    -4.788387E-13     1.111111E+00           
        172  traj.desc2.states:mass_0                     c     0.000000E+00     9.109441E-01     6.666667E+15           
        173  traj.desc2.states:mass_1                     c     0.000000E+00     9.108850E-01     6.666667E+15           
        174  traj.desc2.states:mass_2                     c     0.000000E+00     9.107529E-01     6.666667E+15           
        175  traj.desc2.states:mass_3                     c     0.000000E+00     9.105670E-01     6.666667E+15           
        176  traj.desc2.states:mass_4                     c     0.000000E+00     9.103595E-01     6.666667E+15           
        177  traj.desc2.states:mass_5                     c     0.000000E+00     9.101727E-01     6.666667E+15           
        178  traj.desc2.states:mass_6                     c     0.000000E+00     9.100508E-01     6.666667E+15           
        179  traj.desc2.states:mass_7                     c     0.000000E+00     9.100201E-01     6.666667E+15           
        180  traj.desc2.states:distance_0                 c     0.000000E+00     1.041457E+00     1.428571E+00           
        181  traj.desc2.states:distance_1                 c     0.000000E+00     1.042990E+00     1.428571E+00           
        182  traj.desc2.states:distance_2                 c     0.000000E+00     1.044981E+00     1.428571E+00           
        183  traj.desc2.states:distance_3                 c     0.000000E+00     1.047016E+00     1.428571E+00           
        184  traj.desc2.states:distance_4                 c     0.000000E+00     1.048704E+00     1.428571E+00           
        185  traj.desc2.states:distance_5                 c     0.000000E+00     1.049745E+00     1.428571E+00           
        186  traj.desc2.states:distance_6                 c     0.000000E+00     1.050000E+00     1.428571E+00           
        187  traj.groundroll.t_duration_0                 c     1.980198E-02     7.178543E-01     1.980198E+00           
        188  traj.groundroll.states:velocity_0            c     0.000000E+00     3.913913E-01     6.666667E+00           
        189  traj.groundroll.states:velocity_1            c     0.000000E+00     8.499869E-01     6.666667E+00           
        190  traj.groundroll.states:velocity_2            c     0.000000E+00     9.751811E-01     6.666667E+00           
        191  traj.groundroll.states:mass_0                c     0.000000E+00     1.158748E+00     6.666667E+15           
        192  traj.groundroll.states:mass_1                c     0.000000E+00     1.158439E+00     6.666667E+15           
        193  traj.groundroll.states:mass_2                c     0.000000E+00     1.158009E+00     6.666667E+15           
        194  traj.groundroll.states:mass_3                c     0.000000E+00     1.157871E+00     6.666667E+15           
        195  traj.groundroll.states:distance_0            c     0.000000E+00     2.206642E-01     3.333333E+00           
        196  traj.groundroll.states:distance_1            c     0.000000E+00     1.171291E+00     3.333333E+00           
        197  traj.groundroll.states:distance_2            c     0.000000E+00     1.606286E+00     3.333333E+00           
        198  traj.rotation.t_duration_0                   c     1.980198E-02     6.003339E-02     1.980198E+00           
        199  traj.rotation.states:alpha_0                 c     0.000000E+00     1.251184E-02     1.000000E+00           
        200  traj.rotation.states:alpha_1                 c     0.000000E+00     2.977552E-02     1.000000E+00           
        201  traj.rotation.states:alpha_2                 c     0.000000E+00     3.523946E-02     1.000000E+00           
        202  traj.rotation.states:velocity_0              c     0.000000E+00     1.497118E+00     1.000000E+01           
        203  traj.rotation.states:velocity_1              c     0.000000E+00     1.543391E+00     1.000000E+01           
        204  traj.rotation.states:velocity_2              c     0.000000E+00     1.557677E+00     1.000000E+01           
        205  traj.rotation.states:mass_0                  c     0.000000E+00     1.157871E+00     6.666667E+15           
        206  traj.rotation.states:mass_1                  c     0.000000E+00     1.157845E+00     6.666667E+15           
        207  traj.rotation.states:mass_2                  c     0.000000E+00     1.157808E+00     6.666667E+15           
        208  traj.rotation.states:mass_3                  c     0.000000E+00     1.157797E+00     6.666667E+15           
        209  traj.rotation.states:distance_0              c     0.000000E+00     1.018424E+00     2.000000E+00           
        210  traj.rotation.states:distance_1              c     0.000000E+00     1.096227E+00     2.000000E+00           
        211  traj.rotation.states:distance_2              c     0.000000E+00     1.121406E+00     2.000000E+00           

   Constraints (i - inequality, e - equality)
      Index  Name                                                          Type          Lower           Value           Upper    Status  Lagrange Multiplier (N/A)
          0  mission:constraints:range_residual                               e   0.000000E+00    1.339140E-09    0.000000E+00              9.00000E+100
          1  h_fit.h_init_gear                                                e   1.000000E+00   -3.086764E+02    1.000000E+00         E    9.00000E+100
          2  h_fit.h_init_flaps                                               e   1.000000E+00   -1.980403E+01    1.000000E+00         E    9.00000E+100
          3  groundroll_boundary.velocity                                     e   0.000000E+00    3.233368E-06    0.000000E+00         E    9.00000E+100
          4  gtow_constraint.GTOW                                             e   0.000000E+00   -4.445653E-08    0.000000E+00              9.00000E+100
          5  link_taxi_groundroll.mass                                        e   0.000000E+00   -4.724803E-10    0.000000E+00              9.00000E+100
          6  mission:constraints:mass_residual                                e   0.000000E+00    8.753656E-07    0.000000E+00              9.00000E+100
          7  traj.linkages.groundroll:mass_final|rotation:mass_initial        e   0.000000E+00   -1.993612E-08    0.000000E+00              9.00000E+100
          8  traj.linkages.rotation:mass_final|ascent:mass_initial            e   0.000000E+00   -1.212931E-06    0.000000E+00         E    9.00000E+100
          9  traj.linkages.rotation:alpha_final|ascent:alpha_initial          e   0.000000E+00    3.162895E-07    0.000000E+00              9.00000E+100
         10  traj.linkages.ascent:mass_final|accel:mass_initial               e   0.000000E+00   -1.929060E-06    0.000000E+00         E    9.00000E+100
         11  traj.linkages.accel:mass_final|climb1:mass_initial               e   0.000000E+00   -1.931243E-06    0.000000E+00         E    9.00000E+100
         12  traj.linkages.climb1:mass_final|climb2:mass_initial              e   0.000000E+00   -1.946901E-06    0.000000E+00         E    9.00000E+100
         13  traj.linkages.climb2:mass_final|cruise:mass_initial              e   0.000000E+00   -9.273744E-08    0.000000E+00              9.00000E+100
         14  traj.linkages.cruise:mass_final|desc1:mass_initial               e   0.000000E+00   -1.153274E-07    0.000000E+00              9.00000E+100
         15  traj.linkages.desc1:mass_final|desc2:mass_initial                e   0.000000E+00   -2.593093E-06    0.000000E+00         E    9.00000E+100
         16  traj.phases.accel->final_boundary_constraint->EAS                e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
         17  traj.accel.collocation_constraint.defects:velocity               e   0.000000E+00    1.468382E-03    0.000000E+00         E    9.00000E+100
         18  traj.accel.collocation_constraint.defects:velocity               e   0.000000E+00   -1.299215E-04    0.000000E+00         E    9.00000E+100
         19  traj.accel.collocation_constraint.defects:velocity               e   0.000000E+00    2.478583E-05    0.000000E+00         E    9.00000E+100
         20  traj.accel.collocation_constraint.defects:mass                   e   0.000000E+00   -8.104821E-07    0.000000E+00              9.00000E+100
         21  traj.accel.collocation_constraint.defects:mass                   e   0.000000E+00   -3.734053E-07    0.000000E+00              9.00000E+100
         22  traj.accel.collocation_constraint.defects:mass                   e   0.000000E+00    9.670806E-08    0.000000E+00              9.00000E+100
         23  traj.accel.collocation_constraint.defects:distance               e   0.000000E+00    5.888774E-03    0.000000E+00         E    9.00000E+100
         24  traj.accel.collocation_constraint.defects:distance               e   0.000000E+00    3.267142E-03    0.000000E+00         E    9.00000E+100
         25  traj.accel.collocation_constraint.defects:distance               e   0.000000E+00    1.342674E-06    0.000000E+00         E    9.00000E+100
         26  traj.phases.ascent->final_boundary_constraint->altitude          e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
         27  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    1.380587E-02    0.000000E+00         E    9.00000E+100
         28  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    4.441503E-02    0.000000E+00         E    9.00000E+100
         29  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    3.852856E-02    0.000000E+00         E    9.00000E+100
         30  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    4.923487E-02    0.000000E+00         E    9.00000E+100
         31  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    7.504210E-02    0.000000E+00         E    9.00000E+100
         32  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    7.823025E-02    0.000000E+00         E    9.00000E+100
         33  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    7.088501E-02    0.000000E+00         E    9.00000E+100
         34  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    5.663338E-02    0.000000E+00         E    9.00000E+100
         35  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    6.085254E-02    0.000000E+00         E    9.00000E+100
         36  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    6.841648E-02    0.000000E+00         E    9.00000E+100
         37  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    7.407519E-02    0.000000E+00         E    9.00000E+100
         38  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    3.129109E-02    0.000000E+00         E    9.00000E+100
         39  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00    7.941333E-09    0.000000E+00              9.00000E+100
         40  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.066424E-02    0.000000E+00         E    9.00000E+100
         41  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -2.618570E-02    0.000000E+00         E    9.00000E+100
         42  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -3.386273E-02    0.000000E+00         E    9.00000E+100
         43  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -3.403202E-02    0.000000E+00         E    9.00000E+100
         44  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.996434E-02    0.000000E+00         E    9.00000E+100
         45  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.653009E-02    0.000000E+00         E    9.00000E+100
         46  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.616555E-02    0.000000E+00         E    9.00000E+100
         47  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -2.054333E-02    0.000000E+00         E    9.00000E+100
         48  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.961193E-02    0.000000E+00         E    9.00000E+100
         49  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.112069E-02    0.000000E+00         E    9.00000E+100
         50  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.411180E-02    0.000000E+00         E    9.00000E+100
         51  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00   -3.529889E-02    0.000000E+00         E    9.00000E+100
         52  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00   -3.526157E-03    0.000000E+00         E    9.00000E+100
         53  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    7.046956E-03    0.000000E+00         E    9.00000E+100
         54  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    9.630039E-03    0.000000E+00         E    9.00000E+100
         55  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    8.878064E-03    0.000000E+00         E    9.00000E+100
         56  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    3.749271E-03    0.000000E+00         E    9.00000E+100
         57  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    2.754633E-03    0.000000E+00         E    9.00000E+100
         58  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    2.922944E-03    0.000000E+00         E    9.00000E+100
         59  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    3.857976E-03    0.000000E+00         E    9.00000E+100
         60  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    3.183331E-03    0.000000E+00         E    9.00000E+100
         61  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    8.002564E-08    0.000000E+00              9.00000E+100
         62  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    1.857279E-03    0.000000E+00         E    9.00000E+100
         63  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    5.604694E-07    0.000000E+00              9.00000E+100
         64  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    6.958371E-07    0.000000E+00              9.00000E+100
         65  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    6.342205E-07    0.000000E+00              9.00000E+100
         66  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    5.631595E-07    0.000000E+00              9.00000E+100
         67  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    5.751454E-07    0.000000E+00              9.00000E+100
         68  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    4.687954E-07    0.000000E+00              9.00000E+100
         69  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    3.942781E-07    0.000000E+00              9.00000E+100
         70  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    4.523705E-07    0.000000E+00              9.00000E+100
         71  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    3.770822E-07    0.000000E+00              9.00000E+100
         72  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    2.963418E-07    0.000000E+00              9.00000E+100
         73  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    3.841581E-07    0.000000E+00              9.00000E+100
         74  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    3.512422E-07    0.000000E+00              9.00000E+100
         75  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    2.386475E-03    0.000000E+00         E    9.00000E+100
         76  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    7.107514E-04    0.000000E+00         E    9.00000E+100
         77  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    4.036426E-04    0.000000E+00         E    9.00000E+100
         78  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    3.360003E-04    0.000000E+00         E    9.00000E+100
         79  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    3.495104E-04    0.000000E+00         E    9.00000E+100
         80  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -1.235915E-04    0.000000E+00         E    9.00000E+100
         81  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -4.328436E-04    0.000000E+00         E    9.00000E+100
         82  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -1.097197E-03    0.000000E+00         E    9.00000E+100
         83  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -1.995735E-03    0.000000E+00         E    9.00000E+100
         84  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -2.300800E-03    0.000000E+00         E    9.00000E+100
         85  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -3.335191E-03    0.000000E+00         E    9.00000E+100
         86  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -4.776623E-03    0.000000E+00         E    9.00000E+100
         87  traj.ascent.continuity_comp.defect_control_rates:alpha_rate      e   0.000000E+00   -3.828735E-09    0.000000E+00              9.00000E+100
         88  traj.ascent.continuity_comp.defect_control_rates:alpha_rate      e   0.000000E+00    3.551256E-09    0.000000E+00              9.00000E+100
         89  traj.ascent.continuity_comp.defect_control_rates:alpha_rate      e   0.000000E+00    2.607885E-09    0.000000E+00              9.00000E+100
         90  traj.ascent.continuity_comp.defect_controls:alpha                e   0.000000E+00   -7.029343E-09    0.000000E+00              9.00000E+100
         91  traj.ascent.continuity_comp.defect_controls:alpha                e   0.000000E+00    2.381263E-08    0.000000E+00              9.00000E+100
         92  traj.ascent.continuity_comp.defect_controls:alpha                e   0.000000E+00    6.787626E-09    0.000000E+00              9.00000E+100
         93  traj.phases.climb1->final_boundary_constraint->altitude          e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
         94  traj.climb1.collocation_constraint.defects:altitude              e   0.000000E+00    1.245951E-04    0.000000E+00         E    9.00000E+100
         95  traj.climb1.collocation_constraint.defects:altitude              e   0.000000E+00    3.521597E-04    0.000000E+00         E    9.00000E+100
         96  traj.climb1.collocation_constraint.defects:altitude              e   0.000000E+00   -2.420526E-04    0.000000E+00         E    9.00000E+100
         97  traj.climb1.collocation_constraint.defects:mass                  e   0.000000E+00   -2.264589E-06    0.000000E+00         E    9.00000E+100
         98  traj.climb1.collocation_constraint.defects:mass                  e   0.000000E+00   -2.438146E-06    0.000000E+00         E    9.00000E+100
         99  traj.climb1.collocation_constraint.defects:mass                  e   0.000000E+00   -8.819625E-07    0.000000E+00              9.00000E+100
        100  traj.climb1.collocation_constraint.defects:distance              e   0.000000E+00   -5.525367E-04    0.000000E+00         E    9.00000E+100
        101  traj.climb1.collocation_constraint.defects:distance              e   0.000000E+00   -7.368848E-04    0.000000E+00         E    9.00000E+100
        102  traj.climb1.collocation_constraint.defects:distance              e   0.000000E+00   -3.942315E-04    0.000000E+00         E    9.00000E+100
        103  traj.phases.climb2->final_boundary_constraint->altitude          e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
        104  traj.phases.climb2->final_boundary_constraint->mach              e   8.000000E-01    8.000000E-01    8.000000E-01              9.00000E+100
        105  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -4.861812E-04    0.000000E+00         E    9.00000E+100
        106  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -5.370142E-03    0.000000E+00         E    9.00000E+100
        107  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -6.525683E-03    0.000000E+00         E    9.00000E+100
        108  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00    4.017954E-03    0.000000E+00         E    9.00000E+100
        109  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -1.221757E-02    0.000000E+00         E    9.00000E+100
        110  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -1.292814E-02    0.000000E+00         E    9.00000E+100
        111  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00    4.257240E-03    0.000000E+00         E    9.00000E+100
        112  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00    7.143528E-03    0.000000E+00         E    9.00000E+100
        113  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -2.613187E-03    0.000000E+00         E    9.00000E+100
        114  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    2.885097E-08    0.000000E+00              9.00000E+100
        115  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    5.217569E-05    0.000000E+00         E    9.00000E+100
        116  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    1.342086E-04    0.000000E+00         E    9.00000E+100
        117  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00   -1.668811E-05    0.000000E+00         E    9.00000E+100
        118  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    8.423195E-05    0.000000E+00         E    9.00000E+100
        119  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    1.048533E-04    0.000000E+00         E    9.00000E+100
        120  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    1.798158E-05    0.000000E+00         E    9.00000E+100
        121  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00   -2.569301E-05    0.000000E+00         E    9.00000E+100
        122  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    2.065869E-05    0.000000E+00         E    9.00000E+100
        123  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    4.938210E-07    0.000000E+00              9.00000E+100
        124  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    2.195878E-04    0.000000E+00         E    9.00000E+100
        125  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.184995E-04    0.000000E+00         E    9.00000E+100
        126  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.216608E-04    0.000000E+00         E    9.00000E+100
        127  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.463109E-04    0.000000E+00         E    9.00000E+100
        128  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.716646E-04    0.000000E+00         E    9.00000E+100
        129  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    1.008783E-03    0.000000E+00         E    9.00000E+100
        130  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.360765E-03    0.000000E+00         E    9.00000E+100
        131  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00   -2.039446E-04    0.000000E+00         E    9.00000E+100
        132  traj.phases.desc1->final_boundary_constraint->altitude           e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
        133  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00    2.876076E-05    0.000000E+00         E    9.00000E+100
        134  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -7.523426E-05    0.000000E+00         E    9.00000E+100
        135  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -3.261837E-04    0.000000E+00         E    9.00000E+100
        136  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -3.705671E-04    0.000000E+00         E    9.00000E+100
        137  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -5.653228E-04    0.000000E+00         E    9.00000E+100
        138  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -2.570082E-03    0.000000E+00         E    9.00000E+100
        139  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00    1.060982E-04    0.000000E+00         E    9.00000E+100
        140  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -5.978085E-05    0.000000E+00         E    9.00000E+100
        141  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -1.162090E-04    0.000000E+00         E    9.00000E+100
        142  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -9.137096E-09    0.000000E+00              9.00000E+100
        143  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -1.579549E-07    0.000000E+00              9.00000E+100
        144  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -1.969019E-07    0.000000E+00              9.00000E+100
        145  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -7.753004E-07    0.000000E+00              9.00000E+100
        146  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -7.751351E-07    0.000000E+00              9.00000E+100
        147  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -8.010523E-07    0.000000E+00              9.00000E+100
        148  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -2.684022E-07    0.000000E+00              9.00000E+100
        149  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00    7.502625E-08    0.000000E+00              9.00000E+100
        150  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00    1.383860E-07    0.000000E+00              9.00000E+100
        151  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    1.038271E-03    0.000000E+00         E    9.00000E+100
        152  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    2.637430E-04    0.000000E+00         E    9.00000E+100
        153  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    3.123495E-05    0.000000E+00         E    9.00000E+100
        154  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    9.060726E-05    0.000000E+00         E    9.00000E+100
        155  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    9.393255E-05    0.000000E+00         E    9.00000E+100
        156  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    5.603474E-04    0.000000E+00         E    9.00000E+100
        157  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00   -1.596663E-04    0.000000E+00         E    9.00000E+100
        158  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00   -3.976162E-05    0.000000E+00         E    9.00000E+100
        159  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    5.056631E-06    0.000000E+00         E    9.00000E+100
        160  traj.phases.desc2->final_boundary_constraint->altitude           e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
        161  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    6.785902E-05    0.000000E+00         E    9.00000E+100
        162  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    1.655600E-04    0.000000E+00         E    9.00000E+100
        163  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    3.146833E-04    0.000000E+00         E    9.00000E+100
        164  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    3.387873E-04    0.000000E+00         E    9.00000E+100
        165  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    3.234304E-04    0.000000E+00         E    9.00000E+100
        166  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    1.845749E-04    0.000000E+00         E    9.00000E+100
        167  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    5.871516E-05    0.000000E+00         E    9.00000E+100
        168  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00    7.056226E-09    0.000000E+00              9.00000E+100
        169  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -7.710738E-08    0.000000E+00              9.00000E+100
        170  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -2.658020E-07    0.000000E+00              9.00000E+100
        171  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -1.364398E-07    0.000000E+00              9.00000E+100
        172  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -3.511753E-07    0.000000E+00              9.00000E+100
        173  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -2.024819E-07    0.000000E+00              9.00000E+100
        174  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -3.130972E-08    0.000000E+00              9.00000E+100
        175  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00    5.401363E-08    0.000000E+00              9.00000E+100
        176  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -2.643906E-05    0.000000E+00         E    9.00000E+100
        177  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -6.616257E-05    0.000000E+00         E    9.00000E+100
        178  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -8.608765E-05    0.000000E+00         E    9.00000E+100
        179  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -7.252556E-05    0.000000E+00         E    9.00000E+100
        180  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -3.832820E-05    0.000000E+00         E    9.00000E+100
        181  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -8.281366E-06    0.000000E+00         E    9.00000E+100
        182  traj.groundroll.collocation_constraint.defects:velocity          e   0.000000E+00   -6.304798E-05    0.000000E+00         E    9.00000E+100
        183  traj.groundroll.collocation_constraint.defects:velocity          e   0.000000E+00   -9.837969E-04    0.000000E+00         E    9.00000E+100
        184  traj.groundroll.collocation_constraint.defects:velocity          e   0.000000E+00   -9.003055E-04    0.000000E+00         E    9.00000E+100
        185  traj.groundroll.collocation_constraint.defects:mass              e   0.000000E+00   -1.644909E-09    0.000000E+00              9.00000E+100
        186  traj.groundroll.collocation_constraint.defects:mass              e   0.000000E+00   -4.282908E-08    0.000000E+00              9.00000E+100
        187  traj.groundroll.collocation_constraint.defects:mass              e   0.000000E+00   -7.772803E-08    0.000000E+00              9.00000E+100
        188  traj.groundroll.collocation_constraint.defects:distance          e   0.000000E+00   -1.325659E-09    0.000000E+00              9.00000E+100
        189  traj.groundroll.collocation_constraint.defects:distance          e   0.000000E+00    8.285973E-03    0.000000E+00         E    9.00000E+100
        190  traj.groundroll.collocation_constraint.defects:distance          e   0.000000E+00    6.933447E-03    0.000000E+00         E    9.00000E+100
        191  traj.phases.rotation->final_boundary_constraint->normal_force    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        192  traj.rotation.collocation_constraint.defects:alpha               e   0.000000E+00   -7.133741E-08    0.000000E+00              9.00000E+100
        193  traj.rotation.collocation_constraint.defects:alpha               e   0.000000E+00   -3.269113E-07    0.000000E+00              9.00000E+100
        194  traj.rotation.collocation_constraint.defects:alpha               e   0.000000E+00   -2.369193E-07    0.000000E+00              9.00000E+100
        195  traj.rotation.collocation_constraint.defects:velocity            e   0.000000E+00   -3.865070E-04    0.000000E+00         E    9.00000E+100
        196  traj.rotation.collocation_constraint.defects:velocity            e   0.000000E+00   -5.240817E-04    0.000000E+00         E    9.00000E+100
        197  traj.rotation.collocation_constraint.defects:velocity            e   0.000000E+00    2.298766E-04    0.000000E+00         E    9.00000E+100
        198  traj.rotation.collocation_constraint.defects:mass                e   0.000000E+00   -2.275033E-08    0.000000E+00              9.00000E+100
        199  traj.rotation.collocation_constraint.defects:mass                e   0.000000E+00   -2.287898E-08    0.000000E+00              9.00000E+100
        200  traj.rotation.collocation_constraint.defects:mass                e   0.000000E+00   -2.701813E-08    0.000000E+00              9.00000E+100
        201  traj.rotation.collocation_constraint.defects:distance            e   0.000000E+00    1.055500E-03    0.000000E+00         E    9.00000E+100
        202  traj.rotation.collocation_constraint.defects:distance            e   0.000000E+00    1.404093E-03    0.000000E+00         E    9.00000E+100
        203  traj.rotation.collocation_constraint.defects:distance            e   0.000000E+00    1.802072E-03    0.000000E+00         E    9.00000E+100
        204  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    6.817835E-01    1.100000E+00              9.00000E+100
        205  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.279975E-01    1.100000E+00              9.00000E+100
        206  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    3.472408E-01    1.100000E+00              9.00000E+100
        207  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    3.823319E-01    1.100000E+00              9.00000E+100
        208  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    3.823319E-01    1.100000E+00              9.00000E+100
        209  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.730253E-01    1.100000E+00              9.00000E+100
        210  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.938311E-01    1.100000E+00              9.00000E+100
        211  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.720771E-01    1.100000E+00              9.00000E+100
        212  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.720772E-01    1.100000E+00              9.00000E+100
        213  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.310321E-01    1.100000E+00              9.00000E+100
        214  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.559793E-01    1.100000E+00              9.00000E+100
        215  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.848591E-01    1.100000E+00              9.00000E+100
        216  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.848591E-01    1.100000E+00              9.00000E+100
        217  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    5.093937E-01    1.100000E+00              9.00000E+100
        218  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    3.704543E-01    1.100000E+00              9.00000E+100
        219  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    2.847495E-01    1.100000E+00              9.00000E+100
        220  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    8.595345E+00    1.500000E+01              9.00000E+100
        221  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    4.270903E+00    1.500000E+01              9.00000E+100
        222  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    2.335322E+00    1.500000E+01              9.00000E+100
        223  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    2.471691E+00    1.500000E+01              9.00000E+100
        224  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    2.471691E+00    1.500000E+01              9.00000E+100
        225  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    4.367885E+00    1.500000E+01              9.00000E+100
        226  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    6.638549E+00    1.500000E+01              9.00000E+100
        227  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    6.894008E+00    1.500000E+01              9.00000E+100
        228  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    6.894009E+00    1.500000E+01              9.00000E+100
        229  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    7.008537E+00    1.500000E+01              9.00000E+100
        230  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    7.967319E+00    1.500000E+01              9.00000E+100
        231  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    8.742034E+00    1.500000E+01              9.00000E+100
        232  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    8.742034E+00    1.500000E+01              9.00000E+100
        233  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    1.049139E+01    1.500000E+01              9.00000E+100
        234  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    9.524080E+00    1.500000E+01              9.00000E+100
        235  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    7.814231E+00    1.500000E+01              9.00000E+100
        236  traj.phases.climb2->final_boundary_constraint->altitude_rate     i   1.000000E-01    3.482185E+02    1.000000E+30              9.00000E+100

--------------------------------------------------------------------------------
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/core/driver.py:143: OMDeprecationWarning:boolean evaluation of DriverResult is temporarily implemented to mimick the previous `failed` return behavior of run_driver.
Use the `success` attribute of the returned DriverResult object to test for successful driver completion.

The argument models/test_aircraft/aircraft_for_bench_GwGm.csv shows where the aircraft csv file lives. This argument must be one of the following three options:

  • an absolute path,

  • a relative path relative to the current working directory,

  • a relative path relative to the Aviary package.

Aviary searches for the given dataset in this order. If a dataset file exists in multiple directories, the first one Aviary finds will be used.

Note

When you run Aviary all of the outputs will be saved in the location where you run the command or run script. Outputs files such as optimization history and Dymos output files are saved at that location. A folder named ‘report’ will also be created there, and contains all of the associated report files for your runs. These reports include optimization and trajectory reports generated by OpenMDAO and Dymos.

Warning messages#

During your first run you may notice some warning messages in the Aviary output. Frequently seen warnings are:

  • PromotionWarning: Issued when there is ambiguity due to variable promotion (an OpenMDAO warning).

  • RuntimeWarning: Issued for warnings about dubious runtime features (a Python warning).

  • UserWarning: Issued for warnings about potential OpenMDAO, Dymos, and/or Aviary problems.

  • DerivativesWarning: Issued when the approximated partials or coloring cannot be evaluated as expected (an OpenMDAO warning).

Some of these warnings are expected and can be ignored. For example, the following warnings are expected when running the aircraft_for_bench_GwGm.csv model:

~/workspace/OpenMDAO/openmdao/core/group.py:326: PromotionWarning:<class Group>: Setting input defaults for input 'mission:takeoff:ascent_duration' which override previously set defaults for ['auto', 'prom', 'src_shape', 'val'].
~/workspace/dymos/dymos/phase/phase.py:2007: RuntimeWarning: Invalid options for non-optimal control 'throttle' in phase 'groundroll': lower, upper
  warnings.warn(f"Invalid options for non-optimal control '{name}' in phase "
~/workspace/dymos/dymos/phase/phase.py:1967: UserWarning: Phase time options have no effect because fix_initial=True or input_initial=True for phase 'traj.phases.rotation': initial_ref
  warnings.warn(f'Phase time options have no effect because fix_initial=True '

For now, we can ignore the warning messages and continue.

Level 1 run options#

In addition to a model input file, this option has additional options that are important, as seen here:

!aviary run_mission
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/pyoptsparse/pyOpt_MPI.py:68: UserWarning: mpi4py could not be imported. mpi4py is required to use the parallel gradient analysis and parallel objective analysis for non-gradient based optimizers. Continuing using a dummy MPI module from pyOptSparse.
  warnings.warn(warn)
usage: aviary run_mission [-h] [-o OUTDIR]
                          [--optimizer {SNOPT,IPOPT,SLSQP,None}]
                          [--phase_info PHASE_INFO] [--n2]
                          [--max_iter MAX_ITER] [--shooting]
                          indeck
aviary run_mission: error: the following arguments are required: indeck

Let us discuss these in more detail:

  • -o ––outdir: Use specified directory to write output. The default is the current directory.

  • --optimizer: Name of optimizer. Choices are: SNOPT, IPOPT, SLSQP, and None. The default is SNOPT. If optimizer is None, it will be set to IPOPT or SNOPT depending on the analysis scheme. The optimization objective is fuel burn for level 1 runs. The objective is

    • mission:objectives:fuel if mission_method is GASP

    • fuel_burned if mission_method is FLOPS.

  • --phase_info: Path to phase info file. If not provided, it is default_phase_info/gasp.py if Mission origin is 2DOF and default_phase_info/flops.py for simple.

  • --n2: Generate an n2 diagram after the analysis. “N2” diagram is an OpenMDAO helper to visualize the model (see details too and tutorial). It is highly recommended that this option is turned on for new users.

  • --max_iter: Maximum number of iterations. Default is 50.

  • shooting: Use shooting instead of collocation.

For the aircraft_for_bench_GwGm example so far, we have used the IPOPT optimizer because it is publicly available through pyOptSparse.

Aviary run_mission command#

The Level 1 CLI (i.e. run_mission option) is designed to offer the lowest barrier to entry for new users. Analysts who have experience with legacy tools, such as FLOPS and GASP, should find the switch from FORTRAN namelists to csv-based input decks to be straightforward. Aviary input decks allow the user the ability to set aircraft characteristics and basic mission parameters, such as cruise Mach number and altitude, in a simple text-based format that does not require any familiarity with Python or OpenMDAO.

Aviary can then be executed by calling aviary run_mission with the csv input deck. Although the order of the variables in the input deck is not important, you might find it helpful to separate the variables based on if they’re used as initial guesses or in the metadata.

First aircraft model#

We have a few sample aircraft csv files in aviary/models. They are all .csv files. For example, aircraft_for_bench_GwGm.csv (in test_models) is a large single aisle aircraft mission model.

Open aircraft_for_bench_GwGm.csv using your favorite editor (e.g., MS Excel or VS Code). If you choose to use MS Excel, you need to take extra steps to make sure that it is in the original format. We recommend running dos2unix first (e.g. dos2unix aircraft_for_bench_GwGm.csv).

The file aircraft_for_bench_GwGm.csv is a data input file modeling large single aisle aircraft which was converted from a GASP input deck. Here is a snippet of the file:

aircraft:air_conditioning:mass_coefficient,1.65,unitless
aircraft:anti_icing:mass,551,lbm
aircraft:apu:mass,928,lbm
......
mission:design:cruise_altitude,37500,ft
mission:design:gross_mass,175400,lbm
......
reserves,0
rotation_mass,0.99
time_to_climb,0
......
INGASP.ALR,1.11,
INGASP.BENGOB,0.05,
INGASP.CINP,0.11,
......

The input .csv file defines the aircraft and mission. In an Aviary input file you see a list of Aviary variables, their values, and units. Aviary variables are colon delimited strings (e.g. aircraft:wing:aspect_ratio). An Aviary variable name usually has three words. The first word is aircraft or mission, the second word is a subsystem name and the third is the variable name. Each variable has a value and units. Aviary requires units for every variable because it reduces errors and is a good engineering practice.

Note

If you have used the fortran_to_aviary tool to create a .csv file you must check the outputted variable values and units to ensure the file is valid and what you expect.

Be aware that some variables do not follow the standard naming format (e.g. reserves). These are used for the initial guessing of the trajectory. They are intentionally separate to prevent conflicts with some similarly named variables. They are only used once to set up the problem and then are discarded.

Finally we see a list of GASP variables that are not converted. Not all variables are converted to Aviary right now. They may represent some features in FLOPS and GASP that we haven’t implemented in Aviary yet.

To find information about a variable (e.g. description, data type, etc.), users should read the Variable Metadata Doc.

There are special rules for the mapping from the input file variable names to the metadata. For example, variable aircraft:wing:aspect_ratio in aircraft_for_bench_GwGm.csv is mapped to Aircraft.Wing.ASPECT_RATIO in aviary/variable_info/variable_meta_data.py. So, the first part (e.g., aircraft or mission) is mapped to the same word but with the first letter capitalized (e.g., Aircraft or Mission). The third word is all caps (e.g., ASPECT_RATIO). The middle part (e.g., wing) is a little more complicated. In most cases, this part capitalizes the first letter (e.g., Wing). The following words have special mappings:

  • air_conditioning -> AirConditioning

  • anti_icing -> AntiIcing

  • blended_wing_body -> BWB

  • crew_and_payload -> CrewPayload

  • horizontal_tail -> HorizontalTail

  • landing_gear -> LandingGear

  • tail_boom -> TailBoom

  • vertical_tail -> VerticalTail

This can be summarized as to capitalize the leading letter and to capitalize the first letter after special character “_”.

File aviary/variable_info/variables.py is a variable hierarchy that is for a single mission. Each mission gets a copy of this hierarchy. Below is a snippet of this file:

'''
This is a variable hierarchy that is for a single mission. Each mission
gets a copy of this hierarchy.
'''


class Aircraft:
    """Aircraft data hierarchy"""

    class AirConditioning:
        MASS = 'aircraft:air_conditioning:mass'
        MASS_COEFFICIENT = 'aircraft:air_conditioning:mass_coefficient'
        MASS_SCALER = 'aircraft:air_conditioning:mass_scaler'

    class AntiIcing:
        MASS = 'aircraft:anti_icing:mass'
        MASS_SCALER = 'aircraft:anti_icing:mass_scaler'

Aviary variables are always set to default values before the input file is read in. Then Aviary will update the values based on the user-provided .csv input file. If you want to set different values, you can set them in the .csv input file.

Other available input files#

Other input files reside in aviary/models. They include:

aviary/models/validation_data/N3CC/N3CC_generic_low_speed_polars_FLOPSinp.csv
aviary/models/large_single_aisle_1/large_single_aisle_1_GwGm.csv
aviary/models/small_single_aisle/small_single_aisle_GwGm.csv
aviary/models/test_aircraft/converter_configuration_test_data_GwGm.csv

For example, to run large_single_aisle_1 model, you execute the following command:

!aviary run_mission models/large_single_aisle_1/large_single_aisle_1_GwGm.csv --max_iter 1 --optimizer IPOPT
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/pyoptsparse/pyOpt_MPI.py:68: UserWarning: mpi4py could not be imported. mpi4py is required to use the parallel gradient analysis and parallel objective analysis for non-gradient based optimizers. Continuing using a dummy MPI module from pyOptSparse.
  warnings.warn(warn)
Loaded default phase_info for 2dof equations of motion
/home/runner/work/Aviary/Aviary/aviary/utils/preprocessors.py:264: UserWarning: Mount location for engines of type <turbofan_23k_1> not specified. Wing-mounted engines are assumed.
  warnings.warn(
The following variables have been overridden:
  'aircraft:fuselage:wetted_area
  'aircraft:wing:slat_span_ratio
  'aircraft:wing:slat_span_ratio
  'aircraft:wing:slat_span_ratio
--- Constraint Report [traj] ---
    --- groundroll ---
        None
    --- rotation ---
        [final]   0.0000e+00 == normal_force [lbf]
    --- ascent ---
        [final]   5.0000e+02 == altitude [ft]
        [path]    0.0000e+00 <= load_factor <= 1.1000e+00  [unitless]
        [path]    0.0000e+00 <= fuselage_pitch <= 1.5000e+01  [deg]
    --- accel ---
        [final]   2.5000e+02 == EAS [kn]
    --- climb1 ---
        [final]   1.0000e+04 == altitude [ft]
    --- climb2 ---
        [final]   3.7500e+04 == altitude [ft]
        [final]   1.0000e-01 <= altitude_rate  [ft/min]
        [final]   8.0000e-01 == mach [unitless]
    --- cruise ---
        None
    --- desc1 ---
        [final]   1.0000e+04 == altitude [ft]
    --- desc2 ---
        [final]   1.0000e+03 == altitude [ft]
'rhs_checking' is disabled for 'DirectSolver in 'traj.phases.ascent' <class Phase>' but that solver has redundant adjoint solves. If it is expensive to compute derivatives for this solver, turning on 'rhs_checking' may improve performance.


'rhs_checking' is disabled for 'DirectSolver in 'traj.phases.climb1' <class Phase>' but that solver has redundant adjoint solves. If it is expensive to compute derivatives for this solver, turning on 'rhs_checking' may improve performance.


'rhs_checking' is disabled for 'DirectSolver in 'traj.phases.desc1' <class Phase>' but that solver has redundant adjoint solves. If it is expensive to compute derivatives for this solver, turning on 'rhs_checking' may improve performance.
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/recorders/sqlite_recorder.py:226: UserWarning:The existing case recorder file, problem_history.db, is being overwritten.
Model viewer data has already been recorded for Driver.
Model viewer data has already been recorded for Driver.
Full total jacobian for problem 'large_single_aisle_1_GwGm' was computed 3 times, taking 2.0680225239999572 seconds.
Total jacobian shape: (238, 212) 
Jacobian shape: (238, 212)  (7.77% nonzero)
FWD solves: 45   REV solves: 0
Total colors vs. total size: 45 vs 212  (78.77% improvement)

Sparsity computed using tolerance: 1e-25
Time to compute sparsity:   2.0680 sec
Time to compute coloring:   0.1923 sec
Memory to compute coloring:   1.1250 MB
Coloring created on: 2024-09-16 15:54:18
This is Ipopt version 3.14.16, running with linear solver MUMPS 5.7.3.

Number of nonzeros in equality constraint Jacobian...:     2783
Number of nonzeros in inequality constraint Jacobian.:      586
Number of nonzeros in Lagrangian Hessian.............:        0
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/core/total_jac.py:1646: DerivativesWarning:Constraints or objectives [('traj.phases.climb2->final_boundary_constraint->mach', inds=[(11, 0)])] cannot be impacted by the design variables of the problem.
Total number of variables............................:      212
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      212
                     variables with only upper bounds:        0
Total number of equality constraints.................:      204
Total number of inequality constraints...............:       33
        inequality constraints with only lower bounds:        1
   inequality constraints with lower and upper bounds:       32
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  5.2731333e+00 1.74e+03 1.75e+01  -5.0 0.00e+00    -  0.00e+00 0.00e+00   0
Number of Iterations....: 1

                                   (scaled)                 (unscaled)
Objective...............:   4.4324235064324373e+00    4.4324235064324373e+00
Dual infeasibility......:   1.7257205187694257e+01    1.7257205187694257e+01
Constraint violation....:   5.3960557244559176e+01    3.1266721324369217e+02
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000016687732632e+05    1.0000016687732632e+05
Overall NLP error.......:   1.0000016687732632e+05    1.0000016687732632e+05


Number of objective function evaluations             = 2
Number of objective gradient evaluations             = 2
Number of equality constraint evaluations            = 2
Number of inequality constraint evaluations          = 2
Number of equality constraint Jacobian evaluations   = 2
Number of inequality constraint Jacobian evaluations = 2
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 2.683

EXIT: Maximum Number of Iterations Exceeded.
minimal_print is not available for this solution


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

    Solution: 
--------------------------------------------------------------------------------
    Total Time:                    2.6846
       User Objective Time :       0.7575
       User Sensitivity Time :     1.8972
       Interface Time :            0.0175
       Opt Solver Time:            0.0124
    Calls to Objective Function :       3
    Calls to Sens Function :            3


   Objectives
      Index  Name                               Value
          0  mission:objectives:fuel     4.432424E+00

   Variables (c - continuous, i - integer, d - discrete)
      Index  Name                                      Type      Lower Bound            Value      Upper Bound     Status
          0  mission:design:gross_mass_0                  c     5.714286E-05     9.949396E-01     2.285714E+00           
          1  mission:summary:gross_mass_0                 c     5.714286E-05     9.949396E-01     2.285714E+00           
          2  mission:takeoff:ascent_t_initial_0           c     0.000000E+00     5.640433E-01     3.333333E+00           
          3  mission:takeoff:ascent_duration_0            c     1.000000E-01     5.381947E-01     1.000000E+02           
          4  tau_gear_0                                   c     1.000000E-02     2.004352E-01     1.000000E+00           
          5  tau_flaps_0                                  c     1.000000E-02     9.684433E-01     1.000000E+00           
          6  traj.accel.t_duration_0                      c     9.950249E-03     2.937072E-01     1.990050E+00           
          7  traj.accel.states:velocity_0                 c     0.000000E+00     5.087770E-01     1.200000E+00           
          8  traj.accel.states:velocity_1                 c     0.000000E+00     8.990457E-01     1.200000E+00           
          9  traj.accel.states:velocity_2                 c     0.000000E+00     1.018244E+00     1.200000E+00           
         10  traj.accel.states:mass_0                     c     0.000000E+00     1.158295E+00     6.666667E+15           
         11  traj.accel.states:mass_1                     c     0.000000E+00     1.158037E+00     6.666667E+15           
         12  traj.accel.states:mass_2                     c     0.000000E+00     1.157677E+00     6.666667E+15           
         13  traj.accel.states:mass_3                     c     0.000000E+00     1.157562E+00     6.666667E+15           
         14  traj.accel.states:distance_0                 c     0.000000E+00     3.426181E-01     3.000000E+01           
         15  traj.accel.states:distance_1                 c     0.000000E+00     5.213217E-01     3.000000E+01           
         16  traj.accel.states:distance_2                 c     0.000000E+00     5.837219E-01     3.000000E+01           
         17  traj.ascent.states:flight_path_angle_0       c    -9.999996E+00    -4.661620E-03     1.999999E+01           
         18  traj.ascent.states:flight_path_angle_1       c    -9.999996E+00    -1.101080E-02     1.999999E+01           
         19  traj.ascent.states:flight_path_angle_2       c    -9.999996E+00    -1.692640E-02     1.999999E+01           
         20  traj.ascent.states:flight_path_angle_3       c    -9.999996E+00    -3.827483E-03     1.999999E+01           
         21  traj.ascent.states:flight_path_angle_4       c    -9.999996E+00     3.551577E-02     1.999999E+01           
         22  traj.ascent.states:flight_path_angle_5       c    -9.999996E+00     4.646794E-02     1.999999E+01           
         23  traj.ascent.states:flight_path_angle_6       c    -9.999996E+00     6.072926E-02     1.999999E+01           
         24  traj.ascent.states:flight_path_angle_7       c    -9.999996E+00     7.395940E-02     1.999999E+01           
         25  traj.ascent.states:flight_path_angle_8       c    -9.999996E+00     8.144464E-02     1.999999E+01           
         26  traj.ascent.states:flight_path_angle_9       c    -9.999996E+00     1.075641E-01     1.999999E+01           
         27  traj.ascent.states:flight_path_angle_10      c    -9.999996E+00     1.243537E-01     1.999999E+01           
         28  traj.ascent.states:flight_path_angle_11      c    -9.999996E+00     1.147642E-01     1.999999E+01           
         29  traj.ascent.states:altitude_0                c     0.000000E+00     5.818859E-01     7.000000E-01           
         30  traj.ascent.states:altitude_1                c     0.000000E+00     5.778287E-01     7.000000E-01           
         31  traj.ascent.states:altitude_2                c     0.000000E+00     5.584360E-01     7.000000E-01           
         32  traj.ascent.states:altitude_3                c     0.000000E+00     5.488306E-01     7.000000E-01           
         33  traj.ascent.states:altitude_4                c     0.000000E+00     5.226582E-01     7.000000E-01           
         34  traj.ascent.states:altitude_5                c     0.000000E+00     4.973030E-01     7.000000E-01           
         35  traj.ascent.states:altitude_6                c     0.000000E+00     4.948499E-01     7.000000E-01           
         36  traj.ascent.states:altitude_7                c     0.000000E+00     4.906278E-01     7.000000E-01           
         37  traj.ascent.states:altitude_8                c     0.000000E+00     4.857745E-01     7.000000E-01           
         38  traj.ascent.states:altitude_9                c     0.000000E+00     4.834963E-01     7.000000E-01           
         39  traj.ascent.states:altitude_10               c     0.000000E+00     4.861716E-01     7.000000E-01           
         40  traj.ascent.states:altitude_11               c     0.000000E+00     4.975269E-01     7.000000E-01           
         41  traj.ascent.states:altitude_12               c     0.000000E+00     5.000000E-01     7.000000E-01           
         42  traj.ascent.states:velocity_0                c     0.000000E+00     7.735743E-01     3.500000E+00           
         43  traj.ascent.states:velocity_1                c     0.000000E+00     7.903544E-01     3.500000E+00           
         44  traj.ascent.states:velocity_2                c     0.000000E+00     7.957056E-01     3.500000E+00           
         45  traj.ascent.states:velocity_3                c     0.000000E+00     8.108802E-01     3.500000E+00           
         46  traj.ascent.states:velocity_4                c     0.000000E+00     8.271776E-01     3.500000E+00           
         47  traj.ascent.states:velocity_5                c     0.000000E+00     8.304181E-01     3.500000E+00           
         48  traj.ascent.states:velocity_6                c     0.000000E+00     8.377380E-01     3.500000E+00           
         49  traj.ascent.states:velocity_7                c     0.000000E+00     8.474897E-01     3.500000E+00           
         50  traj.ascent.states:velocity_8                c     0.000000E+00     8.506113E-01     3.500000E+00           
         51  traj.ascent.states:velocity_9                c     0.000000E+00     8.547171E-01     3.500000E+00           
         52  traj.ascent.states:velocity_10               c     0.000000E+00     8.582486E-01     3.500000E+00           
         53  traj.ascent.states:velocity_11               c     0.000000E+00     8.601818E-01     3.500000E+00           
         54  traj.ascent.states:mass_0                    c     0.000000E+00     1.158422E+00     6.666667E+15           
         55  traj.ascent.states:mass_1                    c     0.000000E+00     1.158411E+00     6.666667E+15           
         56  traj.ascent.states:mass_2                    c     0.000000E+00     1.158395E+00     6.666667E+15           
         57  traj.ascent.states:mass_3                    c     0.000000E+00     1.158391E+00     6.666667E+15           
         58  traj.ascent.states:mass_4                    c     0.000000E+00     1.158379E+00     6.666667E+15           
         59  traj.ascent.states:mass_5                    c     0.000000E+00     1.158364E+00     6.666667E+15           
         60  traj.ascent.states:mass_6                    c     0.000000E+00     1.158359E+00     6.666667E+15           
         61  traj.ascent.states:mass_7                    c     0.000000E+00     1.158347E+00     6.666667E+15           
         62  traj.ascent.states:mass_8                    c     0.000000E+00     1.158332E+00     6.666667E+15           
         63  traj.ascent.states:mass_9                    c     0.000000E+00     1.158327E+00     6.666667E+15           
         64  traj.ascent.states:mass_10                   c     0.000000E+00     1.158315E+00     6.666667E+15           
         65  traj.ascent.states:mass_11                   c     0.000000E+00     1.158300E+00     6.666667E+15           
         66  traj.ascent.states:mass_12                   c     0.000000E+00     1.158295E+00     6.666667E+15           
         67  traj.ascent.states:distance_0                c     0.000000E+00     5.740047E-01     1.500000E+00           
         68  traj.ascent.states:distance_1                c     0.000000E+00     5.916787E-01     1.500000E+00           
         69  traj.ascent.states:distance_2                c     0.000000E+00     5.974510E-01     1.500000E+00           
         70  traj.ascent.states:distance_3                c     0.000000E+00     6.106470E-01     1.500000E+00           
         71  traj.ascent.states:distance_4                c     0.000000E+00     6.290020E-01     1.500000E+00           
         72  traj.ascent.states:distance_5                c     0.000000E+00     6.347481E-01     1.500000E+00           
         73  traj.ascent.states:distance_6                c     0.000000E+00     6.476105E-01     1.500000E+00           
         74  traj.ascent.states:distance_7                c     0.000000E+00     6.647644E-01     1.500000E+00           
         75  traj.ascent.states:distance_8                c     0.000000E+00     6.700523E-01     1.500000E+00           
         76  traj.ascent.states:distance_9                c     0.000000E+00     6.817130E-01     1.500000E+00           
         77  traj.ascent.states:distance_10               c     0.000000E+00     6.966324E-01     1.500000E+00           
         78  traj.ascent.states:distance_11               c     0.000000E+00     7.010662E-01     1.500000E+00           
         79  traj.ascent.controls:alpha_0                 c    -6.000000E+00     2.021279E+00     6.000000E+00           
         80  traj.ascent.controls:alpha_1                 c    -6.000000E+00     1.208369E+00     6.000000E+00           
         81  traj.ascent.controls:alpha_2                 c    -6.000000E+00     8.931592E-01     6.000000E+00           
         82  traj.ascent.controls:alpha_3                 c    -6.000000E+00     9.882173E-01     6.000000E+00           
         83  traj.ascent.controls:alpha_4                 c    -6.000000E+00     1.217821E+00     6.000000E+00           
         84  traj.ascent.controls:alpha_5                 c    -6.000000E+00     1.221631E+00     6.000000E+00           
         85  traj.ascent.controls:alpha_6                 c    -6.000000E+00     1.147222E+00     6.000000E+00           
         86  traj.ascent.controls:alpha_7                 c    -6.000000E+00     1.006512E+00     6.000000E+00           
         87  traj.ascent.controls:alpha_8                 c    -6.000000E+00     1.046497E+00     6.000000E+00           
         88  traj.ascent.controls:alpha_9                 c    -6.000000E+00     1.115716E+00     6.000000E+00           
         89  traj.ascent.controls:alpha_10                c    -6.000000E+00     1.166423E+00     6.000000E+00           
         90  traj.ascent.controls:alpha_11                c    -6.000000E+00     7.801777E-01     6.000000E+00           
         91  traj.climb1.t_duration_0                     c     1.818182E-01     1.021879E+00     1.818182E+00           
         92  traj.climb1.states:altitude_0                c     4.000000E-02     7.170729E-02     1.100000E+00           
         93  traj.climb1.states:altitude_1                c     4.000000E-02     4.140253E-01     1.100000E+00           
         94  traj.climb1.states:altitude_2                c     4.000000E-02     8.659392E-01     1.100000E+00           
         95  traj.climb1.states:altitude_3                c     4.000000E-02     1.000000E+00     1.100000E+00           
         96  traj.climb1.states:mass_0                    c     0.000000E+00     1.157562E+00     6.666667E+15           
         97  traj.climb1.states:mass_1                    c     0.000000E+00     1.156103E+00     6.666667E+15           
         98  traj.climb1.states:mass_2                    c     0.000000E+00     1.154220E+00     6.666667E+15           
         99  traj.climb1.states:mass_3                    c     0.000000E+00     1.153654E+00     6.666667E+15           
        100  traj.climb1.states:distance_0                c     0.000000E+00     7.186966E-01     5.000000E+01           
        101  traj.climb1.states:distance_1                c     0.000000E+00     1.345282E+00     5.000000E+01           
        102  traj.climb1.states:distance_2                c     0.000000E+00     1.553156E+00     5.000000E+01           
        103  traj.climb2.t_duration_0                     c     2.325581E-02     1.302388E-01     1.976744E+00           
        104  traj.climb2.states:altitude_0                c     3.000000E-01     5.444459E-01     1.333333E+00           
        105  traj.climb2.states:altitude_1                c     3.000000E-01     7.763141E-01     1.333333E+00           
        106  traj.climb2.states:altitude_2                c     3.000000E-01     8.380420E-01     1.333333E+00           
        107  traj.climb2.states:altitude_3                c     3.000000E-01     9.602169E-01     1.333333E+00           
        108  traj.climb2.states:altitude_4                c     3.000000E-01     1.081840E+00     1.333333E+00           
        109  traj.climb2.states:altitude_5                c     3.000000E-01     1.114085E+00     1.333333E+00           
        110  traj.climb2.states:altitude_6                c     3.000000E-01     1.181396E+00     1.333333E+00           
        111  traj.climb2.states:altitude_7                c     3.000000E-01     1.239943E+00     1.333333E+00           
        112  traj.climb2.states:altitude_8                c     3.000000E-01     1.250000E+00     1.333333E+00           
        113  traj.climb2.states:mass_0                    c     0.000000E+00     1.153654E+00     6.666667E+15           
        114  traj.climb2.states:mass_1                    c     0.000000E+00     1.151000E+00     6.666667E+15           
        115  traj.climb2.states:mass_2                    c     0.000000E+00     1.147884E+00     6.666667E+15           
        116  traj.climb2.states:mass_3                    c     0.000000E+00     1.146994E+00     6.666667E+15           
        117  traj.climb2.states:mass_4                    c     0.000000E+00     1.145010E+00     6.666667E+15           
        118  traj.climb2.states:mass_5                    c     0.000000E+00     1.142564E+00     6.666667E+15           
        119  traj.climb2.states:mass_6                    c     0.000000E+00     1.141825E+00     6.666667E+15           
        120  traj.climb2.states:mass_7                    c     0.000000E+00     1.140157E+00     6.666667E+15           
        121  traj.climb2.states:mass_8                    c     0.000000E+00     1.138032E+00     6.666667E+15           
        122  traj.climb2.states:mass_9                    c     0.000000E+00     1.137410E+00     6.666667E+15           
        123  traj.climb2.states:distance_0                c     2.000000E-02     5.544487E-02     2.000000E+00           
        124  traj.climb2.states:distance_1                c     2.000000E-02     9.323986E-02     2.000000E+00           
        125  traj.climb2.states:distance_2                c     2.000000E-02     1.061171E-01     2.000000E+00           
        126  traj.climb2.states:distance_3                c     2.000000E-02     1.371433E-01     2.000000E+00           
        127  traj.climb2.states:distance_4                c     2.000000E-02     1.829620E-01     2.000000E+00           
        128  traj.climb2.states:distance_5                c     2.000000E-02     1.980581E-01     2.000000E+00           
        129  traj.climb2.states:distance_6                c     2.000000E-02     2.338796E-01     2.000000E+00           
        130  traj.climb2.states:distance_7                c     2.000000E-02     2.827198E-01     2.000000E+00           
        131  traj.climb2.states:distance_8                c     2.000000E-02     2.970116E-01     2.000000E+00           
        132  traj.cruise.t_initial_0                      c     0.000000E+00     1.706115E+00     1.000000E+02           
        133  traj.cruise.t_duration_0                     c    -2.000000E+02    -6.754282E-01    -2.000000E-05           
        134  traj.desc1.t_duration_0                      c     5.000000E-01     9.564190E-01     1.500000E+00           
        135  traj.desc1.states:altitude_0                 c     3.333333E-02     1.252801E+00     1.333333E+00           
        136  traj.desc1.states:altitude_1                 c     3.333333E-02     1.162259E+00     1.333333E+00           
        137  traj.desc1.states:altitude_2                 c     3.333333E-02     1.031239E+00     1.333333E+00           
        138  traj.desc1.states:altitude_3                 c     3.333333E-02     9.873389E-01     1.333333E+00           
        139  traj.desc1.states:altitude_4                 c     3.333333E-02     8.812017E-01     1.333333E+00           
        140  traj.desc1.states:altitude_5                 c     3.333333E-02     7.158063E-01     1.333333E+00           
        141  traj.desc1.states:altitude_6                 c     3.333333E-02     6.573378E-01     1.333333E+00           
        142  traj.desc1.states:altitude_7                 c     3.333333E-02     5.355075E-01     1.333333E+00           
        143  traj.desc1.states:altitude_8                 c     3.333333E-02     3.798972E-01     1.333333E+00           
        144  traj.desc1.states:altitude_9                 c     3.333333E-02     3.333333E-01     1.333333E+00           
        145  traj.desc1.states:mass_0                     c     0.000000E+00     9.774296E-01     7.142857E+15           
        146  traj.desc1.states:mass_1                     c     0.000000E+00     9.773680E-01     7.142857E+15           
        147  traj.desc1.states:mass_2                     c     0.000000E+00     9.772696E-01     7.142857E+15           
        148  traj.desc1.states:mass_3                     c     0.000000E+00     9.772350E-01     7.142857E+15           
        149  traj.desc1.states:mass_4                     c     0.000000E+00     9.771476E-01     7.142857E+15           
        150  traj.desc1.states:mass_5                     c     0.000000E+00     9.770059E-01     7.142857E+15           
        151  traj.desc1.states:mass_6                     c     0.000000E+00     9.769549E-01     7.142857E+15           
        152  traj.desc1.states:mass_7                     c     0.000000E+00     9.768313E-01     7.142857E+15           
        153  traj.desc1.states:mass_8                     c     0.000000E+00     9.766419E-01     7.142857E+15           
        154  traj.desc1.states:mass_9                     c     0.000000E+00     9.765772E-01     7.142857E+15           
        155  traj.desc1.states:distance_0                 c     8.163265E-01     9.735208E-01     1.360544E+00           
        156  traj.desc1.states:distance_1                 c     8.163265E-01     9.768117E-01     1.360544E+00           
        157  traj.desc1.states:distance_2                 c     8.163265E-01     9.778674E-01     1.360544E+00           
        158  traj.desc1.states:distance_3                 c     8.163265E-01     9.803050E-01     1.360544E+00           
        159  traj.desc1.states:distance_4                 c     8.163265E-01     9.837301E-01     1.360544E+00           
        160  traj.desc1.states:distance_5                 c     8.163265E-01     9.848321E-01     1.360544E+00           
        161  traj.desc1.states:distance_6                 c     8.163265E-01     9.872002E-01     1.360544E+00           
        162  traj.desc1.states:distance_7                 c     8.163265E-01     9.902531E-01     1.360544E+00           
        163  traj.desc1.states:distance_8                 c     8.163265E-01     9.911743E-01     1.360544E+00           
        164  traj.desc2.t_duration_0                      c     3.921569E-02     1.691533E-01     1.960784E+00           
        165  traj.desc2.states:altitude_0                 c    -5.555556E-02     9.201169E-01     1.111111E+00           
        166  traj.desc2.states:altitude_1                 c    -5.555556E-02     7.517132E-01     1.111111E+00           
        167  traj.desc2.states:altitude_2                 c    -5.555556E-02     5.349826E-01     1.111111E+00           
        168  traj.desc2.states:altitude_3                 c    -5.555556E-02     3.160756E-01     1.111111E+00           
        169  traj.desc2.states:altitude_4                 c    -5.555556E-02     1.365412E-01     1.111111E+00           
        170  traj.desc2.states:altitude_5                 c    -5.555556E-02     2.674514E-02     1.111111E+00           
        171  traj.desc2.states:altitude_6                 c    -5.555556E-02    -4.720334E-13     1.111111E+00           
        172  traj.desc2.states:mass_0                     c     0.000000E+00     9.114720E-01     6.666667E+15           
        173  traj.desc2.states:mass_1                     c     0.000000E+00     9.114129E-01     6.666667E+15           
        174  traj.desc2.states:mass_2                     c     0.000000E+00     9.112809E-01     6.666667E+15           
        175  traj.desc2.states:mass_3                     c     0.000000E+00     9.110949E-01     6.666667E+15           
        176  traj.desc2.states:mass_4                     c     0.000000E+00     9.108874E-01     6.666667E+15           
        177  traj.desc2.states:mass_5                     c     0.000000E+00     9.107006E-01     6.666667E+15           
        178  traj.desc2.states:mass_6                     c     0.000000E+00     9.105786E-01     6.666667E+15           
        179  traj.desc2.states:mass_7                     c     0.000000E+00     9.105479E-01     6.666667E+15           
        180  traj.desc2.states:distance_0                 c     0.000000E+00     1.041456E+00     1.428571E+00           
        181  traj.desc2.states:distance_1                 c     0.000000E+00     1.042988E+00     1.428571E+00           
        182  traj.desc2.states:distance_2                 c     0.000000E+00     1.044980E+00     1.428571E+00           
        183  traj.desc2.states:distance_3                 c     0.000000E+00     1.047015E+00     1.428571E+00           
        184  traj.desc2.states:distance_4                 c     0.000000E+00     1.048704E+00     1.428571E+00           
        185  traj.desc2.states:distance_5                 c     0.000000E+00     1.049745E+00     1.428571E+00           
        186  traj.desc2.states:distance_6                 c     0.000000E+00     1.050000E+00     1.428571E+00           
        187  traj.groundroll.t_duration_0                 c     1.980198E-02     7.179106E-01     1.980198E+00           
        188  traj.groundroll.states:velocity_0            c     0.000000E+00     3.911838E-01     6.666667E+00           
        189  traj.groundroll.states:velocity_1            c     0.000000E+00     8.495796E-01     6.666667E+00           
        190  traj.groundroll.states:velocity_2            c     0.000000E+00     9.747307E-01     6.666667E+00           
        191  traj.groundroll.states:mass_0                c     0.000000E+00     1.159373E+00     6.666667E+15           
        192  traj.groundroll.states:mass_1                c     0.000000E+00     1.159065E+00     6.666667E+15           
        193  traj.groundroll.states:mass_2                c     0.000000E+00     1.158634E+00     6.666667E+15           
        194  traj.groundroll.states:mass_3                c     0.000000E+00     1.158497E+00     6.666667E+15           
        195  traj.groundroll.states:distance_0            c     0.000000E+00     2.205490E-01     3.333333E+00           
        196  traj.groundroll.states:distance_1            c     0.000000E+00     1.170721E+00     3.333333E+00           
        197  traj.groundroll.states:distance_2            c     0.000000E+00     1.605524E+00     3.333333E+00           
        198  traj.rotation.t_duration_0                   c     1.980198E-02     6.009910E-02     1.980198E+00           
        199  traj.rotation.states:alpha_0                 c     0.000000E+00     1.252553E-02     1.000000E+00           
        200  traj.rotation.states:alpha_1                 c     0.000000E+00     2.980812E-02     1.000000E+00           
        201  traj.rotation.states:alpha_2                 c     0.000000E+00     3.527804E-02     1.000000E+00           
        202  traj.rotation.states:velocity_0              c     0.000000E+00     1.496460E+00     1.000000E+01           
        203  traj.rotation.states:velocity_1              c     0.000000E+00     1.542756E+00     1.000000E+01           
        204  traj.rotation.states:velocity_2              c     0.000000E+00     1.557049E+00     1.000000E+01           
        205  traj.rotation.states:mass_0                  c     0.000000E+00     1.158497E+00     6.666667E+15           
        206  traj.rotation.states:mass_1                  c     0.000000E+00     1.158470E+00     6.666667E+15           
        207  traj.rotation.states:mass_2                  c     0.000000E+00     1.158434E+00     6.666667E+15           
        208  traj.rotation.states:mass_3                  c     0.000000E+00     1.158422E+00     6.666667E+15           
        209  traj.rotation.states:distance_0              c     0.000000E+00     1.017985E+00     2.000000E+00           
        210  traj.rotation.states:distance_1              c     0.000000E+00     1.095814E+00     2.000000E+00           
        211  traj.rotation.states:distance_2              c     0.000000E+00     1.121003E+00     2.000000E+00           

   Constraints (i - inequality, e - equality)
      Index  Name                                                          Type          Lower           Value           Upper    Status  Lagrange Multiplier (N/A)
          0  mission:constraints:range_residual                               e   0.000000E+00    1.334320E-09    0.000000E+00              9.00000E+100
          1  h_fit.h_init_gear                                                e   1.000000E+00   -3.116672E+02    1.000000E+00         E    9.00000E+100
          2  h_fit.h_init_flaps                                               e   1.000000E+00   -2.005560E+01    1.000000E+00         E    9.00000E+100
          3  groundroll_boundary.velocity                                     e   0.000000E+00    3.954881E-06    0.000000E+00         E    9.00000E+100
          4  gtow_constraint.GTOW                                             e   0.000000E+00   -4.358468E-08    0.000000E+00              9.00000E+100
          5  link_taxi_groundroll.mass                                        e   0.000000E+00   -5.273439E-10    0.000000E+00              9.00000E+100
          6  mission:constraints:mass_residual                                e   0.000000E+00    7.812694E-07    0.000000E+00              9.00000E+100
          7  traj.linkages.groundroll:mass_final|rotation:mass_initial        e   0.000000E+00   -7.421477E-09    0.000000E+00              9.00000E+100
          8  traj.linkages.rotation:mass_final|ascent:mass_initial            e   0.000000E+00   -1.202192E-06    0.000000E+00         E    9.00000E+100
          9  traj.linkages.rotation:alpha_final|ascent:alpha_initial          e   0.000000E+00    3.167676E-07    0.000000E+00              9.00000E+100
         10  traj.linkages.ascent:mass_final|accel:mass_initial               e   0.000000E+00   -1.919543E-06    0.000000E+00         E    9.00000E+100
         11  traj.linkages.accel:mass_final|climb1:mass_initial               e   0.000000E+00   -1.921726E-06    0.000000E+00         E    9.00000E+100
         12  traj.linkages.climb1:mass_final|climb2:mass_initial              e   0.000000E+00   -1.937471E-06    0.000000E+00         E    9.00000E+100
         13  traj.linkages.climb2:mass_final|cruise:mass_initial              e   0.000000E+00   -9.238050E-08    0.000000E+00              9.00000E+100
         14  traj.linkages.cruise:mass_final|desc1:mass_initial               e   0.000000E+00   -1.148846E-07    0.000000E+00              9.00000E+100
         15  traj.linkages.desc1:mass_final|desc2:mass_initial                e   0.000000E+00   -2.583256E-06    0.000000E+00         E    9.00000E+100
         16  traj.phases.accel->final_boundary_constraint->EAS                e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
         17  traj.accel.collocation_constraint.defects:velocity               e   0.000000E+00    1.554502E-03    0.000000E+00         E    9.00000E+100
         18  traj.accel.collocation_constraint.defects:velocity               e   0.000000E+00   -6.763218E-05    0.000000E+00         E    9.00000E+100
         19  traj.accel.collocation_constraint.defects:velocity               e   0.000000E+00    8.144836E-05    0.000000E+00         E    9.00000E+100
         20  traj.accel.collocation_constraint.defects:mass                   e   0.000000E+00   -8.190620E-07    0.000000E+00              9.00000E+100
         21  traj.accel.collocation_constraint.defects:mass                   e   0.000000E+00   -3.797246E-07    0.000000E+00              9.00000E+100
         22  traj.accel.collocation_constraint.defects:mass                   e   0.000000E+00    9.523824E-08    0.000000E+00              9.00000E+100
         23  traj.accel.collocation_constraint.defects:distance               e   0.000000E+00    5.948000E-03    0.000000E+00         E    9.00000E+100
         24  traj.accel.collocation_constraint.defects:distance               e   0.000000E+00    3.303801E-03    0.000000E+00         E    9.00000E+100
         25  traj.accel.collocation_constraint.defects:distance               e   0.000000E+00    7.851560E-06    0.000000E+00         E    9.00000E+100
         26  traj.phases.ascent->final_boundary_constraint->altitude          e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
         27  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    1.373136E-02    0.000000E+00         E    9.00000E+100
         28  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    4.434079E-02    0.000000E+00         E    9.00000E+100
         29  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    3.844655E-02    0.000000E+00         E    9.00000E+100
         30  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    4.917828E-02    0.000000E+00         E    9.00000E+100
         31  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    7.504415E-02    0.000000E+00         E    9.00000E+100
         32  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    7.824418E-02    0.000000E+00         E    9.00000E+100
         33  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    7.088477E-02    0.000000E+00         E    9.00000E+100
         34  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    5.660376E-02    0.000000E+00         E    9.00000E+100
         35  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    6.082583E-02    0.000000E+00         E    9.00000E+100
         36  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    6.840207E-02    0.000000E+00         E    9.00000E+100
         37  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    7.407468E-02    0.000000E+00         E    9.00000E+100
         38  traj.ascent.collocation_constraint.defects:flight_path_angle     e   0.000000E+00    3.124058E-02    0.000000E+00         E    9.00000E+100
         39  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00    7.947641E-09    0.000000E+00              9.00000E+100
         40  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.069323E-02    0.000000E+00         E    9.00000E+100
         41  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -2.625899E-02    0.000000E+00         E    9.00000E+100
         42  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -3.395270E-02    0.000000E+00         E    9.00000E+100
         43  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -3.412457E-02    0.000000E+00         E    9.00000E+100
         44  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -2.002923E-02    0.000000E+00         E    9.00000E+100
         45  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.658837E-02    0.000000E+00         E    9.00000E+100
         46  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.622540E-02    0.000000E+00         E    9.00000E+100
         47  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -2.062122E-02    0.000000E+00         E    9.00000E+100
         48  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.969297E-02    0.000000E+00         E    9.00000E+100
         49  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.119860E-02    0.000000E+00         E    9.00000E+100
         50  traj.ascent.collocation_constraint.defects:altitude              e   0.000000E+00   -1.420158E-02    0.000000E+00         E    9.00000E+100
         51  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00   -3.536850E-02    0.000000E+00         E    9.00000E+100
         52  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00   -3.546723E-03    0.000000E+00         E    9.00000E+100
         53  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    7.047669E-03    0.000000E+00         E    9.00000E+100
         54  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    9.635225E-03    0.000000E+00         E    9.00000E+100
         55  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    8.880923E-03    0.000000E+00         E    9.00000E+100
         56  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    3.740570E-03    0.000000E+00         E    9.00000E+100
         57  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    2.743814E-03    0.000000E+00         E    9.00000E+100
         58  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    2.912478E-03    0.000000E+00         E    9.00000E+100
         59  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    3.851137E-03    0.000000E+00         E    9.00000E+100
         60  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    3.176412E-03    0.000000E+00         E    9.00000E+100
         61  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00   -9.437950E-06    0.000000E+00         E    9.00000E+100
         62  traj.ascent.collocation_constraint.defects:velocity              e   0.000000E+00    1.851614E-03    0.000000E+00         E    9.00000E+100
         63  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    5.626267E-07    0.000000E+00              9.00000E+100
         64  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    6.975891E-07    0.000000E+00              9.00000E+100
         65  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    6.361164E-07    0.000000E+00              9.00000E+100
         66  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    5.653778E-07    0.000000E+00              9.00000E+100
         67  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    5.766678E-07    0.000000E+00              9.00000E+100
         68  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    4.706237E-07    0.000000E+00              9.00000E+100
         69  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    3.964507E-07    0.000000E+00              9.00000E+100
         70  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    4.539882E-07    0.000000E+00              9.00000E+100
         71  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    3.788098E-07    0.000000E+00              9.00000E+100
         72  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    2.983744E-07    0.000000E+00              9.00000E+100
         73  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    3.856000E-07    0.000000E+00              9.00000E+100
         74  traj.ascent.collocation_constraint.defects:mass                  e   0.000000E+00    3.527384E-07    0.000000E+00              9.00000E+100
         75  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    2.361241E-03    0.000000E+00         E    9.00000E+100
         76  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    6.814758E-04    0.000000E+00         E    9.00000E+100
         77  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    3.727695E-04    0.000000E+00         E    9.00000E+100
         78  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    3.048263E-04    0.000000E+00         E    9.00000E+100
         79  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00    3.179452E-04    0.000000E+00         E    9.00000E+100
         80  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -1.565345E-04    0.000000E+00         E    9.00000E+100
         81  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -4.665165E-04    0.000000E+00         E    9.00000E+100
         82  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -1.132346E-03    0.000000E+00         E    9.00000E+100
         83  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -2.032493E-03    0.000000E+00         E    9.00000E+100
         84  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -2.337967E-03    0.000000E+00         E    9.00000E+100
         85  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -3.373578E-03    0.000000E+00         E    9.00000E+100
         86  traj.ascent.collocation_constraint.defects:distance              e   0.000000E+00   -4.816410E-03    0.000000E+00         E    9.00000E+100
         87  traj.ascent.continuity_comp.defect_control_rates:alpha_rate      e   0.000000E+00   -3.835899E-09    0.000000E+00              9.00000E+100
         88  traj.ascent.continuity_comp.defect_control_rates:alpha_rate      e   0.000000E+00    3.558227E-09    0.000000E+00              9.00000E+100
         89  traj.ascent.continuity_comp.defect_control_rates:alpha_rate      e   0.000000E+00    2.610834E-09    0.000000E+00              9.00000E+100
         90  traj.ascent.continuity_comp.defect_controls:alpha                e   0.000000E+00   -7.039872E-09    0.000000E+00              9.00000E+100
         91  traj.ascent.continuity_comp.defect_controls:alpha                e   0.000000E+00    2.385390E-08    0.000000E+00              9.00000E+100
         92  traj.ascent.continuity_comp.defect_controls:alpha                e   0.000000E+00    6.792303E-09    0.000000E+00              9.00000E+100
         93  traj.phases.climb1->final_boundary_constraint->altitude          e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
         94  traj.climb1.collocation_constraint.defects:altitude              e   0.000000E+00    2.194144E-04    0.000000E+00         E    9.00000E+100
         95  traj.climb1.collocation_constraint.defects:altitude              e   0.000000E+00    4.473604E-04    0.000000E+00         E    9.00000E+100
         96  traj.climb1.collocation_constraint.defects:altitude              e   0.000000E+00   -1.511439E-04    0.000000E+00         E    9.00000E+100
         97  traj.climb1.collocation_constraint.defects:mass                  e   0.000000E+00   -2.270649E-06    0.000000E+00         E    9.00000E+100
         98  traj.climb1.collocation_constraint.defects:mass                  e   0.000000E+00   -2.444430E-06    0.000000E+00         E    9.00000E+100
         99  traj.climb1.collocation_constraint.defects:mass                  e   0.000000E+00   -8.844153E-07    0.000000E+00              9.00000E+100
        100  traj.climb1.collocation_constraint.defects:distance              e   0.000000E+00   -5.560517E-04    0.000000E+00         E    9.00000E+100
        101  traj.climb1.collocation_constraint.defects:distance              e   0.000000E+00   -7.404584E-04    0.000000E+00         E    9.00000E+100
        102  traj.climb1.collocation_constraint.defects:distance              e   0.000000E+00   -3.966608E-04    0.000000E+00         E    9.00000E+100
        103  traj.phases.climb2->final_boundary_constraint->altitude          e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
        104  traj.phases.climb2->final_boundary_constraint->mach              e   8.000000E-01    8.000000E-01    8.000000E-01              9.00000E+100
        105  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -5.241640E-04    0.000000E+00         E    9.00000E+100
        106  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -5.388817E-03    0.000000E+00         E    9.00000E+100
        107  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -6.521290E-03    0.000000E+00         E    9.00000E+100
        108  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00    4.038050E-03    0.000000E+00         E    9.00000E+100
        109  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -1.220602E-02    0.000000E+00         E    9.00000E+100
        110  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -1.289392E-02    0.000000E+00         E    9.00000E+100
        111  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00    4.298661E-03    0.000000E+00         E    9.00000E+100
        112  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00    7.175203E-03    0.000000E+00         E    9.00000E+100
        113  traj.climb2.collocation_constraint.defects:altitude              e   0.000000E+00   -2.617938E-03    0.000000E+00         E    9.00000E+100
        114  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    2.871152E-08    0.000000E+00              9.00000E+100
        115  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    5.192209E-05    0.000000E+00         E    9.00000E+100
        116  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    1.339141E-04    0.000000E+00         E    9.00000E+100
        117  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00   -1.718716E-05    0.000000E+00         E    9.00000E+100
        118  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    8.383117E-05    0.000000E+00         E    9.00000E+100
        119  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    1.045246E-04    0.000000E+00         E    9.00000E+100
        120  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    1.751307E-05    0.000000E+00         E    9.00000E+100
        121  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00   -2.610546E-05    0.000000E+00         E    9.00000E+100
        122  traj.climb2.collocation_constraint.defects:mass                  e   0.000000E+00    2.051800E-05    0.000000E+00         E    9.00000E+100
        123  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    5.338063E-07    0.000000E+00              9.00000E+100
        124  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    2.175787E-04    0.000000E+00         E    9.00000E+100
        125  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.141018E-04    0.000000E+00         E    9.00000E+100
        126  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.166695E-04    0.000000E+00         E    9.00000E+100
        127  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.404218E-04    0.000000E+00         E    9.00000E+100
        128  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.660164E-04    0.000000E+00         E    9.00000E+100
        129  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    1.008542E-03    0.000000E+00         E    9.00000E+100
        130  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00    3.363601E-03    0.000000E+00         E    9.00000E+100
        131  traj.climb2.collocation_constraint.defects:distance              e   0.000000E+00   -2.040858E-04    0.000000E+00         E    9.00000E+100
        132  traj.phases.desc1->final_boundary_constraint->altitude           e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
        133  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00    2.553679E-05    0.000000E+00         E    9.00000E+100
        134  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -7.766183E-05    0.000000E+00         E    9.00000E+100
        135  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -3.280162E-04    0.000000E+00         E    9.00000E+100
        136  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -3.724615E-04    0.000000E+00         E    9.00000E+100
        137  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -5.670105E-04    0.000000E+00         E    9.00000E+100
        138  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -2.548340E-03    0.000000E+00         E    9.00000E+100
        139  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00    9.919773E-05    0.000000E+00         E    9.00000E+100
        140  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -6.540209E-05    0.000000E+00         E    9.00000E+100
        141  traj.desc1.collocation_constraint.defects:altitude               e   0.000000E+00   -1.207352E-04    0.000000E+00         E    9.00000E+100
        142  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -6.518559E-09    0.000000E+00              9.00000E+100
        143  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -1.559379E-07    0.000000E+00              9.00000E+100
        144  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -1.965135E-07    0.000000E+00              9.00000E+100
        145  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -7.725703E-07    0.000000E+00              9.00000E+100
        146  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -7.728719E-07    0.000000E+00              9.00000E+100
        147  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -7.945130E-07    0.000000E+00              9.00000E+100
        148  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00   -2.670656E-07    0.000000E+00              9.00000E+100
        149  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00    7.530399E-08    0.000000E+00              9.00000E+100
        150  traj.desc1.collocation_constraint.defects:mass                   e   0.000000E+00    1.381592E-07    0.000000E+00              9.00000E+100
        151  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00   -1.240703E-04    0.000000E+00         E    9.00000E+100
        152  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    1.852906E-05    0.000000E+00         E    9.00000E+100
        153  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    8.974817E-05    0.000000E+00         E    9.00000E+100
        154  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    9.027408E-05    0.000000E+00         E    9.00000E+100
        155  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    9.363053E-05    0.000000E+00         E    9.00000E+100
        156  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    5.528668E-04    0.000000E+00         E    9.00000E+100
        157  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00   -1.589156E-04    0.000000E+00         E    9.00000E+100
        158  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00   -3.938201E-05    0.000000E+00         E    9.00000E+100
        159  traj.desc1.collocation_constraint.defects:distance               e   0.000000E+00    5.117594E-06    0.000000E+00         E    9.00000E+100
        160  traj.phases.desc2->final_boundary_constraint->altitude           e   1.000000E+00    1.000000E+00    1.000000E+00              9.00000E+100
        161  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    8.204803E-05    0.000000E+00         E    9.00000E+100
        162  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    1.794764E-04    0.000000E+00         E    9.00000E+100
        163  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    3.279867E-04    0.000000E+00         E    9.00000E+100
        164  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    3.512685E-04    0.000000E+00         E    9.00000E+100
        165  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    3.349745E-04    0.000000E+00         E    9.00000E+100
        166  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    1.953251E-04    0.000000E+00         E    9.00000E+100
        167  traj.desc2.collocation_constraint.defects:altitude               e   0.000000E+00    6.894292E-05    0.000000E+00         E    9.00000E+100
        168  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00    7.029474E-09    0.000000E+00              9.00000E+100
        169  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -7.710816E-08    0.000000E+00              9.00000E+100
        170  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -2.656153E-07    0.000000E+00              9.00000E+100
        171  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -1.361401E-07    0.000000E+00              9.00000E+100
        172  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -3.508935E-07    0.000000E+00              9.00000E+100
        173  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -2.023496E-07    0.000000E+00              9.00000E+100
        174  traj.desc2.collocation_constraint.defects:mass                   e   0.000000E+00   -3.133134E-08    0.000000E+00              9.00000E+100
        175  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00    6.498873E-08    0.000000E+00              9.00000E+100
        176  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -2.639346E-05    0.000000E+00         E    9.00000E+100
        177  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -6.606571E-05    0.000000E+00         E    9.00000E+100
        178  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -8.596579E-05    0.000000E+00         E    9.00000E+100
        179  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -7.242195E-05    0.000000E+00         E    9.00000E+100
        180  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -3.826974E-05    0.000000E+00         E    9.00000E+100
        181  traj.desc2.collocation_constraint.defects:distance               e   0.000000E+00   -8.262881E-06    0.000000E+00         E    9.00000E+100
        182  traj.groundroll.collocation_constraint.defects:velocity          e   0.000000E+00   -9.908522E-05    0.000000E+00         E    9.00000E+100
        183  traj.groundroll.collocation_constraint.defects:velocity          e   0.000000E+00   -1.018377E-03    0.000000E+00         E    9.00000E+100
        184  traj.groundroll.collocation_constraint.defects:velocity          e   0.000000E+00   -9.244226E-04    0.000000E+00         E    9.00000E+100
        185  traj.groundroll.collocation_constraint.defects:mass              e   0.000000E+00   -1.827616E-09    0.000000E+00              9.00000E+100
        186  traj.groundroll.collocation_constraint.defects:mass              e   0.000000E+00   -4.350317E-08    0.000000E+00              9.00000E+100
        187  traj.groundroll.collocation_constraint.defects:mass              e   0.000000E+00   -7.758401E-08    0.000000E+00              9.00000E+100
        188  traj.groundroll.collocation_constraint.defects:distance          e   0.000000E+00   -1.323708E-09    0.000000E+00              9.00000E+100
        189  traj.groundroll.collocation_constraint.defects:distance          e   0.000000E+00    8.246889E-03    0.000000E+00         E    9.00000E+100
        190  traj.groundroll.collocation_constraint.defects:distance          e   0.000000E+00    6.863814E-03    0.000000E+00         E    9.00000E+100
        191  traj.phases.rotation->final_boundary_constraint->normal_force    e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
        192  traj.rotation.collocation_constraint.defects:alpha               e   0.000000E+00   -7.145529E-08    0.000000E+00              9.00000E+100
        193  traj.rotation.collocation_constraint.defects:alpha               e   0.000000E+00   -3.274510E-07    0.000000E+00              9.00000E+100
        194  traj.rotation.collocation_constraint.defects:alpha               e   0.000000E+00   -2.373103E-07    0.000000E+00              9.00000E+100
        195  traj.rotation.collocation_constraint.defects:velocity            e   0.000000E+00   -3.978923E-04    0.000000E+00         E    9.00000E+100
        196  traj.rotation.collocation_constraint.defects:velocity            e   0.000000E+00   -5.353152E-04    0.000000E+00         E    9.00000E+100
        197  traj.rotation.collocation_constraint.defects:velocity            e   0.000000E+00    2.217161E-04    0.000000E+00         E    9.00000E+100
        198  traj.rotation.collocation_constraint.defects:mass                e   0.000000E+00   -2.240797E-08    0.000000E+00              9.00000E+100
        199  traj.rotation.collocation_constraint.defects:mass                e   0.000000E+00   -2.319707E-08    0.000000E+00              9.00000E+100
        200  traj.rotation.collocation_constraint.defects:mass                e   0.000000E+00   -2.710306E-08    0.000000E+00              9.00000E+100
        201  traj.rotation.collocation_constraint.defects:distance            e   0.000000E+00    1.031313E-03    0.000000E+00         E    9.00000E+100
        202  traj.rotation.collocation_constraint.defects:distance            e   0.000000E+00    1.379899E-03    0.000000E+00         E    9.00000E+100
        203  traj.rotation.collocation_constraint.defects:distance            e   0.000000E+00    1.777978E-03    0.000000E+00         E    9.00000E+100
        204  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    6.818972E-01    1.100000E+00              9.00000E+100
        205  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.279409E-01    1.100000E+00              9.00000E+100
        206  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    3.471684E-01    1.100000E+00              9.00000E+100
        207  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    3.822880E-01    1.100000E+00              9.00000E+100
        208  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    3.822880E-01    1.100000E+00              9.00000E+100
        209  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.730465E-01    1.100000E+00              9.00000E+100
        210  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.938538E-01    1.100000E+00              9.00000E+100
        211  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.720760E-01    1.100000E+00              9.00000E+100
        212  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.720761E-01    1.100000E+00              9.00000E+100
        213  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.309768E-01    1.100000E+00              9.00000E+100
        214  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.558806E-01    1.100000E+00              9.00000E+100
        215  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.847540E-01    1.100000E+00              9.00000E+100
        216  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    4.847541E-01    1.100000E+00              9.00000E+100
        217  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    5.092799E-01    1.100000E+00              9.00000E+100
        218  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    3.703515E-01    1.100000E+00              9.00000E+100
        219  traj.phases.ascent->path_constraint->load_factor                 i   0.000000E+00    2.846586E-01    1.100000E+00              9.00000E+100
        220  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    8.606396E+00    1.500000E+01              9.00000E+100
        221  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    4.274754E+00    1.500000E+01              9.00000E+100
        222  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    2.334923E+00    1.500000E+01              9.00000E+100
        223  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    2.471275E+00    1.500000E+01              9.00000E+100
        224  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    2.471275E+00    1.500000E+01              9.00000E+100
        225  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    4.369808E+00    1.500000E+01              9.00000E+100
        226  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    6.643059E+00    1.500000E+01              9.00000E+100
        227  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    6.898528E+00    1.500000E+01              9.00000E+100
        228  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    6.898530E+00    1.500000E+01              9.00000E+100
        229  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    7.012091E+00    1.500000E+01              9.00000E+100
        230  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    7.970049E+00    1.500000E+01              9.00000E+100
        231  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    8.745015E+00    1.500000E+01              9.00000E+100
        232  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    8.745015E+00    1.500000E+01              9.00000E+100
        233  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    1.049509E+01    1.500000E+01              9.00000E+100
        234  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    9.525834E+00    1.500000E+01              9.00000E+100
        235  traj.phases.ascent->path_constraint->theta                       i   0.000000E+00    7.814106E+00    1.500000E+01              9.00000E+100
        236  traj.phases.climb2->final_boundary_constraint->altitude_rate     i   1.000000E-01    3.471431E+02    1.000000E+30              9.00000E+100

--------------------------------------------------------------------------------
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/core/driver.py:143: OMDeprecationWarning:boolean evaluation of DriverResult is temporarily implemented to mimick the previous `failed` return behavior of run_driver.
Use the `success` attribute of the returned DriverResult object to test for successful driver completion.

For FLOPS-derived models, let us run:

!aviary run_mission models/test_aircraft/aircraft_for_bench_FwFm.csv --max_iter 1 --optimizer IPOPT
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/pyoptsparse/pyOpt_MPI.py:68: UserWarning: mpi4py could not be imported. mpi4py is required to use the parallel gradient analysis and parallel objective analysis for non-gradient based optimizers. Continuing using a dummy MPI module from pyOptSparse.
  warnings.warn(warn)
Loaded default phase_info for height_energy equations of motion
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/dymos/phase/phase.py:902: OMDeprecationWarning:None: The method `add_polynomial_control` is deprecated and will be removed in Dymos 2.1. Please use `add_control` with the appropriate options to define a polynomial control.
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/dymos/phase/phase.py:2328: RuntimeWarning: Invalid options for non-optimal control 'mach' in phase 'climb': lower, upper, ref
  warnings.warn(f"Invalid options for non-optimal control '{name}' in phase "
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/dymos/phase/phase.py:2328: RuntimeWarning: Invalid options for non-optimal control 'altitude' in phase 'climb': lower, upper, ref
  warnings.warn(f"Invalid options for non-optimal control '{name}' in phase "
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/dymos/phase/phase.py:2328: RuntimeWarning: Invalid options for non-optimal control 'mach' in phase 'cruise': lower, upper, ref
  warnings.warn(f"Invalid options for non-optimal control '{name}' in phase "
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/dymos/phase/phase.py:2328: RuntimeWarning: Invalid options for non-optimal control 'altitude' in phase 'cruise': lower, upper, ref
  warnings.warn(f"Invalid options for non-optimal control '{name}' in phase "
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/dymos/phase/phase.py:2328: RuntimeWarning: Invalid options for non-optimal control 'mach' in phase 'descent': lower, upper, ref
  warnings.warn(f"Invalid options for non-optimal control '{name}' in phase "
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/dymos/phase/phase.py:2328: RuntimeWarning: Invalid options for non-optimal control 'altitude' in phase 'descent': lower, upper, ref
  warnings.warn(f"Invalid options for non-optimal control '{name}' in phase "

The following variables have been overridden:
  'aircraft:design:touchdown_mass
  'aircraft:engine:mass
  'aircraft:fins:mass
  'aircraft:fuel:auxiliary_fuel_capacity
  'aircraft:fuel:fuselage_fuel_capacity
  'aircraft:fuel:total_capacity
  'aircraft:fuselage:planform_area
  'aircraft:fuselage:wetted_area
  'aircraft:horizontal_tail:wetted_area
  'aircraft:landing_gear:main_gear_oleo_length
  'aircraft:landing_gear:nose_gear_oleo_length
  'aircraft:vertical_tail:wetted_area
  'aircraft:wing:aspect_ratio
  'aircraft:wing:control_surface_area
  'aircraft:wing:wetted_area
--- Constraint Report [traj] ---
    --- climb ---
        [path]    0.0000e+00 <= throttle <= 1.0000e+00  [unitless]
    --- cruise ---
        [initial] 0.0000e+00 <= throttle <= 1.0000e+00  [unitless]
        [final]   0.0000e+00 <= throttle <= 1.0000e+00  [unitless]
    --- descent ---
        [path]    0.0000e+00 <= throttle <= 1.0000e+00  [unitless]
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/solvers/linear/linear_rhs_checker.py:178: SolverWarning:DirectSolver in 'traj.phases.cruise.indep_states' <class StateIndependentsComp>: 'rhs_checking' is active but no redundant adjoint dependencies were found, so caching has been disabled.
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/solvers/linear/linear_rhs_checker.py:178: SolverWarning:DirectSolver in 'traj.phases.descent.indep_states' <class StateIndependentsComp>: 'rhs_checking' is active but no redundant adjoint dependencies were found, so caching has been disabled.
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/recorders/sqlite_recorder.py:226: UserWarning:The existing case recorder file, problem_history.db, is being overwritten.
Model viewer data has already been recorded for Driver.
Model viewer data has already been recorded for Driver.
Full total jacobian for problem 'aircraft_for_bench_FwFm' was computed 3 times, taking 0.6518675249999433 seconds.
Total jacobian shape: (136, 95) 
Jacobian shape: (136, 95)  (8.37% nonzero)
FWD solves: 13   REV solves: 0
Total colors vs. total size: 13 vs 95  (86.32% improvement)

Sparsity computed using tolerance: 1e-25
Time to compute sparsity:   0.6519 sec
Time to compute coloring:   0.0529 sec
Memory to compute coloring:   0.1250 MB
Coloring created on: 2024-09-16 15:54:33
This is Ipopt version 3.14.16, running with linear solver MUMPS 5.7.3.

Number of nonzeros in equality constraint Jacobian...:      704
Number of nonzeros in inequality constraint Jacobian.:      376
Number of nonzeros in Lagrangian Hessian.............:        0
Total number of variables............................:       95
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       95
                     variables with only upper bounds:        0
Total number of equality constraints.................:       93
Total number of inequality constraints...............:       42
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:       42
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  3.0000000e-01 1.90e+02 1.79e-02  -5.0 0.00e+00    -  0.00e+00 0.00e+00   0
Number of Iterations....: 1

                                   (scaled)                 (unscaled)
Objective...............:   3.3500307974402677e-01    3.3500307974402677e-01
Dual infeasibility......:   1.0071386876135429e+00    1.0071386876135429e+00
Constraint violation....:   1.8728571587084400e+02    1.8728571587084400e+02
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000827403710e+05    1.0000000827403710e+05
Overall NLP error.......:   1.0000000827403710e+05    1.0000000827403710e+05


Number of objective function evaluations             = 2
Number of objective gradient evaluations             = 2
Number of equality constraint evaluations            = 2
Number of inequality constraint evaluations          = 2
Number of equality constraint Jacobian evaluations   = 2
Number of inequality constraint Jacobian evaluations = 2
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 1.133

EXIT: Maximum Number of Iterations Exceeded.
minimal_print is not available for this solution


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

    Solution: 
--------------------------------------------------------------------------------
    Total Time:                    1.1341
       User Objective Time :       0.7590
       User Sensitivity Time :     0.3609
       Interface Time :            0.0075
       Opt Solver Time:            0.0067
    Calls to Objective Function :       3
    Calls to Sens Function :            3


   Objectives
      Index  Name                               Value
          0  mission:objectives:fuel     3.350031E-01

   Variables (c - continuous, i - integer, d - discrete)
      Index  Name                              Type      Lower Bound            Value      Upper Bound     Status
          0  mission:design:gross_mass_0          c     5.714286E-05     1.001072E+00     2.285714E+00           
          1  mission:summary:gross_mass_0         c     5.714286E-05     1.001072E+00     2.285714E+00           
          2  traj.climb.t_duration_0              c     5.000000E-01     5.000001E-01     1.500000E+00          l
          3  traj.climb.states:mass_0             c     0.000000E+00     7.956010E+00     1.000000E+17           
          4  traj.climb.states:mass_1             c     0.000000E+00     7.956005E+00     1.000000E+17           
          5  traj.climb.states:mass_2             c     0.000000E+00     7.956003E+00     1.000000E+17           
          6  traj.climb.states:mass_3             c     0.000000E+00     7.955992E+00     1.000000E+17           
          7  traj.climb.states:mass_4             c     0.000000E+00     7.955977E+00     1.000000E+17           
          8  traj.climb.states:mass_5             c     0.000000E+00     7.955973E+00     1.000000E+17           
          9  traj.climb.states:mass_6             c     0.000000E+00     7.955965E+00     1.000000E+17           
         10  traj.climb.states:mass_7             c     0.000000E+00     7.955963E+00     1.000000E+17           
         11  traj.climb.states:mass_8             c     0.000000E+00     7.955966E+00     1.000000E+17           
         12  traj.climb.states:mass_9             c     0.000000E+00     7.955973E+00     1.000000E+17           
         13  traj.climb.states:mass_10            c     0.000000E+00     7.955989E+00     1.000000E+17           
         14  traj.climb.states:mass_11            c     0.000000E+00     7.955994E+00     1.000000E+17           
         15  traj.climb.states:mass_12            c     0.000000E+00     7.956000E+00     1.000000E+17           
         16  traj.climb.states:mass_13            c     0.000000E+00     7.956006E+00     1.000000E+17           
         17  traj.climb.states:mass_14            c     0.000000E+00     7.956010E+00     1.000000E+17           
         18  traj.climb.states:distance_0         c     0.000000E+00     9.795200E-03     1.000000E+15           
         19  traj.climb.states:distance_1         c     0.000000E+00     9.704663E-03     1.000000E+15           
         20  traj.climb.states:distance_2         c     0.000000E+00     9.673767E-03     1.000000E+15           
         21  traj.climb.states:distance_3         c     0.000000E+00     9.515156E-03     1.000000E+15           
         22  traj.climb.states:distance_4         c     0.000000E+00     9.258787E-03     1.000000E+15           
         23  traj.climb.states:distance_5         c     0.000000E+00     9.168765E-03     1.000000E+15           
         24  traj.climb.states:distance_6         c     0.000000E+00     8.902535E-03     1.000000E+15           
         25  traj.climb.states:distance_7         c     0.000000E+00     8.485709E-03     1.000000E+15           
         26  traj.climb.states:distance_8         c     0.000000E+00     8.342156E-03     1.000000E+15           
         27  traj.climb.states:distance_9         c     0.000000E+00     8.050345E-03     1.000000E+15           
         28  traj.climb.states:distance_10        c     0.000000E+00     7.615456E-03     1.000000E+15           
         29  traj.climb.states:distance_11        c     0.000000E+00     7.470230E-03     1.000000E+15           
         30  traj.climb.states:distance_12        c     0.000000E+00     7.303159E-03     1.000000E+15           
         31  traj.climb.states:distance_13        c     0.000000E+00     7.065401E-03     1.000000E+15           
         32  traj.climb.states:distance_14        c     0.000000E+00     6.988429E-03     1.000000E+15           
         33  traj.cruise.t_duration_0             c     5.000000E-01     5.202811E-01     1.500000E+00           
         34  traj.cruise.states:mass_0            c     0.000000E+00     7.955694E+00     1.000000E+17           
         35  traj.cruise.states:mass_1            c     0.000000E+00     7.955260E+00     1.000000E+17           
         36  traj.cruise.states:mass_2            c     0.000000E+00     7.955123E+00     1.000000E+17           
         37  traj.cruise.states:mass_3            c     0.000000E+00     7.954483E+00     1.000000E+17           
         38  traj.cruise.states:mass_4            c     0.000000E+00     7.953604E+00     1.000000E+17           
         39  traj.cruise.states:mass_5            c     0.000000E+00     7.953327E+00     1.000000E+17           
         40  traj.cruise.states:mass_6            c     0.000000E+00     7.952574E+00     1.000000E+17           
         41  traj.cruise.states:mass_7            c     0.000000E+00     7.951541E+00     1.000000E+17           
         42  traj.cruise.states:mass_8            c     0.000000E+00     7.951215E+00     1.000000E+17           
         43  traj.cruise.states:mass_9            c     0.000000E+00     7.950589E+00     1.000000E+17           
         44  traj.cruise.states:mass_10           c     0.000000E+00     7.949730E+00     1.000000E+17           
         45  traj.cruise.states:mass_11           c     0.000000E+00     7.949459E+00     1.000000E+17           
         46  traj.cruise.states:mass_12           c     0.000000E+00     7.949155E+00     1.000000E+17           
         47  traj.cruise.states:mass_13           c     0.000000E+00     7.948737E+00     1.000000E+17           
         48  traj.cruise.states:mass_14           c     0.000000E+00     7.948605E+00     1.000000E+17           
         49  traj.cruise.states:distance_0        c     0.000000E+00     8.072853E-03     1.000000E+15           
         50  traj.cruise.states:distance_1        c     0.000000E+00     9.568481E-03     1.000000E+15           
         51  traj.cruise.states:distance_2        c     0.000000E+00     1.004168E-02     1.000000E+15           
         52  traj.cruise.states:distance_3        c     0.000000E+00     1.225367E-02     1.000000E+15           
         53  traj.cruise.states:distance_4        c     0.000000E+00     1.530301E-02     1.000000E+15           
         54  traj.cruise.states:distance_5        c     0.000000E+00     1.626746E-02     1.000000E+15           
         55  traj.cruise.states:distance_6        c     0.000000E+00     1.889152E-02     1.000000E+15           
         56  traj.cruise.states:distance_7        c     0.000000E+00     2.250830E-02     1.000000E+15           
         57  traj.cruise.states:distance_8        c     0.000000E+00     2.365206E-02     1.000000E+15           
         58  traj.cruise.states:distance_9        c     0.000000E+00     2.585375E-02     1.000000E+15           
         59  traj.cruise.states:distance_10       c     0.000000E+00     2.888889E-02     1.000000E+15           
         60  traj.cruise.states:distance_11       c     0.000000E+00     2.984883E-02     1.000000E+15           
         61  traj.cruise.states:distance_12       c     0.000000E+00     3.092478E-02     1.000000E+15           
         62  traj.cruise.states:distance_13       c     0.000000E+00     3.240872E-02     1.000000E+15           
         63  traj.cruise.states:distance_14       c     0.000000E+00     3.287822E-02     1.000000E+15           
         64  traj.descent.t_duration_0            c     5.000000E-01     5.503946E-01     1.500000E+00           
         65  traj.descent.states:mass_0           c     0.000000E+00     7.948232E+00     1.000000E+17           
         66  traj.descent.states:mass_1           c     0.000000E+00     7.947716E+00     1.000000E+17           
         67  traj.descent.states:mass_2           c     0.000000E+00     7.947552E+00     1.000000E+17           
         68  traj.descent.states:mass_3           c     0.000000E+00     7.946795E+00     1.000000E+17           
         69  traj.descent.states:mass_4           c     0.000000E+00     7.945761E+00     1.000000E+17           
         70  traj.descent.states:mass_5           c     0.000000E+00     7.945432E+00     1.000000E+17           
         71  traj.descent.states:mass_6           c     0.000000E+00     7.944541E+00     1.000000E+17           
         72  traj.descent.states:mass_7           c     0.000000E+00     7.943285E+00     1.000000E+17           
         73  traj.descent.states:mass_8           c     0.000000E+00     7.942870E+00     1.000000E+17           
         74  traj.descent.states:mass_9           c     0.000000E+00     7.942132E+00     1.000000E+17           
         75  traj.descent.states:mass_10          c     0.000000E+00     7.941211E+00     1.000000E+17           
         76  traj.descent.states:mass_11          c     0.000000E+00     7.940940E+00     1.000000E+17           
         77  traj.descent.states:mass_12          c     0.000000E+00     7.940647E+00     1.000000E+17           
         78  traj.descent.states:mass_13          c     0.000000E+00     7.940255E+00     1.000000E+17           
         79  traj.descent.states:mass_14          c     0.000000E+00     7.940133E+00     1.000000E+17           
         80  traj.descent.states:distance_0       c     0.000000E+00     3.435683E-02     1.000000E+15           
         81  traj.descent.states:distance_1       c     0.000000E+00     3.636054E-02     1.000000E+15           
         82  traj.descent.states:distance_2       c     0.000000E+00     3.698574E-02     1.000000E+15           
         83  traj.descent.states:distance_3       c     0.000000E+00     3.985082E-02     1.000000E+15           
         84  traj.descent.states:distance_4       c     0.000000E+00     4.364011E-02     1.000000E+15           
         85  traj.descent.states:distance_5       c     0.000000E+00     4.479845E-02     1.000000E+15           
         86  traj.descent.states:distance_6       c     0.000000E+00     4.784884E-02     1.000000E+15           
         87  traj.descent.states:distance_7       c     0.000000E+00     5.180132E-02     1.000000E+15           
         88  traj.descent.states:distance_8       c     0.000000E+00     5.298819E-02     1.000000E+15           
         89  traj.descent.states:distance_9       c     0.000000E+00     5.518473E-02     1.000000E+15           
         90  traj.descent.states:distance_10      c     0.000000E+00     5.801701E-02     1.000000E+15           
         91  traj.descent.states:distance_11      c     0.000000E+00     5.886426E-02     1.000000E+15           
         92  traj.descent.states:distance_12      c     0.000000E+00     5.978559E-02     1.000000E+15           
         93  traj.descent.states:distance_13      c     0.000000E+00     6.100645E-02     1.000000E+15           
         94  traj.descent.states:distance_14      c     0.000000E+00     6.138054E-02     1.000000E+15           

   Constraints (i - inequality, e - equality)
      Index  Name                                                      Type          Lower           Value           Upper    Status  Lagrange Multiplier (N/A)
          0  mission:constraints:range_residual                           e   0.000000E+00    1.872857E+02    0.000000E+00         E    9.00000E+100
          1  gtow_constraint.GTOW                                         e   0.000000E+00    0.000000E+00    0.000000E+00              9.00000E+100
          2  mission:constraints:mass_residual                            e   0.000000E+00   -3.674761E-01    0.000000E+00         E    9.00000E+100
          3  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    2.982155E-04    0.000000E+00         E    9.00000E+100
          4  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    2.624098E-04    0.000000E+00         E    9.00000E+100
          5  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    2.297022E-04    0.000000E+00         E    9.00000E+100
          6  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    4.535066E-04    0.000000E+00         E    9.00000E+100
          7  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    4.024579E-04    0.000000E+00         E    9.00000E+100
          8  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    3.661316E-04    0.000000E+00         E    9.00000E+100
          9  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    4.282021E-04    0.000000E+00         E    9.00000E+100
         10  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    4.175078E-04    0.000000E+00         E    9.00000E+100
         11  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    4.169220E-04    0.000000E+00         E    9.00000E+100
         12  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    3.515304E-04    0.000000E+00         E    9.00000E+100
         13  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    3.547548E-04    0.000000E+00         E    9.00000E+100
         14  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    3.609817E-04    0.000000E+00         E    9.00000E+100
         15  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    1.777801E-04    0.000000E+00         E    9.00000E+100
         16  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    1.788642E-04    0.000000E+00         E    9.00000E+100
         17  traj.climb.collocation_constraint.defects:mass               e   0.000000E+00    1.811209E-04    0.000000E+00         E    9.00000E+100
         18  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00    9.214337E-05    0.000000E+00         E    9.00000E+100
         19  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -1.182509E-04    0.000000E+00         E    9.00000E+100
         20  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -2.043622E-04    0.000000E+00         E    9.00000E+100
         21  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -4.058201E-04    0.000000E+00         E    9.00000E+100
         22  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -4.701292E-04    0.000000E+00         E    9.00000E+100
         23  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -5.565778E-04    0.000000E+00         E    9.00000E+100
         24  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -6.935804E-04    0.000000E+00         E    9.00000E+100
         25  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -7.786860E-04    0.000000E+00         E    9.00000E+100
         26  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -8.920962E-04    0.000000E+00         E    9.00000E+100
         27  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -7.797134E-04    0.000000E+00         E    9.00000E+100
         28  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -8.351145E-04    0.000000E+00         E    9.00000E+100
         29  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -9.090371E-04    0.000000E+00         E    9.00000E+100
         30  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -4.562606E-04    0.000000E+00         E    9.00000E+100
         31  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -4.685890E-04    0.000000E+00         E    9.00000E+100
         32  traj.climb.collocation_constraint.defects:distance           e   0.000000E+00   -4.852920E-04    0.000000E+00         E    9.00000E+100
         33  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    1.270096E-04    0.000000E+00         E    9.00000E+100
         34  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    1.269129E-04    0.000000E+00         E    9.00000E+100
         35  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    1.267558E-04    0.000000E+00         E    9.00000E+100
         36  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    2.587714E-04    0.000000E+00         E    9.00000E+100
         37  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    2.583138E-04    0.000000E+00         E    9.00000E+100
         38  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    2.577097E-04    0.000000E+00         E    9.00000E+100
         39  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    3.061718E-04    0.000000E+00         E    9.00000E+100
         40  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    3.055931E-04    0.000000E+00         E    9.00000E+100
         41  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    3.048399E-04    0.000000E+00         E    9.00000E+100
         42  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    2.562134E-04    0.000000E+00         E    9.00000E+100
         43  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    2.558573E-04    0.000000E+00         E    9.00000E+100
         44  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    2.553925E-04    0.000000E+00         E    9.00000E+100
         45  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    1.249803E-04    0.000000E+00         E    9.00000E+100
         46  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    1.248961E-04    0.000000E+00         E    9.00000E+100
         47  traj.cruise.collocation_constraint.defects:mass              e   0.000000E+00    1.247838E-04    0.000000E+00         E    9.00000E+100
         48  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -4.330509E-04    0.000000E+00         E    9.00000E+100
         49  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -4.328917E-04    0.000000E+00         E    9.00000E+100
         50  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -4.326719E-04    0.000000E+00         E    9.00000E+100
         51  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -8.834969E-04    0.000000E+00         E    9.00000E+100
         52  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -8.828319E-04    0.000000E+00         E    9.00000E+100
         53  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -8.819135E-04    0.000000E+00         E    9.00000E+100
         54  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -1.048162E-03    0.000000E+00         E    9.00000E+100
         55  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -1.047220E-03    0.000000E+00         E    9.00000E+100
         56  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -1.045919E-03    0.000000E+00         E    9.00000E+100
         57  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -8.793891E-04    0.000000E+00         E    9.00000E+100
         58  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -8.787210E-04    0.000000E+00         E    9.00000E+100
         59  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -8.777984E-04    0.000000E+00         E    9.00000E+100
         60  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -4.296690E-04    0.000000E+00         E    9.00000E+100
         61  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -4.295085E-04    0.000000E+00         E    9.00000E+100
         62  traj.cruise.collocation_constraint.defects:distance          e   0.000000E+00   -4.292869E-04    0.000000E+00         E    9.00000E+100
         63  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    2.834514E-05    0.000000E+00         E    9.00000E+100
         64  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    2.808043E-05    0.000000E+00         E    9.00000E+100
         65  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    2.766801E-05    0.000000E+00         E    9.00000E+100
         66  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    5.619850E-05    0.000000E+00         E    9.00000E+100
         67  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    5.533951E-05    0.000000E+00         E    9.00000E+100
         68  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    5.330840E-05    0.000000E+00         E    9.00000E+100
         69  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    6.249575E-05    0.000000E+00         E    9.00000E+100
         70  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    5.980946E-05    0.000000E+00         E    9.00000E+100
         71  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    5.468123E-05    0.000000E+00         E    9.00000E+100
         72  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    4.449539E-05    0.000000E+00         E    9.00000E+100
         73  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    4.125093E-05    0.000000E+00         E    9.00000E+100
         74  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    3.964758E-05    0.000000E+00         E    9.00000E+100
         75  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    1.935996E-05    0.000000E+00         E    9.00000E+100
         76  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    1.950853E-05    0.000000E+00         E    9.00000E+100
         77  traj.descent.collocation_constraint.defects:mass             e   0.000000E+00    1.991206E-05    0.000000E+00         E    9.00000E+100
         78  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -2.202263E-04    0.000000E+00         E    9.00000E+100
         79  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -2.169787E-04    0.000000E+00         E    9.00000E+100
         80  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -2.123902E-04    0.000000E+00         E    9.00000E+100
         81  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -4.307427E-04    0.000000E+00         E    9.00000E+100
         82  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -4.162956E-04    0.000000E+00         E    9.00000E+100
         83  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -3.954802E-04    0.000000E+00         E    9.00000E+100
         84  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -4.621061E-04    0.000000E+00         E    9.00000E+100
         85  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -4.395133E-04    0.000000E+00         E    9.00000E+100
         86  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -4.069420E-04    0.000000E+00         E    9.00000E+100
         87  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -3.333348E-04    0.000000E+00         E    9.00000E+100
         88  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -3.157274E-04    0.000000E+00         E    9.00000E+100
         89  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -2.906444E-04    0.000000E+00         E    9.00000E+100
         90  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -1.383343E-04    0.000000E+00         E    9.00000E+100
         91  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -1.338209E-04    0.000000E+00         E    9.00000E+100
         92  traj.descent.collocation_constraint.defects:distance         e   0.000000E+00   -1.275038E-04    0.000000E+00         E    9.00000E+100
         93  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    5.654843E-01    1.000000E+00              9.00000E+100
         94  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    5.252063E-01    1.000000E+00              9.00000E+100
         95  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    4.907601E-01    1.000000E+00              9.00000E+100
         96  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    4.833949E-01    1.000000E+00              9.00000E+100
         97  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    4.833949E-01    1.000000E+00              9.00000E+100
         98  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    4.666976E-01    1.000000E+00              9.00000E+100
         99  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    4.790495E-01    1.000000E+00              9.00000E+100
        100  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    4.878593E-01    1.000000E+00              9.00000E+100
        101  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    4.878593E-01    1.000000E+00              9.00000E+100
        102  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    5.280806E-01    1.000000E+00              9.00000E+100
        103  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    6.062226E-01    1.000000E+00              9.00000E+100
        104  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    6.367627E-01    1.000000E+00              9.00000E+100
        105  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    6.367627E-01    1.000000E+00              9.00000E+100
        106  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    7.002168E-01    1.000000E+00              9.00000E+100
        107  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    8.077728E-01    1.000000E+00              9.00000E+100
        108  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    8.458229E-01    1.000000E+00              9.00000E+100
        109  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    8.458229E-01    1.000000E+00              9.00000E+100
        110  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    8.930007E-01    1.000000E+00              9.00000E+100
        111  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    9.570442E-01    1.000000E+00              9.00000E+100
        112  traj.phases.climb->path_constraint->throttle                 i   0.000000E+00    9.782009E-01    1.000000E+00              9.00000E+100
        113  traj.phases.cruise->initial_boundary_constraint->throttle    i   0.000000E+00    7.744373E-01    1.000000E+00              9.00000E+100
        114  traj.phases.cruise->final_boundary_constraint->throttle      i   0.000000E+00    8.440566E-01    1.000000E+00              9.00000E+100
        115  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    3.784729E-01    1.000000E+00              9.00000E+100
        116  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    3.506058E-01    1.000000E+00              9.00000E+100
        117  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    3.175008E-01    1.000000E+00              9.00000E+100
        118  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    3.081261E-01    1.000000E+00              9.00000E+100
        119  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    3.081261E-01    1.000000E+00              9.00000E+100
        120  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    2.649112E-01    1.000000E+00              9.00000E+100
        121  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    2.114111E-01    1.000000E+00              9.00000E+100
        122  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    1.959442E-01    1.000000E+00              9.00000E+100
        123  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    1.959442E-01    1.000000E+00              9.00000E+100
        124  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    1.594057E-01    1.000000E+00              9.00000E+100
        125  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    1.195492E-01    1.000000E+00              9.00000E+100
        126  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    1.083840E-01    1.000000E+00              9.00000E+100
        127  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    1.083840E-01    1.000000E+00              9.00000E+100
        128  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    8.773027E-02    1.000000E+00              9.00000E+100
        129  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    4.659154E-02    1.000000E+00              9.00000E+100
        130  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    3.456249E-02    1.000000E+00              9.00000E+100
        131  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    3.456249E-02    1.000000E+00              9.00000E+100
        132  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    2.175096E-02    1.000000E+00              9.00000E+100
        133  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    5.589910E-03    1.000000E+00              9.00000E+100
        134  traj.phases.descent->path_constraint->throttle               i   0.000000E+00    7.457800E-04    1.000000E+00              9.00000E+100

--------------------------------------------------------------------------------
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/core/driver.py:143: OMDeprecationWarning:boolean evaluation of DriverResult is temporarily implemented to mimick the previous `failed` return behavior of run_driver.
Use the `success` attribute of the returned DriverResult object to test for successful driver completion.

Aviary fortran_to_aviary command#

Note

You only need to use the fortran_to_aviary command if you are converting a FLOPS or GASP deck to Aviary’s csv format.

This fortran_to_aviary tool converts FORTRAN namelists into Aviary’s csv based format using the mappings found in the historical_name section of the variable_meta_data. The resulting csv is automatically sorted into three sections:

  1. Input Values: Any FORTRAN variables that were mapped to input variables in Aviary components

  2. Initial Guesses: Some variables are only used as initial guesses for the trajectory. These are displayed separately from the Input Values because they will not be passed directly to components

  3. Unconverted Values: If the fortran_to_aviary converter can’t find an Aviary variable that matches the FORTRAN variable, it is added to the end of the csv file. We recommend that you check this section after converting a namelist to ensure that there aren’t any variables you expected to be converted here. Many of these unconverted variables represent features or options that are not used in Aviary and can be safely ignored. Variables related to mission definition are important, but Aviary defines mission profiles in a significantly different way. Currently, the user must build a new mission definition file that recreates the mission. Aviary will ignore unconverted variables when loading the csv, so you can safely leave them.

# Testing Cell
from aviary.interface.cmd_entry_points import _command_map
_command_map['fortran_to_aviary'];

Phase info#

Aviary runs depend not only on input *.csv files, but also on phase_info dictionaries. A phase_info dictionary defines the mission and any analysis settings used within Aviary. It is used by Aviary to build a mission trajectory (e.g., from take-off to landing).

A Python dictionary is a set of key-value pairs. Most keys in phase_info are self-explained. Users should read Dymos’ Phase Options. For more details about phase_info keys, especially their example usages, please read onboarding phase information.

Default GASP phases#

The default_phase_info/two_dof.py file is shown below:

phase_info = {
    'groundroll': {
        'user_options': {
            'num_segments': 1,
            'order': 3,
            'connect_initial_mass': False,
            'fix_initial': True,
            'fix_initial_mass': False,
            'duration_ref': (50., 's'),
            'duration_bounds': ((1., 100.), 's'),
            'velocity_lower': (0, 'kn'),
            'velocity_upper': (1000, 'kn'),
            'velocity_ref': (150, 'kn'),
            'mass_lower': (0, 'lbm'),
            'mass_upper': (None, 'lbm'),
            'mass_ref': (150_000, 'lbm'),
            'mass_defect_ref': (150_000, 'lbm'),
            'distance_lower': (0, 'ft'),
            'distance_upper': (10.e3, 'ft'),
            'distance_ref': (3000, 'ft'),
            'distance_defect_ref': (3000, 'ft'),
        },
        'initial_guesses': {
            'time': ([0.0, 40.0], 's'),
            'velocity': ([0.066, 143.1], 'kn'),
            'distance': ([0.0, 1000.], 'ft'),
            'throttle': ([0.956, 0.956], 'unitless'),
        }
    },
    'rotation': {
        'user_options': {
            'num_segments': 1,
            'order': 3,
            'fix_initial': False,
            'duration_bounds': ((1, 100), 's'),
            'duration_ref': (50.0, 's'),
            'velocity_lower': (0, 'kn'),
            'velocity_upper': (1000, 'kn'),
            'velocity_ref': (100, 'kn'),
            'velocity_ref0': (0, 'kn'),
            'mass_lower': (0, 'lbm'),
            'mass_upper': (None, 'lbm'),
            'mass_ref': (150_000, 'lbm'),
            'mass_defect_ref': (150_000, 'lbm'),
            'distance_lower': (0, 'ft'),
            'distance_upper': (10_000, 'ft'),
            'distance_ref': (5000, 'ft'),
            'distance_defect_ref': (5000, 'ft'),
            'angle_lower': (0., 'rad'),
            'angle_upper': (5., 'rad'),
            'angle_ref': (5., 'rad'),
            'angle_defect_ref': (5., 'rad'),
            'normal_ref': (10000, 'lbf'),
        },
        'initial_guesses': {
            'time': ([40.0, 5.0], 's'),
            'alpha': ([0.0, 2.5], 'deg'),
            'velocity': ([143, 150.], 'kn'),
            'distance': ([3680.37217765, 4000], 'ft'),
            'throttle': ([0.956, 0.956], 'unitless'),
        }
    },
    'ascent': {
        'user_options': {
            'num_segments': 4,
            'order': 3,
            'fix_initial': False,
            'velocity_lower': (0, 'kn'),
            'velocity_upper': (700, 'kn'),
            'velocity_ref': (200, 'kn'),
            'velocity_ref0': (0, 'kn'),
            'mass_lower': (0, 'lbm'),
            'mass_upper': (None, 'lbm'),
            'mass_ref': (150_000, 'lbm'),
            'mass_defect_ref': (150_000, 'lbm'),
            'distance_lower': (0, 'ft'),
            'distance_upper': (15_000, 'ft'),
            'distance_ref': (1e4, 'ft'),
            'distance_defect_ref': (1e4, 'ft'),
            'alt_lower': (0, 'ft'),
            'alt_upper': (700, 'ft'),
            'alt_ref': (1000, 'ft'),
            'alt_defect_ref': (1000, 'ft'),
            'final_altitude': (500, 'ft'),
            'alt_constraint_ref': (500, 'ft'),
            'angle_lower': (-10, 'rad'),
            'angle_upper': (20, 'rad'),
            'angle_ref': (57.2958, 'deg'),
            'angle_defect_ref': (57.2958, 'deg'),
            'pitch_constraint_lower': (0., 'deg'),
            'pitch_constraint_upper': (15., 'deg'),
            'pitch_constraint_ref': (1., 'deg'),
        },
        'initial_guesses': {
            'time': ([45., 25.], 's'),
            'flight_path_angle': ([0.0, 8.], 'deg'),
            'alpha': ([2.5, 1.5], 'deg'),
            'velocity': ([150., 185.], 'kn'),
            'distance': ([4.e3, 10.e3], 'ft'),
            'altitude': ([0.0, 500.], 'ft'),
            'tau_gear': (0.2, 'unitless'),
            'tau_flaps': (0.9, 'unitless'),
            'throttle': ([0.956, 0.956], 'unitless'),
        }
    },
    'accel': {
        'user_options': {
            'num_segments': 1,
            'order': 3,
            'fix_initial': False,
            'alt': (500, 'ft'),
            'EAS_constraint_eq': (250, 'kn'),
            'duration_bounds': ((1, 200), 's'),
            'duration_ref': (1000, 's'),
            'velocity_lower': (150, 'kn'),
            'velocity_upper': (270, 'kn'),
            'velocity_ref': (250, 'kn'),
            'velocity_ref0': (150, 'kn'),
            'mass_lower': (0, 'lbm'),
            'mass_upper': (None, 'lbm'),
            'mass_ref': (150_000, 'lbm'),
            'mass_defect_ref': (150_000, 'lbm'),
            'distance_lower': (0, 'NM'),
            'distance_upper': (150, 'NM'),
            'distance_ref': (5, 'NM'),
            'distance_defect_ref': (5, 'NM'),
        },
        'initial_guesses': {
            'time': ([70., 13.], 's'),
            'velocity': ([185., 250.], 'kn'),
            'distance': ([10.e3, 20.e3], 'ft'),
            'throttle': ([0.956, 0.956], 'unitless'),
        }
    },
    'climb1': {
        'user_options': {
            'num_segments': 1,
            'order': 3,
            'fix_initial': False,
            'EAS_target': (250, 'kn'),
            'mach_cruise': 0.8,
            'target_mach': False,
            'final_altitude': (10.e3, 'ft'),
            'duration_bounds': ((30, 300), 's'),
            'duration_ref': (1000, 's'),
            'alt_lower': (400, 'ft'),
            'alt_upper': (11_000, 'ft'),
            'alt_ref': (10.e3, 'ft'),
            'mass_lower': (0, 'lbm'),
            'mass_upper': (None, 'lbm'),
            'mass_ref': (150_000, 'lbm'),
            'mass_defect_ref': (150_000, 'lbm'),
            'distance_lower': (0, 'NM'),
            'distance_upper': (500, 'NM'),
            'distance_ref': (10, 'NM'),
            'distance_ref0': (0, 'NM'),
        },
        'initial_guesses': {
            'time': ([1., 2.], 'min'),
            'distance': ([20.e3, 100.e3], 'ft'),
            'altitude': ([500., 10.e3], 'ft'),
            'throttle': ([0.956, 0.956], 'unitless'),
        }
    },
    'climb2': {
        'user_options': {
            'num_segments': 3,
            'order': 3,
            'fix_initial': False,
            'EAS_target': (270, 'kn'),
            'mach_cruise': 0.8,
            'target_mach': True,
            'final_altitude': (37.5e3, 'ft'),
            'required_available_climb_rate': (0.1, 'ft/min'),
            'duration_bounds': ((200, 17_000), 's'),
            'duration_ref': (5000, 's'),
            'alt_lower': (9000, 'ft'),
            'alt_upper': (40000, 'ft'),
            'alt_ref': (30000, 'ft'),
            'alt_ref0': (0, 'ft'),
            'mass_lower': (0, 'lbm'),
            'mass_upper': (None, 'lbm'),
            'mass_ref': (150_000, 'lbm'),
            'mass_defect_ref': (150_000, 'lbm'),
            'distance_lower': (10, 'NM'),
            'distance_upper': (1000, 'NM'),
            'distance_ref': (500, 'NM'),
            'distance_ref0': (0, 'NM'),
            'distance_defect_ref': (500, 'NM'),
        },
        'initial_guesses': {
            'time': ([216., 1300.], 's'),
            'distance': ([100.e3, 200.e3], 'ft'),
            'altitude': ([10.e3, 37.5e3], 'ft'),
            'throttle': ([0.956, 0.956], 'unitless'),
        }
    },
    'cruise': {
        'user_options': {
            'alt_cruise': (37.5e3, 'ft'),
            'mach_cruise': 0.8,
        },
        'initial_guesses': {
            # [Initial mass, delta mass] for special cruise phase.
            'mass': ([171481., -35000], 'lbm'),
            'initial_distance': (200.e3, 'ft'),
            'initial_time': (1516., 's'),
            'altitude': (37.5e3, 'ft'),
            'mach': (0.8, 'unitless'),
        }
    },
    'desc1': {
        'user_options': {
            'num_segments': 3,
            'order': 3,
            'fix_initial': False,
            'input_initial': False,
            'EAS_limit': (350, 'kn'),
            'mach_cruise': 0.8,
            'input_speed_type': SpeedType.MACH,
            'final_altitude': (10.e3, 'ft'),
            'duration_bounds': ((300., 900.), 's'),
            'duration_ref': (1000, 's'),
            'alt_lower': (1000, 'ft'),
            'alt_upper': (40_000, 'ft'),
            'alt_ref': (30_000, 'ft'),
            'alt_ref0': (0, 'ft'),
            'alt_constraint_ref': (10000, 'ft'),
            'mass_lower': (0, 'lbm'),
            'mass_upper': (None, 'lbm'),
            'mass_ref': (140_000, 'lbm'),
            'mass_ref0': (0, 'lbm'),
            'mass_defect_ref': (140_000, 'lbm'),
            'distance_lower': (3000., 'NM'),
            'distance_upper': (5000., 'NM'),
            'distance_ref': (mission_distance, 'NM'),
            'distance_ref0': (0, 'NM'),
            'distance_defect_ref': (100, 'NM'),
        },
        'initial_guesses': {
            'mass': (136000., 'lbm'),
            'altitude': ([37.5e3, 10.e3], 'ft'),
            'throttle': ([0.0, 0.0], 'unitless'),
            'distance': ([.92*mission_distance, .96*mission_distance], 'NM'),
            'time': ([28000., 500.], 's'),
        }
    },
    'desc2': {
        'user_options': {
            'num_segments': 1,
            'order': 7,
            'fix_initial': False,
            'input_initial': False,
            'EAS_limit': (250, 'kn'),
            'mach_cruise': 0.80,
            'input_speed_type': SpeedType.EAS,
            'final_altitude': (1000, 'ft'),
            'duration_bounds': ((100., 5000), 's'),
            'duration_ref': (500, 's'),
            'alt_lower': (500, 'ft'),
            'alt_upper': (11_000, 'ft'),
            'alt_ref': (10.e3, 'ft'),
            'alt_ref0': (1000, 'ft'),
            'alt_constraint_ref': (1000, 'ft'),
            'mass_lower': (0, 'lbm'),
            'mass_upper': (None, 'lbm'),
            'mass_ref': (150_000, 'lbm'),
            'mass_defect_ref': (150_000, 'lbm'),
            'distance_lower': (0, 'NM'),
            'distance_upper': (5000, 'NM'),
            'distance_ref': (3500, 'NM'),
            'distance_defect_ref': (100, 'NM'),
        },
        'initial_guesses': {
            'mass': (136000., 'lbm'),
            'altitude': ([10.e3, 1.e3], 'ft'),
            'throttle': ([0., 0.], 'unitless'),
            'distance': ([.96*mission_distance, mission_distance], 'NM'),
            'time': ([28500., 500.], 's'),
        }
    },
}


def phase_info_parameterization(phase_info, post_mission_info, aviary_inputs):
    """
    Modify the values in the phase_info dictionary to accomodate different values
    for the following mission design inputs: cruise altitude, cruise mach number,
    cruise range, design gross mass.

    Parameters
    ----------
    phase_info : dict
        Dictionary of phase settings for a mission profile
    aviary_inputs : <AviaryValues>
        Object containing values and units for all aviary inputs and options

    Returns
    -------
    dict
        Modified phase_info that has been changed to match the new mission
        parameters
    """

    range_cruise = aviary_inputs.get_val(Mission.Design.RANGE, units='NM')
    alt_cruise = aviary_inputs.get_val(Mission.Design.CRUISE_ALTITUDE, units='ft')
    gross_mass = aviary_inputs.get_val(Mission.Design.GROSS_MASS, units='lbm')
    mach_cruise = aviary_inputs.get_val(Mission.Design.MACH)

    # Range
    old_range_cruise = phase_info['desc2']['initial_guesses']['distance'][0][1]
    range_scale = 1.0
    if range_cruise != old_range_cruise:

        phase_info['desc1']['initial_guesses']['distance'] = \
            ([.92*range_cruise, .96*range_cruise], 'NM')
        phase_info['desc2']['initial_guesses']['distance'] = \
            ([.96*range_cruise, range_cruise], 'NM')
        range_scale = range_cruise / old_range_cruise

    # Altitude
    old_alt_cruise = phase_info['climb2']['user_options']['final_altitude'][0]
    if alt_cruise != old_alt_cruise:

        phase_info['climb2']['user_options']['final_altitude'] = (alt_cruise, 'ft')
        phase_info['climb2']['initial_guesses']['altitude'] = ([10.e3, alt_cruise], 'ft')
        phase_info['cruise']['initial_guesses']['altitude'] = (alt_cruise, 'ft')
        phase_info['desc1']['initial_guesses']['altitude'] = ([alt_cruise, 10.e3], 'ft')

        # TODO - Could adjust time guesses/bounds in climb2 and desc2.

    # Mass
    old_gross_mass = 175400.0
    if gross_mass != old_gross_mass:

        # Note, this requires that the guess for gross mass is pretty close to the
        # compute mass.

        fuel_used = 35000 * range_scale
        phase_info['groundroll']['initial_guesses']['mass'] = \
            ([gross_mass, gross_mass], 'lbm')
        phase_info['rotation']['initial_guesses']['mass'] = \
            ([gross_mass, gross_mass], 'lbm')
        phase_info['accel']['initial_guesses']['mass'] = \
            ([gross_mass, gross_mass], 'lbm')
        phase_info['ascent']['initial_guesses']['mass'] = \
            ([gross_mass, gross_mass], 'lbm')

        phase_info['cruise']['initial_guesses']['mass'] = \
            ([gross_mass, -fuel_used], 'lbm')

        end_mass = gross_mass - fuel_used
        phase_info['desc1']['initial_guesses']['mass'] = (end_mass, 'lbm')
        phase_info['desc2']['initial_guesses']['mass'] = (end_mass, 'lbm')

    # Mach
    old_mach_cruise = phase_info['cruise']['initial_guesses']['mach'][0]
    if mach_cruise != old_mach_cruise:

        phase_info['cruise']['initial_guesses']['mach'] = (mach_cruise, 'unitless')

    return phase_info, post_mission_info

The file default_phase_info/two_dof.py contains the following phases:

groundroll, rotation, ascent, accel, climb1, climb2, cruise, desc1, desc2.

All of the above phases belong to mission. No pre-mission phase is provided. If pre_mission is missing, a default pre_mission is provided:

    'pre_mission': {
        'include_takeoff': True,
        'external_subsystems': [],
    }

Similarly, if no post-mission phase is provided, then a default post_mission is provided:

    'post_mission': {
        'include_landing': True,
        'external_subsystems': [],
    },

For `GASP’ missions, taxi is considered part of pre-mission and landing is considered part of post-mission.

Groundroll phase#

Let us discuss the groundroll phase in detail as an example.

In groundroll phase, we are given duration_bounds of ((1., 100.), 's') and a reference value duration_ref of (50., 's'). Here, duration_bounds is a tuple of (lower, upper) bounds for the duration of the integration variable across the phase and duration_ref is the unit-reference value for the duration of the integration variable across the phase (see Dymos Variables). This implies a time range of (0.2, 2) in ground roll phase, or:

0.02 ≤ traj.groundroll.t_duration ≤ 2.

We see velocity_lower: (0, 'kn'), velocity_upper: (1000, 'kn'), and velocity_ref: (100, 'kn'). They result in TAS as a design variable with a range: (0, 10), or

0 ≤ traj.groundroll.states:TAS ≤ 10.

Similarly, we get:

0 ≤ traj.groundroll.states:distance ≤ 3.3333

The mass parameter is a little bit different because we have mass_upper: (None, 'lbm') (and mass_lower: (0, 'lbm')). In this situation, OpenMDAO provides replaces the None with an actual upper bound that is very large. We get:

0 ≤ traj.groundroll.states:mass ≤ 5.7e+15.

Comparing to TAS and distance, mass is not scaled to the same range. This is okay because aircraft mass is actually a constant in this phase. A huge upper bound will not have an impact.

In ground roll phase, throttle setting is set to maximum (1.0). Aviary sets a phase parameter:

Dynamic.Mission.THROTTLE = 1.0

For the COLLOCATION setting, there is one segment ('num_segments': 1) and polynomial interpolation degree is 3 ('order': 3). Increasing the number of segments and/or increasing the degree of polynomial will improve accuracy but will also increase the complexity of computation. For groundroll, it is unnecessary.

Since groundroll is the first phase, connect_initial_mass is set to False. fix_initial is set to True, but fix_initial_mass to False because aircraft total mass is a design parameter.

Parameter mass_defect_ref: (10.e3, 'lbm') (or mass_defect_ref: (1.e4, 'lbm')) lbm. Defect is a residual that measures how accurately the proposed state and control history obeyed the ODE governing the system dynamics. For distance, the defect reference is 100 ft. For TAS, defect_ref is not provided. The default behavior is to make make the defect_ref equal to the ref value. Please see here for more info.

Other phases#

We will not discuss the other phases in detail.

Phase climb1 is for climb up to 10,000 ft and phase climb2 is for climb to cruise phase. Phase desc1 is for descent down to 10,000 ft and phase desc2 is for descent from 10,000 ft down to 1,000 ft.

Default FLOPS phases#

The file default_phase_info/flops.py contains the following phases:

pre_mission, climb, cruise, descent, post_mission

The differences between GASP and FLOPS phases are due to how GASP and FLOPS implement trajectory analysis.

Note

File default_phase_info/flops.py has a pre_mission phase and a post_mission phase. In pre_mission, takeoff is the simplified takeoff and in post_mission, landing is the simplified landing. For FLOPS missions, there are detailed takeoff and landing available. But they are not used in default_phase_info/flops.py. The other phases are mission phases.

Outputted files and how to read them#

Note

Please also see this doc page for more info about the Aviary dashboard and the information is contains. We usually expect that users access these reports through the dashboard, though you can also access the html files directly.

Each standard run generates several output files. Which output files are generated depend on the run options. In this section, we assume that we’ve set max_iter = 50 to ensure convergence. The following screenshots used in this article are all from a run using aircraft_for_bench_GwGm.csv.

First, there is always a sub-folder reports/aviary that contains a few HTML files.

  • driver_scaling_report.html

  • inputs.html

  • n2.html

  • opt_report.html

  • total_coloring.html

  • traj_linkage_report.html

  • traj_results_report.html

File driver_scaling_report.html#

This file is a summary of driver scaling information. After all design variables, objectives, and constraints are declared and the problem has been set up, this report presents all the design variables and constraints in all phases as well as the objectives. The file is divided to three blocks: Design Variables, Constraints, and Objectives. It contains the following columns: name, size, indices, driver value and units, model value and units, ref, ref0, scaler, adder, etc. It also shows Jacobian Info - responses with respect to design variables (DV). A screen shot of design variables is shown here:

Sample driver_scaling_report.html (top lines)

This file is needed when you are debugging. New users can skip it.

File inputs.html#

File inputs.html is a sortable and filterable input report of input variables in different phases. It contains all the input variables (with possibly duplicate names for different phases) but only shows those in Source is IVC (abbreviation for IndepVarComp) on opening up. Users can choose to show other inputs by selecting and deselecting this checkbox. Users can filter their inputs by input name, source name, units, shape, tags, values (Val), or design variables (Source is DV). Here is a screen shot (top part) when it is opened:

Sample inputs.html (top lines)

New users can choose to use input_list.txt instead (see below).

File n2.html#

N2, sometimes referred to as an eXtended Design Structure Matrix (XDSM), is a powerful tool for understanding your model in OpenMDAO. It is an N-squared diagram in the shape of a matrix representing functional or physical interfaces between system elements. It can be used to systematically identify, define, tabulate, design, and analyze functional and physical interfaces.

Note

We strongly recommend that you understand N2 diagrams well, especially if you are debugging a model or adding external subsystems. Here is a doc page featuring an informative video on how to use N2 diagrams effectively. MDO lab has another resource for learning about N2 and XDSM.

Here is a screenshot of an N2 diagram after we run aviary run_mission models/test_aircraft/aircraft_for_bench_GwGm.csv.

Sample n2.html (on start)

At level 1, we are interested in the phases, so let us Hide solvers. So from model, zoom into traj, then into phases. We see the phases from groundroll to desc2 as expected. To see how those phases are connected, we click on Show all connections in view. Here is what we see:

Sample n2.html (on phases)

The solid arrow connections show how outputs of one phase feed as inputs to the next. As you can see, the input of each phase is linked from the previous phase and its output is linked to the next phase. This is pretty much what we expect. The dashed arrows are links to and/or from other places not in the view. If you are curious where those links go, you must zoom out. This can be done by clicking the vertical bar on the left. Let us click it twice. Here is what we get:

Sample n2.html (on phases)

Note that desc2 phase is linked back up to static_analysis. This means that at least one variable must be matched in the two places. There must be a nonlinear solver for this step.

For GASP missions, there is a takeoff subsystem (including taxi phase) within pre_mission. For FLOPS missions, there is a takeoff subsystem within pre_mission in which a takeoff phase is added. It is added after static_analysis in add_pre_mission_systems method.

Similarly, there is a landing phase within post_mission.

File opt_report.html#

This file is OpenMDAO Optimization Report. All values are in unscaled, physical units. On the top is a summary of the optimization, followed by the objective, design variables, constraints, and optimizer settings. Here is a screenshot:

Sample opt_report.html (top lines)

This file is important when dissecting optimal results produced by Aviary.

Coloring files#

There is a sub-folder coloring_files. Those are used internally by OpenMDAO for derivative computation. Users should generally skip those files.

File traj_linkage_report.html#

This is a dymos linkage report in a customized N2 diagram. It provides a report detailing how phases are linked together via constraint or connection. It can be used to identify errant linkages between fixed quantities.

Sample traj_linkage_report.html (top of timeseries)

We clearly see how those mission phases are linked.

File traj_results_report.html#

Note

This is one of the most important files produced by Aviary. It will help you visualize and understand the optimal trajectory produced by Aviary.

This file contains timeseries and phase parameters in different tabs. For our aircraft_for_bench_GwGm run, they are: groundroll, rotation, ascent, accel, climb1, climb2, cruise, desc1, and desc2 parameters. On the timeseries tab, users can select which phases to view. The following are the top of timeseries tab and ascent parameters tab:

Sample traj_results_report.html (top part of timeseries)

Let’s find the altitude chart. Move the cursor to the top of climb2. We see that the aircraft climbs to 37910 feet at 2814 second. Then it enters to cruise phase. At 28290 second, it starts descent from 37660 feet.

Sample traj_results_report.html (altitude)

Let’s switch to ascent tab. We see the following:

Sample traj_results_report.html (top lines) of ascent

This file is quite important. Users should play with it and try to grasp all possible features. For example, you can hover the mouse over the solution points to see solution value; you can save the interesting images; you can zoom into a particular region for details, etc.

Optimizer output#

If IPOPT is the optimizer, IPOPT.out is generated. If SLSQP is the optimizer and pyOptSparseDriver is the driver, SLSQP.out is generated. Generally speaking, IPOPT and SNOPT converge Aviary optimization problems better than SLSQP, but SLSQP is bundled with Scipy by default, making it more widely available.

SQLite database file#

There is a .db file after run. By default, it is aviary_history.db. This is an SQLite database file. In level 2 and level 3, we will be able to choose a different name. Our run is recorded into this file. You generally shouldn’t need to parse through this file on your own, but it is available if you’re seeking additional problem information.

Plain text inputs and outputs#

If Settings.VERBOSITY is set to 2 (Verbosity.VERBOSE) or higher, input_list.txt and output_list.txt are generated. We recommend this parameter be set to 1 (Verbosity.BRIEF) for beginners. See Coding Standards for more details.

Let us look at input_list.txt:

Sample input_list.txt (top lines)

In this screenshot, we see a tree structure. There are three columns. The left column is a list of variable names. The middle column is the value and the right column is the promoted variable name. pre_mission is a phase, static_analysis is a subgroup which contains other subcomponents (e.g. propulsion_group). engine is a component under which is a list of input variables (e.g. aircraft:engine:scaled_sls_thrust).

An input variable can appear under different phases and within different components. Note that its values can be different because its value has been updated during the computation. On the top-left corner is the total number of inputs. That number counts the duplicates because one variable can appear in different phases. Aviary variable structure are discussed in Understanding the Variable Hierarchy and Understanding the Variable Metadata.

If you zoom the N2 diagram into propulsion_group and gasp_based_geom, you see the exact same tree structure:

Sample N2 Diagram (top blocks)

File output_list.txt follows the same pattern. But there is another tree for implicit outputs. That helps when debugging is needed.

Additional messages#

When Aviary is run, some messages are printed on the command line and they are important. For example, the following constraint report tells us whether our desired constraints are met:

--- Constraint Report [traj] ---
    --- groundroll ---
        None
    --- rotation ---
        [final]   0.0000e+00 == normal_force [lbf]
    --- ascent ---
        [final]   5.0000e+02 == altitude [ft]
        [path]    0.0000e+00 <= load_factor <= 1.1000e+00  [unitless]
        [path]    0.0000e+00 <= fuselage_pitch <= 1.5000e+01  [deg]
    --- accel ---
        [final]   2.5000e+02 == EAS [kn]
    --- climb1 ---
        [final]   1.0000e+04 == altitude [ft]
    --- climb2 ---
        [final]   3.7500e+04 == altitude [ft]
        [final]   1.0000e-01 <= altitude_rate  [ft/min]
        [final]   8.0000e-01 == mach [unitless]
    --- cruise ---
        None
    --- desc1 ---
        [final]   1.0000e+04 == altitude [ft]
    --- desc2 ---
        [final]   1.0000e+03 == altitude [ft]

Beyond level 1#

Aviary Level 1 is quite capable yet limited in how much is exposed to the user. If you need additional flexibility or want to add your own subsystems, you will need to move to Levels 2 or 3. Let us briefly discuss some of the possible reasons for you to move to Levels 2 or 3.

If you examine the Aviary metadata, you find that Aviary has two choices of objectives: Mission.Objectives.FUEL and Mission.Objectives.RANGE. But in level 1, you are limited to minimizing fuel. Users will be able to make other choices in level 2 and level 3.

Level 1 uses the default phase_info dictionaries, though there is an option to use a customized phase_info. For more details, please read drawing and running simple missions.

There may be more or fewer key-value pairs in each of the phases. For example, if you have an external subsystem, say, a battery with BatteryBuilder(), you can add a key external_subsystems with value BatteryBuilder(). We will go into details later.

No matter what mission method users choose, they can create their own phase sequences and run Aviary using either level 2 or 3 interface.

In the aviary/interface/default_phase_info subdirectory, you see another phase_info file solved.py. It defines the phase_info object for the “solved” mission method which is not explained in level 1. The “solved” mission method is a more simplified and robust method than the other methods. In just a few words, it’s a way of implementing a trajectory where the aircraft only flies in straight lines in the altitude-range space and usually at constant velocity. The idea is to simplify the design space by reducing the flexibility the optimizer has to choose a trajectory profile. It still uses a collocation method to solve the mission dynamics, but the complexity of the design problem is lessened.

We are ready to move on to Level 2.