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:272: 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 4000 ft**2
'aircraft:horizontal_tail:form_factor 1.25 unitless
'aircraft:nacelle:form_factor [1.5] unitless
'aircraft:strut:fuselage_interference_factor 0 unitless
'aircraft:vertical_tail:form_factor 1.25 unitless
'aircraft:wing:form_factor 1.25 unitless
--- 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 1.952949459000024 seconds.
Total jacobian shape: (238, 212)
Jacobian shape: (238, 212) (7.98% nonzero)
FWD solves: 48 REV solves: 0
Total colors vs. total size: 48 vs 212 (77.36% improvement)
Sparsity computed using tolerance: 1e-25
Time to compute sparsity: 1.9529 sec
Time to compute coloring: 0.1885 sec
Memory to compute coloring: 1.6250 MB
Coloring created on: 2024-11-19 19:08:04
This is Ipopt version 3.14.16, running with linear solver MUMPS 5.7.3.
Number of nonzeros in equality constraint Jacobian...: 2827
Number of nonzeros in inequality constraint Jacobian.: 599
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: 2
variables with lower and upper bounds: 210
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.65e+01 -5.0 0.00e+00 - 0.00e+00 0.00e+00 0
Number of Iterations....: 1
(scaled) (unscaled)
Objective...............: 4.4311640693002561e+00 4.4311640693002561e+00
Dual infeasibility......: 1.6268335108291701e+01 1.6268335108291701e+01
Constraint violation....: 5.3444527521515546e+01 3.0967714820926864e+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.386
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.3871
User Objective Time : 0.7022
User Sensitivity Time : 1.6556
Interface Time : 0.0172
Opt Solver Time: 0.0121
Calls to Objective Function : 3
Calls to Sens Function : 3
Objectives
Index Name Value
0 mission:objectives:fuel 4.431164E+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.944039E-01 1.000000E+30
1 mission:summary:gross_mass_0 c 5.714286E-05 9.944039E-01 1.000000E+30
2 mission:takeoff:ascent_t_initial_0 c 0.000000E+00 5.650505E-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.932724E-01 1.990050E+00
7 traj.accel.states:velocity_0 c 0.000000E+00 5.093867E-01 1.200000E+00
8 traj.accel.states:velocity_1 c 0.000000E+00 8.991874E-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.157670E+00 6.666667E+15
11 traj.accel.states:mass_1 c 0.000000E+00 1.157412E+00 6.666667E+15
12 traj.accel.states:mass_2 c 0.000000E+00 1.157053E+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.427052E-01 3.000000E+01
15 traj.accel.states:distance_1 c 0.000000E+00 5.211557E-01 3.000000E+01
16 traj.accel.states:distance_2 c 0.000000E+00 5.834645E-01 3.000000E+01
17 traj.ascent.states:flight_path_angle_0 c -9.999996E+00 -4.629089E-03 1.999999E+01
18 traj.ascent.states:flight_path_angle_1 c -9.999996E+00 -1.093033E-02 1.999999E+01
19 traj.ascent.states:flight_path_angle_2 c -9.999996E+00 -1.682923E-02 1.999999E+01
20 traj.ascent.states:flight_path_angle_3 c -9.999996E+00 -3.734555E-03 1.999999E+01
21 traj.ascent.states:flight_path_angle_4 c -9.999996E+00 3.556617E-02 1.999999E+01
22 traj.ascent.states:flight_path_angle_5 c -9.999996E+00 4.650741E-02 1.999999E+01
23 traj.ascent.states:flight_path_angle_6 c -9.999996E+00 6.076312E-02 1.999999E+01
24 traj.ascent.states:flight_path_angle_7 c -9.999996E+00 7.400449E-02 1.999999E+01
25 traj.ascent.states:flight_path_angle_8 c -9.999996E+00 8.149111E-02 1.999999E+01
26 traj.ascent.states:flight_path_angle_9 c -9.999996E+00 1.076032E-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.811477E-01 7.000000E-01
30 traj.ascent.states:altitude_1 c 0.000000E+00 5.771022E-01 7.000000E-01
31 traj.ascent.states:altitude_2 c 0.000000E+00 5.577667E-01 7.000000E-01
32 traj.ascent.states:altitude_3 c 0.000000E+00 5.481903E-01 7.000000E-01
33 traj.ascent.states:altitude_4 c 0.000000E+00 5.220940E-01 7.000000E-01
34 traj.ascent.states:altitude_5 c 0.000000E+00 4.968366E-01 7.000000E-01
35 traj.ascent.states:altitude_6 c 0.000000E+00 4.944078E-01 7.000000E-01
36 traj.ascent.states:altitude_7 c 0.000000E+00 4.902437E-01 7.000000E-01
37 traj.ascent.states:altitude_8 c 0.000000E+00 4.854846E-01 7.000000E-01
38 traj.ascent.states:altitude_9 c 0.000000E+00 4.832424E-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.907313E-01 3.500000E+00
44 traj.ascent.states:velocity_2 c 0.000000E+00 7.960870E-01 3.500000E+00
45 traj.ascent.states:velocity_3 c 0.000000E+00 8.112675E-01 3.500000E+00
46 traj.ascent.states:velocity_4 c 0.000000E+00 8.275788E-01 3.500000E+00
47 traj.ascent.states:velocity_5 c 0.000000E+00 8.308267E-01 3.500000E+00
48 traj.ascent.states:velocity_6 c 0.000000E+00 8.381623E-01 3.500000E+00
49 traj.ascent.states:velocity_7 c 0.000000E+00 8.479325E-01 3.500000E+00
50 traj.ascent.states:velocity_8 c 0.000000E+00 8.510585E-01 3.500000E+00
51 traj.ascent.states:velocity_9 c 0.000000E+00 8.551755E-01 3.500000E+00
52 traj.ascent.states:velocity_10 c 0.000000E+00 8.587206E-01 3.500000E+00
53 traj.ascent.states:velocity_11 c 0.000000E+00 8.606567E-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.157786E+00 6.666667E+15
56 traj.ascent.states:mass_2 c 0.000000E+00 1.157771E+00 6.666667E+15
57 traj.ascent.states:mass_3 c 0.000000E+00 1.157766E+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.157739E+00 6.666667E+15
60 traj.ascent.states:mass_6 c 0.000000E+00 1.157734E+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.157707E+00 6.666667E+15
63 traj.ascent.states:mass_9 c 0.000000E+00 1.157702E+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.157675E+00 6.666667E+15
66 traj.ascent.states:mass_12 c 0.000000E+00 1.157670E+00 6.666667E+15
67 traj.ascent.states:distance_0 c 0.000000E+00 5.742457E-01 1.500000E+00
68 traj.ascent.states:distance_1 c 0.000000E+00 5.919776E-01 1.500000E+00
69 traj.ascent.states:distance_2 c 0.000000E+00 5.977685E-01 1.500000E+00
70 traj.ascent.states:distance_3 c 0.000000E+00 6.110079E-01 1.500000E+00
71 traj.ascent.states:distance_4 c 0.000000E+00 6.294240E-01 1.500000E+00
72 traj.ascent.states:distance_5 c 0.000000E+00 6.351900E-01 1.500000E+00
73 traj.ascent.states:distance_6 c 0.000000E+00 6.480989E-01 1.500000E+00
74 traj.ascent.states:distance_7 c 0.000000E+00 6.653190E-01 1.500000E+00
75 traj.ascent.states:distance_8 c 0.000000E+00 6.706283E-01 1.500000E+00
76 traj.ascent.states:distance_9 c 0.000000E+00 6.823388E-01 1.500000E+00
77 traj.ascent.states:distance_10 c 0.000000E+00 6.973284E-01 1.500000E+00
78 traj.ascent.states:distance_11 c 0.000000E+00 7.017847E-01 1.500000E+00
79 traj.ascent.controls:alpha_0 c -6.000000E+00 2.019070E+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.923168E-01 6.000000E+00
82 traj.ascent.controls:alpha_3 c -6.000000E+00 9.871869E-01 6.000000E+00
83 traj.ascent.controls:alpha_4 c -6.000000E+00 1.216372E+00 6.000000E+00
84 traj.ascent.controls:alpha_5 c -6.000000E+00 1.220152E+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.045435E+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.165235E+00 6.000000E+00
90 traj.ascent.controls:alpha_11 c -6.000000E+00 7.793462E-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.168740E-02 1.100000E+00
93 traj.climb1.states:altitude_1 c 4.000000E-02 4.140100E-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.155480E+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.153032E+00 6.666667E+15
100 traj.climb1.states:distance_0 c 0.000000E+00 7.183628E-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.300798E-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.761785E-01 1.333333E+00
106 traj.climb2.states:altitude_2 c 3.000000E-01 8.378957E-01 1.333333E+00
107 traj.climb2.states:altitude_3 c 3.000000E-01 9.600603E-01 1.333333E+00
108 traj.climb2.states:altitude_4 c 3.000000E-01 1.081704E+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.153032E+00 6.666667E+15
114 traj.climb2.states:mass_1 c 0.000000E+00 1.150381E+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.146380E+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.141956E+00 6.666667E+15
119 traj.climb2.states:mass_6 c 0.000000E+00 1.141218E+00 6.666667E+15
120 traj.climb2.states:mass_7 c 0.000000E+00 1.139553E+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.136809E+00 6.666667E+15
123 traj.climb2.states:distance_0 c 2.000000E-02 5.540064E-02 2.000000E+00
124 traj.climb2.states:distance_1 c 2.000000E-02 9.315077E-02 2.000000E+00
125 traj.climb2.states:distance_2 c 2.000000E-02 1.060129E-01 2.000000E+00
126 traj.climb2.states:distance_3 c 2.000000E-02 1.370027E-01 2.000000E+00
127 traj.climb2.states:distance_4 c 2.000000E-02 1.827679E-01 2.000000E+00
128 traj.climb2.states:distance_5 c 2.000000E-02 1.978463E-01 2.000000E+00
129 traj.climb2.states:distance_6 c 2.000000E-02 2.336256E-01 2.000000E+00
130 traj.climb2.states:distance_7 c 2.000000E-02 2.824071E-01 2.000000E+00
131 traj.climb2.states:distance_8 c 2.000000E-02 2.966813E-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.752070E-01 -2.000000E-05
134 traj.desc1.t_duration_0 c 5.000000E-01 9.564293E-01 1.500000E+00
135 traj.desc1.states:altitude_0 c 3.333333E-02 1.252986E+00 1.333333E+00
136 traj.desc1.states:altitude_1 c 3.333333E-02 1.162431E+00 1.333333E+00
137 traj.desc1.states:altitude_2 c 3.333333E-02 1.031396E+00 1.333333E+00
138 traj.desc1.states:altitude_3 c 3.333333E-02 9.874902E-01 1.333333E+00
139 traj.desc1.states:altitude_4 c 3.333333E-02 8.813402E-01 1.333333E+00
140 traj.desc1.states:altitude_5 c 3.333333E-02 7.159109E-01 1.333333E+00
141 traj.desc1.states:altitude_6 c 3.333333E-02 6.574230E-01 1.333333E+00
142 traj.desc1.states:altitude_7 c 3.333333E-02 5.355589E-01 1.333333E+00
143 traj.desc1.states:altitude_8 c 3.333333E-02 3.799086E-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.768643E-01 7.142857E+15
146 traj.desc1.states:mass_1 c 0.000000E+00 9.768027E-01 7.142857E+15
147 traj.desc1.states:mass_2 c 0.000000E+00 9.767044E-01 7.142857E+15
148 traj.desc1.states:mass_3 c 0.000000E+00 9.766698E-01 7.142857E+15
149 traj.desc1.states:mass_4 c 0.000000E+00 9.765824E-01 7.142857E+15
150 traj.desc1.states:mass_5 c 0.000000E+00 9.764406E-01 7.142857E+15
151 traj.desc1.states:mass_6 c 0.000000E+00 9.763897E-01 7.142857E+15
152 traj.desc1.states:mass_7 c 0.000000E+00 9.762661E-01 7.142857E+15
153 traj.desc1.states:mass_8 c 0.000000E+00 9.760767E-01 7.142857E+15
154 traj.desc1.states:mass_9 c 0.000000E+00 9.760120E-01 7.142857E+15
155 traj.desc1.states:distance_0 c 8.163265E-01 9.735222E-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.837315E-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.789388E-13 1.111111E+00
172 traj.desc2.states:mass_0 c 0.000000E+00 9.109445E-01 6.666667E+15
173 traj.desc2.states:mass_1 c 0.000000E+00 9.108854E-01 6.666667E+15
174 traj.desc2.states:mass_2 c 0.000000E+00 9.107534E-01 6.666667E+15
175 traj.desc2.states:mass_3 c 0.000000E+00 9.105675E-01 6.666667E+15
176 traj.desc2.states:mass_4 c 0.000000E+00 9.103599E-01 6.666667E+15
177 traj.desc2.states:mass_5 c 0.000000E+00 9.101732E-01 6.666667E+15
178 traj.desc2.states:mass_6 c 0.000000E+00 9.100512E-01 6.666667E+15
179 traj.desc2.states:mass_7 c 0.000000E+00 9.100205E-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.178546E-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.158440E+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.157872E+00 6.666667E+15
195 traj.groundroll.states:distance_0 c 0.000000E+00 2.206643E-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.606287E+00 3.333333E+00
198 traj.rotation.t_duration_0 c 1.980198E-02 6.003341E-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.977553E-02 1.000000E+00
201 traj.rotation.states:alpha_2 c 0.000000E+00 3.523948E-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.157872E+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.157809E+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.018425E+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.121407E+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.339231E-09 0.000000E+00 9.00000E+100
1 h_fit.h_init_gear e 1.000000E+00 -3.086771E+02 1.000000E+00 E 9.00000E+100
2 h_fit.h_init_flaps e 1.000000E+00 -1.980409E+01 1.000000E+00 E 9.00000E+100
3 groundroll_boundary.velocity e 0.000000E+00 3.233186E-06 0.000000E+00 E 9.00000E+100
4 gtow_constraint.GTOW e 0.000000E+00 -4.446225E-08 0.000000E+00 9.00000E+100
5 mission:constraints:mass_residual e 0.000000E+00 8.752920E-07 0.000000E+00 9.00000E+100
6 taxi_groundroll_mass_constraint.mass e 0.000000E+00 -4.719623E-10 0.000000E+00 9.00000E+100
7 traj.linkages.groundroll:mass_final|rotation:mass_initial e 0.000000E+00 -2.002344E-08 0.000000E+00 9.00000E+100
8 traj.linkages.rotation:mass_final|ascent:mass_initial e 0.000000E+00 -1.213048E-06 0.000000E+00 E 9.00000E+100
9 traj.linkages.rotation:alpha_final|ascent:alpha_initial e 0.000000E+00 3.162897E-07 0.000000E+00 9.00000E+100
10 traj.linkages.ascent:mass_final|accel:mass_initial e 0.000000E+00 -1.929147E-06 0.000000E+00 E 9.00000E+100
11 traj.linkages.accel:mass_final|climb1:mass_initial e 0.000000E+00 -1.931359E-06 0.000000E+00 E 9.00000E+100
12 traj.linkages.climb1:mass_final|climb2:mass_initial e 0.000000E+00 -1.947017E-06 0.000000E+00 E 9.00000E+100
13 traj.linkages.climb2:mass_final|cruise:mass_initial e 0.000000E+00 -9.274288E-08 0.000000E+00 9.00000E+100
14 traj.linkages.cruise:mass_final|desc1:mass_initial e 0.000000E+00 -1.153342E-07 0.000000E+00 9.00000E+100
15 traj.linkages.desc1:mass_final|desc2:mass_initial e 0.000000E+00 -2.593239E-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.468443E-03 0.000000E+00 E 9.00000E+100
18 traj.accel.collocation_constraint.defects:velocity e 0.000000E+00 -1.298706E-04 0.000000E+00 E 9.00000E+100
19 traj.accel.collocation_constraint.defects:velocity e 0.000000E+00 2.483256E-05 0.000000E+00 E 9.00000E+100
20 traj.accel.collocation_constraint.defects:mass e 0.000000E+00 -8.104838E-07 0.000000E+00 9.00000E+100
21 traj.accel.collocation_constraint.defects:mass e 0.000000E+00 -3.733995E-07 0.000000E+00 9.00000E+100
22 traj.accel.collocation_constraint.defects:mass e 0.000000E+00 9.671364E-08 0.000000E+00 9.00000E+100
23 traj.accel.collocation_constraint.defects:distance e 0.000000E+00 5.888798E-03 0.000000E+00 E 9.00000E+100
24 traj.accel.collocation_constraint.defects:distance e 0.000000E+00 3.267157E-03 0.000000E+00 E 9.00000E+100
25 traj.accel.collocation_constraint.defects:distance e 0.000000E+00 1.345127E-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.380588E-02 0.000000E+00 E 9.00000E+100
28 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 4.441502E-02 0.000000E+00 E 9.00000E+100
29 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 3.852853E-02 0.000000E+00 E 9.00000E+100
30 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 4.923485E-02 0.000000E+00 E 9.00000E+100
31 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 7.504211E-02 0.000000E+00 E 9.00000E+100
32 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 7.823026E-02 0.000000E+00 E 9.00000E+100
33 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 7.088502E-02 0.000000E+00 E 9.00000E+100
34 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 5.663337E-02 0.000000E+00 E 9.00000E+100
35 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 6.085253E-02 0.000000E+00 E 9.00000E+100
36 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 6.841647E-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.066423E-02 0.000000E+00 E 9.00000E+100
41 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -2.618571E-02 0.000000E+00 E 9.00000E+100
42 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -3.386275E-02 0.000000E+00 E 9.00000E+100
43 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -3.403205E-02 0.000000E+00 E 9.00000E+100
44 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.996436E-02 0.000000E+00 E 9.00000E+100
45 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.653011E-02 0.000000E+00 E 9.00000E+100
46 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.616557E-02 0.000000E+00 E 9.00000E+100
47 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -2.054336E-02 0.000000E+00 E 9.00000E+100
48 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.961196E-02 0.000000E+00 E 9.00000E+100
49 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.112073E-02 0.000000E+00 E 9.00000E+100
50 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.411185E-02 0.000000E+00 E 9.00000E+100
51 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -3.529893E-02 0.000000E+00 E 9.00000E+100
52 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -3.526182E-03 0.000000E+00 E 9.00000E+100
53 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 7.046939E-03 0.000000E+00 E 9.00000E+100
54 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 9.630025E-03 0.000000E+00 E 9.00000E+100
55 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 8.878051E-03 0.000000E+00 E 9.00000E+100
56 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 3.749255E-03 0.000000E+00 E 9.00000E+100
57 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 2.754617E-03 0.000000E+00 E 9.00000E+100
58 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 2.922929E-03 0.000000E+00 E 9.00000E+100
59 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 3.857964E-03 0.000000E+00 E 9.00000E+100
60 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 3.183320E-03 0.000000E+00 E 9.00000E+100
61 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 6.987370E-08 0.000000E+00 9.00000E+100
62 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 1.857271E-03 0.000000E+00 E 9.00000E+100
63 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 5.604715E-07 0.000000E+00 9.00000E+100
64 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 6.958456E-07 0.000000E+00 9.00000E+100
65 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 6.342270E-07 0.000000E+00 9.00000E+100
66 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 5.631619E-07 0.000000E+00 9.00000E+100
67 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 5.751541E-07 0.000000E+00 9.00000E+100
68 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 4.688021E-07 0.000000E+00 9.00000E+100
69 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 3.942806E-07 0.000000E+00 9.00000E+100
70 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 4.523793E-07 0.000000E+00 9.00000E+100
71 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 3.770889E-07 0.000000E+00 9.00000E+100
72 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 2.963444E-07 0.000000E+00 9.00000E+100
73 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 3.841670E-07 0.000000E+00 9.00000E+100
74 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 3.512489E-07 0.000000E+00 9.00000E+100
75 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 2.386474E-03 0.000000E+00 E 9.00000E+100
76 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 7.107478E-04 0.000000E+00 E 9.00000E+100
77 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 4.036369E-04 0.000000E+00 E 9.00000E+100
78 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 3.359941E-04 0.000000E+00 E 9.00000E+100
79 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 3.495031E-04 0.000000E+00 E 9.00000E+100
80 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.236004E-04 0.000000E+00 E 9.00000E+100
81 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -4.328531E-04 0.000000E+00 E 9.00000E+100
82 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.097208E-03 0.000000E+00 E 9.00000E+100
83 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.995747E-03 0.000000E+00 E 9.00000E+100
84 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -2.300813E-03 0.000000E+00 E 9.00000E+100
85 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -3.335204E-03 0.000000E+00 E 9.00000E+100
86 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -4.776637E-03 0.000000E+00 E 9.00000E+100
87 traj.ascent.continuity_comp.defect_control_rates:alpha_rate e 0.000000E+00 -3.828739E-09 0.000000E+00 9.00000E+100
88 traj.ascent.continuity_comp.defect_control_rates:alpha_rate e 0.000000E+00 3.551259E-09 0.000000E+00 9.00000E+100
89 traj.ascent.continuity_comp.defect_control_rates:alpha_rate e 0.000000E+00 2.607886E-09 0.000000E+00 9.00000E+100
90 traj.ascent.continuity_comp.defect_controls:alpha e 0.000000E+00 -7.029350E-09 0.000000E+00 9.00000E+100
91 traj.ascent.continuity_comp.defect_controls:alpha e 0.000000E+00 2.381265E-08 0.000000E+00 9.00000E+100
92 traj.ascent.continuity_comp.defect_controls:alpha e 0.000000E+00 6.787624E-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.246737E-04 0.000000E+00 E 9.00000E+100
95 traj.climb1.collocation_constraint.defects:altitude e 0.000000E+00 3.522430E-04 0.000000E+00 E 9.00000E+100
96 traj.climb1.collocation_constraint.defects:altitude e 0.000000E+00 -2.419770E-04 0.000000E+00 E 9.00000E+100
97 traj.climb1.collocation_constraint.defects:mass e 0.000000E+00 -2.264635E-06 0.000000E+00 E 9.00000E+100
98 traj.climb1.collocation_constraint.defects:mass e 0.000000E+00 -2.438166E-06 0.000000E+00 E 9.00000E+100
99 traj.climb1.collocation_constraint.defects:mass e 0.000000E+00 -8.819609E-07 0.000000E+00 9.00000E+100
100 traj.climb1.collocation_constraint.defects:distance e 0.000000E+00 -5.525501E-04 0.000000E+00 E 9.00000E+100
101 traj.climb1.collocation_constraint.defects:distance e 0.000000E+00 -7.368944E-04 0.000000E+00 E 9.00000E+100
102 traj.climb1.collocation_constraint.defects:distance e 0.000000E+00 -3.942347E-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.862122E-04 0.000000E+00 E 9.00000E+100
106 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -5.370158E-03 0.000000E+00 E 9.00000E+100
107 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -6.525680E-03 0.000000E+00 E 9.00000E+100
108 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 4.017970E-03 0.000000E+00 E 9.00000E+100
109 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -1.221756E-02 0.000000E+00 E 9.00000E+100
110 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -1.292811E-02 0.000000E+00 E 9.00000E+100
111 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 4.257274E-03 0.000000E+00 E 9.00000E+100
112 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 7.143553E-03 0.000000E+00 E 9.00000E+100
113 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -2.613191E-03 0.000000E+00 E 9.00000E+100
114 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 2.885273E-08 0.000000E+00 9.00000E+100
115 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 5.217549E-05 0.000000E+00 E 9.00000E+100
116 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 1.342084E-04 0.000000E+00 E 9.00000E+100
117 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 -1.668851E-05 0.000000E+00 E 9.00000E+100
118 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 8.423163E-05 0.000000E+00 E 9.00000E+100
119 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 1.048530E-04 0.000000E+00 E 9.00000E+100
120 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 1.798120E-05 0.000000E+00 E 9.00000E+100
121 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 -2.569334E-05 0.000000E+00 E 9.00000E+100
122 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 2.065858E-05 0.000000E+00 E 9.00000E+100
123 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 4.938537E-07 0.000000E+00 9.00000E+100
124 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 2.195861E-04 0.000000E+00 E 9.00000E+100
125 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 3.184959E-04 0.000000E+00 E 9.00000E+100
126 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 3.216567E-04 0.000000E+00 E 9.00000E+100
127 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 3.463061E-04 0.000000E+00 E 9.00000E+100
128 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 3.716600E-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.360768E-03 0.000000E+00 E 9.00000E+100
131 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -2.039447E-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.876317E-05 0.000000E+00 E 9.00000E+100
134 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -7.524102E-05 0.000000E+00 E 9.00000E+100
135 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -3.262016E-04 0.000000E+00 E 9.00000E+100
136 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -3.705867E-04 0.000000E+00 E 9.00000E+100
137 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -5.653523E-04 0.000000E+00 E 9.00000E+100
138 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -2.570404E-03 0.000000E+00 E 9.00000E+100
139 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 1.061086E-04 0.000000E+00 E 9.00000E+100
140 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -5.977968E-05 0.000000E+00 E 9.00000E+100
141 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -1.162143E-04 0.000000E+00 E 9.00000E+100
142 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -9.170243E-09 0.000000E+00 9.00000E+100
143 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -1.579846E-07 0.000000E+00 9.00000E+100
144 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -1.969204E-07 0.000000E+00 9.00000E+100
145 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -7.753502E-07 0.000000E+00 9.00000E+100
146 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -7.751802E-07 0.000000E+00 9.00000E+100
147 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -8.011385E-07 0.000000E+00 9.00000E+100
148 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -2.684238E-07 0.000000E+00 9.00000E+100
149 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 7.502331E-08 0.000000E+00 9.00000E+100
150 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 1.383907E-07 0.000000E+00 9.00000E+100
151 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 1.037309E-03 0.000000E+00 E 9.00000E+100
152 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 2.635459E-04 0.000000E+00 E 9.00000E+100
153 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 3.128955E-05 0.000000E+00 E 9.00000E+100
154 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 9.061311E-05 0.000000E+00 E 9.00000E+100
155 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 9.393807E-05 0.000000E+00 E 9.00000E+100
156 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 5.604308E-04 0.000000E+00 E 9.00000E+100
157 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 -1.596787E-04 0.000000E+00 E 9.00000E+100
158 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 -3.976715E-05 0.000000E+00 E 9.00000E+100
159 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 5.055846E-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.787083E-05 0.000000E+00 E 9.00000E+100
162 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 1.655716E-04 0.000000E+00 E 9.00000E+100
163 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 3.146944E-04 0.000000E+00 E 9.00000E+100
164 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 3.387977E-04 0.000000E+00 E 9.00000E+100
165 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 3.234400E-04 0.000000E+00 E 9.00000E+100
166 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 1.845838E-04 0.000000E+00 E 9.00000E+100
167 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 5.872367E-05 0.000000E+00 E 9.00000E+100
168 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 7.056639E-09 0.000000E+00 9.00000E+100
169 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -7.710483E-08 0.000000E+00 9.00000E+100
170 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -2.657978E-07 0.000000E+00 9.00000E+100
171 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -1.364348E-07 0.000000E+00 9.00000E+100
172 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -3.511706E-07 0.000000E+00 9.00000E+100
173 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -2.024784E-07 0.000000E+00 9.00000E+100
174 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -3.130815E-08 0.000000E+00 9.00000E+100
175 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 5.402288E-08 0.000000E+00 9.00000E+100
176 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -2.643903E-05 0.000000E+00 E 9.00000E+100
177 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -6.616249E-05 0.000000E+00 E 9.00000E+100
178 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -8.608755E-05 0.000000E+00 E 9.00000E+100
179 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -7.252548E-05 0.000000E+00 E 9.00000E+100
180 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -3.832815E-05 0.000000E+00 E 9.00000E+100
181 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -8.281351E-06 0.000000E+00 E 9.00000E+100
182 traj.groundroll.collocation_constraint.defects:velocity e 0.000000E+00 -6.307679E-05 0.000000E+00 E 9.00000E+100
183 traj.groundroll.collocation_constraint.defects:velocity e 0.000000E+00 -9.838219E-04 0.000000E+00 E 9.00000E+100
184 traj.groundroll.collocation_constraint.defects:velocity e 0.000000E+00 -9.003263E-04 0.000000E+00 E 9.00000E+100
185 traj.groundroll.collocation_constraint.defects:mass e 0.000000E+00 -1.643174E-09 0.000000E+00 9.00000E+100
186 traj.groundroll.collocation_constraint.defects:mass e 0.000000E+00 -4.282089E-08 0.000000E+00 9.00000E+100
187 traj.groundroll.collocation_constraint.defects:mass e 0.000000E+00 -7.772175E-08 0.000000E+00 9.00000E+100
188 traj.groundroll.collocation_constraint.defects:distance e 0.000000E+00 -1.325661E-09 0.000000E+00 9.00000E+100
189 traj.groundroll.collocation_constraint.defects:distance e 0.000000E+00 8.285931E-03 0.000000E+00 E 9.00000E+100
190 traj.groundroll.collocation_constraint.defects:distance e 0.000000E+00 6.933412E-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.133744E-08 0.000000E+00 9.00000E+100
193 traj.rotation.collocation_constraint.defects:alpha e 0.000000E+00 -3.269114E-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.865232E-04 0.000000E+00 E 9.00000E+100
196 traj.rotation.collocation_constraint.defects:velocity e 0.000000E+00 -5.240976E-04 0.000000E+00 E 9.00000E+100
197 traj.rotation.collocation_constraint.defects:velocity e 0.000000E+00 2.298620E-04 0.000000E+00 E 9.00000E+100
198 traj.rotation.collocation_constraint.defects:mass e 0.000000E+00 -2.274859E-08 0.000000E+00 9.00000E+100
199 traj.rotation.collocation_constraint.defects:mass e 0.000000E+00 -2.287093E-08 0.000000E+00 9.00000E+100
200 traj.rotation.collocation_constraint.defects:mass e 0.000000E+00 -2.701219E-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.404092E-03 0.000000E+00 E 9.00000E+100
203 traj.rotation.collocation_constraint.defects:distance e 0.000000E+00 1.802070E-03 0.000000E+00 E 9.00000E+100
204 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 6.817837E-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.938312E-01 1.100000E+00 9.00000E+100
211 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 4.720772E-01 1.100000E+00 9.00000E+100
212 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 4.720773E-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.848590E-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.847496E-01 1.100000E+00 9.00000E+100
220 traj.phases.ascent->path_constraint->theta i 0.000000E+00 8.595349E+00 1.500000E+01 9.00000E+100
221 traj.phases.ascent->path_constraint->theta i 0.000000E+00 4.270905E+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.471690E+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.638550E+00 1.500000E+01 9.00000E+100
227 traj.phases.ascent->path_constraint->theta i 0.000000E+00 6.894010E+00 1.500000E+01 9.00000E+100
228 traj.phases.ascent->path_constraint->theta i 0.000000E+00 6.894011E+00 1.500000E+01 9.00000E+100
229 traj.phases.ascent->path_constraint->theta i 0.000000E+00 7.008538E+00 1.500000E+01 9.00000E+100
230 traj.phases.ascent->path_constraint->theta i 0.000000E+00 7.967320E+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.742035E+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.814230E+00 1.500000E+01 9.00000E+100
236 traj.phases.climb2->final_boundary_constraint->altitude_rate i 1.000000E-01 3.482176E+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] [--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
, andNone
. The default isSNOPT
. If optimizer isNone
, it will be set toIPOPT
orSNOPT
depending on the analysis scheme. The optimization objective is fuel burn for level 1 runs. The objective ismission:objectives:fuel
ifmission_method
isGASP
fuel_burned
ifmission_method
isFLOPS
.
--phase_info
: Path to phase info file. If not provided, it isdefault_phase_info/gasp.py
if Mission origin is2DOF
anddefault_phase_info/flops.py
forsimple
.--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:272: 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 4000 ft**2
'aircraft:horizontal_tail:form_factor 1.25 unitless
'aircraft:nacelle:form_factor [1.5] unitless
'aircraft:strut:fuselage_interference_factor 0 unitless
'aircraft:vertical_tail:form_factor 1.25 unitless
'aircraft:wing:form_factor 1.25 unitless
'aircraft:wing:slat_span_ratio 0.9 unitless
'aircraft:wing:slat_span_ratio 0.9 unitless
'aircraft:wing:slat_span_ratio 0.9 unitless
--- 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 1.9517920480000157 seconds.
Total jacobian shape: (238, 212)
Jacobian shape: (238, 212) (7.98% nonzero)
FWD solves: 48 REV solves: 0
Total colors vs. total size: 48 vs 212 (77.36% improvement)
Sparsity computed using tolerance: 1e-25
Time to compute sparsity: 1.9518 sec
Time to compute coloring: 0.1941 sec
Memory to compute coloring: 1.7500 MB
Coloring created on: 2024-11-19 19:08:30
This is Ipopt version 3.14.16, running with linear solver MUMPS 5.7.3.
Number of nonzeros in equality constraint Jacobian...: 2827
Number of nonzeros in inequality constraint Jacobian.: 599
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: 2
variables with lower and upper bounds: 210
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.65e+01 -5.0 0.00e+00 - 0.00e+00 0.00e+00 0
Number of Iterations....: 1
(scaled) (unscaled)
Objective...............: 4.4324244956057228e+00 4.4324244956057228e+00
Dual infeasibility......: 1.6269236229307300e+01 1.6269236229307300e+01
Constraint violation....: 5.3960681678079247e+01 3.1266793425703861e+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.385
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.3866
User Objective Time : 0.7017
User Sensitivity Time : 1.6560
Interface Time : 0.0173
Opt Solver Time: 0.0117
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.949400E-01 1.000000E+30
1 mission:summary:gross_mass_0 c 5.714286E-05 9.949401E-01 1.000000E+30
2 mission:takeoff:ascent_t_initial_0 c 0.000000E+00 5.640435E-01 3.333333E+00
3 mission:takeoff:ascent_duration_0 c 1.000000E-01 5.381946E-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.937074E-01 1.990050E+00
7 traj.accel.states:velocity_0 c 0.000000E+00 5.087767E-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.157678E+00 6.666667E+15
13 traj.accel.states:mass_3 c 0.000000E+00 1.157563E+00 6.666667E+15
14 traj.accel.states:distance_0 c 0.000000E+00 3.426183E-01 3.000000E+01
15 traj.accel.states:distance_1 c 0.000000E+00 5.213219E-01 3.000000E+01
16 traj.accel.states:distance_2 c 0.000000E+00 5.837222E-01 3.000000E+01
17 traj.ascent.states:flight_path_angle_0 c -9.999996E+00 -4.661612E-03 1.999999E+01
18 traj.ascent.states:flight_path_angle_1 c -9.999996E+00 -1.101081E-02 1.999999E+01
19 traj.ascent.states:flight_path_angle_2 c -9.999996E+00 -1.692642E-02 1.999999E+01
20 traj.ascent.states:flight_path_angle_3 c -9.999996E+00 -3.827509E-03 1.999999E+01
21 traj.ascent.states:flight_path_angle_4 c -9.999996E+00 3.551575E-02 1.999999E+01
22 traj.ascent.states:flight_path_angle_5 c -9.999996E+00 4.646793E-02 1.999999E+01
23 traj.ascent.states:flight_path_angle_6 c -9.999996E+00 6.072925E-02 1.999999E+01
24 traj.ascent.states:flight_path_angle_7 c -9.999996E+00 7.395937E-02 1.999999E+01
25 traj.ascent.states:flight_path_angle_8 c -9.999996E+00 8.144461E-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.147641E-01 1.999999E+01
29 traj.ascent.states:altitude_0 c 0.000000E+00 5.818861E-01 7.000000E-01
30 traj.ascent.states:altitude_1 c 0.000000E+00 5.778289E-01 7.000000E-01
31 traj.ascent.states:altitude_2 c 0.000000E+00 5.584362E-01 7.000000E-01
32 traj.ascent.states:altitude_3 c 0.000000E+00 5.488308E-01 7.000000E-01
33 traj.ascent.states:altitude_4 c 0.000000E+00 5.226584E-01 7.000000E-01
34 traj.ascent.states:altitude_5 c 0.000000E+00 4.973032E-01 7.000000E-01
35 traj.ascent.states:altitude_6 c 0.000000E+00 4.948501E-01 7.000000E-01
36 traj.ascent.states:altitude_7 c 0.000000E+00 4.906279E-01 7.000000E-01
37 traj.ascent.states:altitude_8 c 0.000000E+00 4.857746E-01 7.000000E-01
38 traj.ascent.states:altitude_9 c 0.000000E+00 4.834964E-01 7.000000E-01
39 traj.ascent.states:altitude_10 c 0.000000E+00 4.861717E-01 7.000000E-01
40 traj.ascent.states:altitude_11 c 0.000000E+00 4.975270E-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.903543E-01 3.500000E+00
44 traj.ascent.states:velocity_2 c 0.000000E+00 7.957055E-01 3.500000E+00
45 traj.ascent.states:velocity_3 c 0.000000E+00 8.108801E-01 3.500000E+00
46 traj.ascent.states:velocity_4 c 0.000000E+00 8.271775E-01 3.500000E+00
47 traj.ascent.states:velocity_5 c 0.000000E+00 8.304180E-01 3.500000E+00
48 traj.ascent.states:velocity_6 c 0.000000E+00 8.377378E-01 3.500000E+00
49 traj.ascent.states:velocity_7 c 0.000000E+00 8.474895E-01 3.500000E+00
50 traj.ascent.states:velocity_8 c 0.000000E+00 8.506111E-01 3.500000E+00
51 traj.ascent.states:velocity_9 c 0.000000E+00 8.547169E-01 3.500000E+00
52 traj.ascent.states:velocity_10 c 0.000000E+00 8.582484E-01 3.500000E+00
53 traj.ascent.states:velocity_11 c 0.000000E+00 8.601816E-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.158396E+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.158380E+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.158348E+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.158316E+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.740050E-01 1.500000E+00
68 traj.ascent.states:distance_1 c 0.000000E+00 5.916790E-01 1.500000E+00
69 traj.ascent.states:distance_2 c 0.000000E+00 5.974512E-01 1.500000E+00
70 traj.ascent.states:distance_3 c 0.000000E+00 6.106473E-01 1.500000E+00
71 traj.ascent.states:distance_4 c 0.000000E+00 6.290023E-01 1.500000E+00
72 traj.ascent.states:distance_5 c 0.000000E+00 6.347484E-01 1.500000E+00
73 traj.ascent.states:distance_6 c 0.000000E+00 6.476108E-01 1.500000E+00
74 traj.ascent.states:distance_7 c 0.000000E+00 6.647646E-01 1.500000E+00
75 traj.ascent.states:distance_8 c 0.000000E+00 6.700525E-01 1.500000E+00
76 traj.ascent.states:distance_9 c 0.000000E+00 6.817132E-01 1.500000E+00
77 traj.ascent.states:distance_10 c 0.000000E+00 6.966326E-01 1.500000E+00
78 traj.ascent.states:distance_11 c 0.000000E+00 7.010664E-01 1.500000E+00
79 traj.ascent.controls:alpha_0 c -6.000000E+00 2.021280E+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.882174E-01 6.000000E+00
83 traj.ascent.controls:alpha_4 c -6.000000E+00 1.217822E+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.147223E+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.046498E+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.801782E-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.170773E-02 1.100000E+00
93 traj.climb1.states:altitude_1 c 4.000000E-02 4.140256E-01 1.100000E+00
94 traj.climb1.states:altitude_2 c 4.000000E-02 8.659393E-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.157563E+00 6.666667E+15
97 traj.climb1.states:mass_1 c 0.000000E+00 1.156104E+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.186967E-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.302389E-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.763142E-01 1.333333E+00
106 traj.climb2.states:altitude_2 c 3.000000E-01 8.380422E-01 1.333333E+00
107 traj.climb2.states:altitude_3 c 3.000000E-01 9.602171E-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.147885E+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.145011E+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.140158E+00 6.666667E+15
121 traj.climb2.states:mass_8 c 0.000000E+00 1.138033E+00 6.666667E+15
122 traj.climb2.states:mass_9 c 0.000000E+00 1.137411E+00 6.666667E+15
123 traj.climb2.states:distance_0 c 2.000000E-02 5.544489E-02 2.000000E+00
124 traj.climb2.states:distance_1 c 2.000000E-02 9.323992E-02 2.000000E+00
125 traj.climb2.states:distance_2 c 2.000000E-02 1.061172E-01 2.000000E+00
126 traj.climb2.states:distance_3 c 2.000000E-02 1.371434E-01 2.000000E+00
127 traj.climb2.states:distance_4 c 2.000000E-02 1.829622E-01 2.000000E+00
128 traj.climb2.states:distance_5 c 2.000000E-02 1.980583E-01 2.000000E+00
129 traj.climb2.states:distance_6 c 2.000000E-02 2.338798E-01 2.000000E+00
130 traj.climb2.states:distance_7 c 2.000000E-02 2.827200E-01 2.000000E+00
131 traj.climb2.states:distance_8 c 2.000000E-02 2.970119E-01 2.000000E+00
132 traj.cruise.t_initial_0 c 0.000000E+00 1.706116E+00 1.000000E+02
133 traj.cruise.t_duration_0 c -2.000000E+02 -6.754283E-01 -2.000000E-05
134 traj.desc1.t_duration_0 c 5.000000E-01 9.564216E-01 1.500000E+00
135 traj.desc1.states:altitude_0 c 3.333333E-02 1.252803E+00 1.333333E+00
136 traj.desc1.states:altitude_1 c 3.333333E-02 1.162261E+00 1.333333E+00
137 traj.desc1.states:altitude_2 c 3.333333E-02 1.031241E+00 1.333333E+00
138 traj.desc1.states:altitude_3 c 3.333333E-02 9.873406E-01 1.333333E+00
139 traj.desc1.states:altitude_4 c 3.333333E-02 8.812032E-01 1.333333E+00
140 traj.desc1.states:altitude_5 c 3.333333E-02 7.158074E-01 1.333333E+00
141 traj.desc1.states:altitude_6 c 3.333333E-02 6.573387E-01 1.333333E+00
142 traj.desc1.states:altitude_7 c 3.333333E-02 5.355080E-01 1.333333E+00
143 traj.desc1.states:altitude_8 c 3.333333E-02 3.798973E-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.774301E-01 7.142857E+15
146 traj.desc1.states:mass_1 c 0.000000E+00 9.773685E-01 7.142857E+15
147 traj.desc1.states:mass_2 c 0.000000E+00 9.772701E-01 7.142857E+15
148 traj.desc1.states:mass_3 c 0.000000E+00 9.772355E-01 7.142857E+15
149 traj.desc1.states:mass_4 c 0.000000E+00 9.771481E-01 7.142857E+15
150 traj.desc1.states:mass_5 c 0.000000E+00 9.770063E-01 7.142857E+15
151 traj.desc1.states:mass_6 c 0.000000E+00 9.769554E-01 7.142857E+15
152 traj.desc1.states:mass_7 c 0.000000E+00 9.768318E-01 7.142857E+15
153 traj.desc1.states:mass_8 c 0.000000E+00 9.766424E-01 7.142857E+15
154 traj.desc1.states:mass_9 c 0.000000E+00 9.765776E-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.768116E-01 1.360544E+00
157 traj.desc1.states:distance_2 c 8.163265E-01 9.778673E-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.848320E-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.721269E-13 1.111111E+00
172 traj.desc2.states:mass_0 c 0.000000E+00 9.114725E-01 6.666667E+15
173 traj.desc2.states:mass_1 c 0.000000E+00 9.114134E-01 6.666667E+15
174 traj.desc2.states:mass_2 c 0.000000E+00 9.112813E-01 6.666667E+15
175 traj.desc2.states:mass_3 c 0.000000E+00 9.110954E-01 6.666667E+15
176 traj.desc2.states:mass_4 c 0.000000E+00 9.108878E-01 6.666667E+15
177 traj.desc2.states:mass_5 c 0.000000E+00 9.107010E-01 6.666667E+15
178 traj.desc2.states:mass_6 c 0.000000E+00 9.105790E-01 6.666667E+15
179 traj.desc2.states:mass_7 c 0.000000E+00 9.105483E-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.179110E-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.495797E-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.159374E+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.158635E+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.205491E-01 3.333333E+00
196 traj.groundroll.states:distance_1 c 0.000000E+00 1.170722E+00 3.333333E+00
197 traj.groundroll.states:distance_2 c 0.000000E+00 1.605525E+00 3.333333E+00
198 traj.rotation.t_duration_0 c 1.980198E-02 6.009913E-02 1.980198E+00
199 traj.rotation.states:alpha_0 c 0.000000E+00 1.252554E-02 1.000000E+00
200 traj.rotation.states:alpha_1 c 0.000000E+00 2.980813E-02 1.000000E+00
201 traj.rotation.states:alpha_2 c 0.000000E+00 3.527805E-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.158471E+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.095815E+00 2.000000E+00
211 traj.rotation.states:distance_2 c 0.000000E+00 1.121004E+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.334411E-09 0.000000E+00 9.00000E+100
1 h_fit.h_init_gear e 1.000000E+00 -3.116679E+02 1.000000E+00 E 9.00000E+100
2 h_fit.h_init_flaps e 1.000000E+00 -2.005566E+01 1.000000E+00 E 9.00000E+100
3 groundroll_boundary.velocity e 0.000000E+00 3.954634E-06 0.000000E+00 E 9.00000E+100
4 gtow_constraint.GTOW e 0.000000E+00 -4.359001E-08 0.000000E+00 9.00000E+100
5 mission:constraints:mass_residual e 0.000000E+00 7.811995E-07 0.000000E+00 9.00000E+100
6 taxi_groundroll_mass_constraint.mass e 0.000000E+00 -5.268608E-10 0.000000E+00 9.00000E+100
7 traj.linkages.groundroll:mass_final|rotation:mass_initial e 0.000000E+00 -7.479684E-09 0.000000E+00 9.00000E+100
8 traj.linkages.rotation:mass_final|ascent:mass_initial e 0.000000E+00 -1.202308E-06 0.000000E+00 E 9.00000E+100
9 traj.linkages.rotation:alpha_final|ascent:alpha_initial e 0.000000E+00 3.167678E-07 0.000000E+00 9.00000E+100
10 traj.linkages.ascent:mass_final|accel:mass_initial e 0.000000E+00 -1.919630E-06 0.000000E+00 E 9.00000E+100
11 traj.linkages.accel:mass_final|climb1:mass_initial e 0.000000E+00 -1.921871E-06 0.000000E+00 E 9.00000E+100
12 traj.linkages.climb1:mass_final|climb2:mass_initial e 0.000000E+00 -1.937617E-06 0.000000E+00 E 9.00000E+100
13 traj.linkages.climb2:mass_final|cruise:mass_initial e 0.000000E+00 -9.238558E-08 0.000000E+00 9.00000E+100
14 traj.linkages.cruise:mass_final|desc1:mass_initial e 0.000000E+00 -1.148909E-07 0.000000E+00 9.00000E+100
15 traj.linkages.desc1:mass_final|desc2:mass_initial e 0.000000E+00 -2.583402E-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.554564E-03 0.000000E+00 E 9.00000E+100
18 traj.accel.collocation_constraint.defects:velocity e 0.000000E+00 -6.758101E-05 0.000000E+00 E 9.00000E+100
19 traj.accel.collocation_constraint.defects:velocity e 0.000000E+00 8.149536E-05 0.000000E+00 E 9.00000E+100
20 traj.accel.collocation_constraint.defects:mass e 0.000000E+00 -8.190637E-07 0.000000E+00 9.00000E+100
21 traj.accel.collocation_constraint.defects:mass e 0.000000E+00 -3.797193E-07 0.000000E+00 9.00000E+100
22 traj.accel.collocation_constraint.defects:mass e 0.000000E+00 9.524343E-08 0.000000E+00 9.00000E+100
23 traj.accel.collocation_constraint.defects:distance e 0.000000E+00 5.948024E-03 0.000000E+00 E 9.00000E+100
24 traj.accel.collocation_constraint.defects:distance e 0.000000E+00 3.303815E-03 0.000000E+00 E 9.00000E+100
25 traj.accel.collocation_constraint.defects:distance e 0.000000E+00 7.854028E-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.373138E-02 0.000000E+00 E 9.00000E+100
28 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 4.434078E-02 0.000000E+00 E 9.00000E+100
29 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 3.844652E-02 0.000000E+00 E 9.00000E+100
30 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 4.917826E-02 0.000000E+00 E 9.00000E+100
31 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 7.504416E-02 0.000000E+00 E 9.00000E+100
32 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 7.824419E-02 0.000000E+00 E 9.00000E+100
33 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 7.088478E-02 0.000000E+00 E 9.00000E+100
34 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 5.660375E-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.840206E-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.069322E-02 0.000000E+00 E 9.00000E+100
41 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -2.625900E-02 0.000000E+00 E 9.00000E+100
42 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -3.395272E-02 0.000000E+00 E 9.00000E+100
43 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -3.412459E-02 0.000000E+00 E 9.00000E+100
44 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -2.002925E-02 0.000000E+00 E 9.00000E+100
45 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.658839E-02 0.000000E+00 E 9.00000E+100
46 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.622542E-02 0.000000E+00 E 9.00000E+100
47 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -2.062125E-02 0.000000E+00 E 9.00000E+100
48 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.969300E-02 0.000000E+00 E 9.00000E+100
49 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.119864E-02 0.000000E+00 E 9.00000E+100
50 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.420163E-02 0.000000E+00 E 9.00000E+100
51 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -3.536854E-02 0.000000E+00 E 9.00000E+100
52 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -3.546748E-03 0.000000E+00 E 9.00000E+100
53 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 7.047652E-03 0.000000E+00 E 9.00000E+100
54 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 9.635210E-03 0.000000E+00 E 9.00000E+100
55 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 8.880909E-03 0.000000E+00 E 9.00000E+100
56 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 3.740554E-03 0.000000E+00 E 9.00000E+100
57 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 2.743798E-03 0.000000E+00 E 9.00000E+100
58 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 2.912463E-03 0.000000E+00 E 9.00000E+100
59 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 3.851125E-03 0.000000E+00 E 9.00000E+100
60 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 3.176400E-03 0.000000E+00 E 9.00000E+100
61 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -9.448193E-06 0.000000E+00 E 9.00000E+100
62 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 1.851606E-03 0.000000E+00 E 9.00000E+100
63 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 5.626286E-07 0.000000E+00 9.00000E+100
64 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 6.975971E-07 0.000000E+00 9.00000E+100
65 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 6.361225E-07 0.000000E+00 9.00000E+100
66 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 5.653801E-07 0.000000E+00 9.00000E+100
67 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 5.766760E-07 0.000000E+00 9.00000E+100
68 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 4.706299E-07 0.000000E+00 9.00000E+100
69 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 3.964531E-07 0.000000E+00 9.00000E+100
70 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 4.539965E-07 0.000000E+00 9.00000E+100
71 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 3.788161E-07 0.000000E+00 9.00000E+100
72 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 2.983768E-07 0.000000E+00 9.00000E+100
73 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 3.856084E-07 0.000000E+00 9.00000E+100
74 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 3.527447E-07 0.000000E+00 9.00000E+100
75 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 2.361240E-03 0.000000E+00 E 9.00000E+100
76 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 6.814724E-04 0.000000E+00 E 9.00000E+100
77 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 3.727639E-04 0.000000E+00 E 9.00000E+100
78 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 3.048201E-04 0.000000E+00 E 9.00000E+100
79 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 3.179379E-04 0.000000E+00 E 9.00000E+100
80 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.565434E-04 0.000000E+00 E 9.00000E+100
81 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -4.665260E-04 0.000000E+00 E 9.00000E+100
82 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.132356E-03 0.000000E+00 E 9.00000E+100
83 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -2.032505E-03 0.000000E+00 E 9.00000E+100
84 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -2.337979E-03 0.000000E+00 E 9.00000E+100
85 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -3.373591E-03 0.000000E+00 E 9.00000E+100
86 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -4.816424E-03 0.000000E+00 E 9.00000E+100
87 traj.ascent.continuity_comp.defect_control_rates:alpha_rate e 0.000000E+00 -3.835902E-09 0.000000E+00 9.00000E+100
88 traj.ascent.continuity_comp.defect_control_rates:alpha_rate e 0.000000E+00 3.558230E-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.039879E-09 0.000000E+00 9.00000E+100
91 traj.ascent.continuity_comp.defect_controls:alpha e 0.000000E+00 2.385392E-08 0.000000E+00 9.00000E+100
92 traj.ascent.continuity_comp.defect_controls:alpha e 0.000000E+00 6.792301E-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.194930E-04 0.000000E+00 E 9.00000E+100
95 traj.climb1.collocation_constraint.defects:altitude e 0.000000E+00 4.474433E-04 0.000000E+00 E 9.00000E+100
96 traj.climb1.collocation_constraint.defects:altitude e 0.000000E+00 -1.510683E-04 0.000000E+00 E 9.00000E+100
97 traj.climb1.collocation_constraint.defects:mass e 0.000000E+00 -2.270692E-06 0.000000E+00 E 9.00000E+100
98 traj.climb1.collocation_constraint.defects:mass e 0.000000E+00 -2.444449E-06 0.000000E+00 E 9.00000E+100
99 traj.climb1.collocation_constraint.defects:mass e 0.000000E+00 -8.844140E-07 0.000000E+00 9.00000E+100
100 traj.climb1.collocation_constraint.defects:distance e 0.000000E+00 -5.560644E-04 0.000000E+00 E 9.00000E+100
101 traj.climb1.collocation_constraint.defects:distance e 0.000000E+00 -7.404675E-04 0.000000E+00 E 9.00000E+100
102 traj.climb1.collocation_constraint.defects:distance e 0.000000E+00 -3.966639E-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.241949E-04 0.000000E+00 E 9.00000E+100
106 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -5.388832E-03 0.000000E+00 E 9.00000E+100
107 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -6.521286E-03 0.000000E+00 E 9.00000E+100
108 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 4.038067E-03 0.000000E+00 E 9.00000E+100
109 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -1.220601E-02 0.000000E+00 E 9.00000E+100
110 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -1.289389E-02 0.000000E+00 E 9.00000E+100
111 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 4.298695E-03 0.000000E+00 E 9.00000E+100
112 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 7.175229E-03 0.000000E+00 E 9.00000E+100
113 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -2.617942E-03 0.000000E+00 E 9.00000E+100
114 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 2.871317E-08 0.000000E+00 9.00000E+100
115 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 5.192189E-05 0.000000E+00 E 9.00000E+100
116 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 1.339139E-04 0.000000E+00 E 9.00000E+100
117 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 -1.718757E-05 0.000000E+00 E 9.00000E+100
118 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 8.383085E-05 0.000000E+00 E 9.00000E+100
119 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 1.045243E-04 0.000000E+00 E 9.00000E+100
120 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 1.751269E-05 0.000000E+00 E 9.00000E+100
121 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 -2.610579E-05 0.000000E+00 E 9.00000E+100
122 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 2.051789E-05 0.000000E+00 E 9.00000E+100
123 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 5.338389E-07 0.000000E+00 9.00000E+100
124 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 2.175770E-04 0.000000E+00 E 9.00000E+100
125 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 3.140982E-04 0.000000E+00 E 9.00000E+100
126 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 3.166654E-04 0.000000E+00 E 9.00000E+100
127 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 3.404170E-04 0.000000E+00 E 9.00000E+100
128 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 3.660118E-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.363603E-03 0.000000E+00 E 9.00000E+100
131 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -2.040859E-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.553877E-05 0.000000E+00 E 9.00000E+100
134 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -7.766833E-05 0.000000E+00 E 9.00000E+100
135 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -3.280331E-04 0.000000E+00 E 9.00000E+100
136 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -3.724800E-04 0.000000E+00 E 9.00000E+100
137 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -5.670383E-04 0.000000E+00 E 9.00000E+100
138 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -2.548640E-03 0.000000E+00 E 9.00000E+100
139 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 9.920698E-05 0.000000E+00 E 9.00000E+100
140 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -6.540141E-05 0.000000E+00 E 9.00000E+100
141 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -1.207405E-04 0.000000E+00 E 9.00000E+100
142 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -6.549438E-09 0.000000E+00 9.00000E+100
143 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -1.559656E-07 0.000000E+00 9.00000E+100
144 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -1.965308E-07 0.000000E+00 9.00000E+100
145 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -7.726168E-07 0.000000E+00 9.00000E+100
146 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -7.729140E-07 0.000000E+00 9.00000E+100
147 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -7.945934E-07 0.000000E+00 9.00000E+100
148 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 -2.670858E-07 0.000000E+00 9.00000E+100
149 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 7.530127E-08 0.000000E+00 9.00000E+100
150 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 1.381637E-07 0.000000E+00 9.00000E+100
151 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 -1.250383E-04 0.000000E+00 E 9.00000E+100
152 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 1.833032E-05 0.000000E+00 E 9.00000E+100
153 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 8.980267E-05 0.000000E+00 E 9.00000E+100
154 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 9.027954E-05 0.000000E+00 E 9.00000E+100
155 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 9.363568E-05 0.000000E+00 E 9.00000E+100
156 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 5.529445E-04 0.000000E+00 E 9.00000E+100
157 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 -1.589272E-04 0.000000E+00 E 9.00000E+100
158 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 -3.938716E-05 0.000000E+00 E 9.00000E+100
159 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 5.116862E-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.205991E-05 0.000000E+00 E 9.00000E+100
162 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 1.794880E-04 0.000000E+00 E 9.00000E+100
163 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 3.279978E-04 0.000000E+00 E 9.00000E+100
164 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 3.512789E-04 0.000000E+00 E 9.00000E+100
165 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 3.349842E-04 0.000000E+00 E 9.00000E+100
166 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 1.953341E-04 0.000000E+00 E 9.00000E+100
167 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 6.895148E-05 0.000000E+00 E 9.00000E+100
168 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 7.029860E-09 0.000000E+00 9.00000E+100
169 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -7.710577E-08 0.000000E+00 9.00000E+100
170 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -2.656113E-07 0.000000E+00 9.00000E+100
171 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -1.361354E-07 0.000000E+00 9.00000E+100
172 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -3.508890E-07 0.000000E+00 9.00000E+100
173 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -2.023463E-07 0.000000E+00 9.00000E+100
174 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 -3.132987E-08 0.000000E+00 9.00000E+100
175 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 6.499802E-08 0.000000E+00 9.00000E+100
176 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -2.639342E-05 0.000000E+00 E 9.00000E+100
177 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -6.606563E-05 0.000000E+00 E 9.00000E+100
178 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -8.596569E-05 0.000000E+00 E 9.00000E+100
179 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -7.242187E-05 0.000000E+00 E 9.00000E+100
180 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -3.826969E-05 0.000000E+00 E 9.00000E+100
181 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 -8.262866E-06 0.000000E+00 E 9.00000E+100
182 traj.groundroll.collocation_constraint.defects:velocity e 0.000000E+00 -9.911422E-05 0.000000E+00 E 9.00000E+100
183 traj.groundroll.collocation_constraint.defects:velocity e 0.000000E+00 -1.018402E-03 0.000000E+00 E 9.00000E+100
184 traj.groundroll.collocation_constraint.defects:velocity e 0.000000E+00 -9.244435E-04 0.000000E+00 E 9.00000E+100
185 traj.groundroll.collocation_constraint.defects:mass e 0.000000E+00 -1.825996E-09 0.000000E+00 9.00000E+100
186 traj.groundroll.collocation_constraint.defects:mass e 0.000000E+00 -4.349551E-08 0.000000E+00 9.00000E+100
187 traj.groundroll.collocation_constraint.defects:mass e 0.000000E+00 -7.757813E-08 0.000000E+00 9.00000E+100
188 traj.groundroll.collocation_constraint.defects:distance e 0.000000E+00 -1.323710E-09 0.000000E+00 9.00000E+100
189 traj.groundroll.collocation_constraint.defects:distance e 0.000000E+00 8.246847E-03 0.000000E+00 E 9.00000E+100
190 traj.groundroll.collocation_constraint.defects:distance e 0.000000E+00 6.863780E-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.145531E-08 0.000000E+00 9.00000E+100
193 traj.rotation.collocation_constraint.defects:alpha e 0.000000E+00 -3.274511E-07 0.000000E+00 9.00000E+100
194 traj.rotation.collocation_constraint.defects:alpha e 0.000000E+00 -2.373104E-07 0.000000E+00 9.00000E+100
195 traj.rotation.collocation_constraint.defects:velocity e 0.000000E+00 -3.979086E-04 0.000000E+00 E 9.00000E+100
196 traj.rotation.collocation_constraint.defects:velocity e 0.000000E+00 -5.353311E-04 0.000000E+00 E 9.00000E+100
197 traj.rotation.collocation_constraint.defects:velocity e 0.000000E+00 2.217014E-04 0.000000E+00 E 9.00000E+100
198 traj.rotation.collocation_constraint.defects:mass e 0.000000E+00 -2.240635E-08 0.000000E+00 9.00000E+100
199 traj.rotation.collocation_constraint.defects:mass e 0.000000E+00 -2.318956E-08 0.000000E+00 9.00000E+100
200 traj.rotation.collocation_constraint.defects:mass e 0.000000E+00 -2.709751E-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.379898E-03 0.000000E+00 E 9.00000E+100
203 traj.rotation.collocation_constraint.defects:distance e 0.000000E+00 1.777976E-03 0.000000E+00 E 9.00000E+100
204 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 6.818974E-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.720761E-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.847540E-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.606400E+00 1.500000E+01 9.00000E+100
221 traj.phases.ascent->path_constraint->theta i 0.000000E+00 4.274756E+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.471274E+00 1.500000E+01 9.00000E+100
225 traj.phases.ascent->path_constraint->theta i 0.000000E+00 4.369809E+00 1.500000E+01 9.00000E+100
226 traj.phases.ascent->path_constraint->theta i 0.000000E+00 6.643060E+00 1.500000E+01 9.00000E+100
227 traj.phases.ascent->path_constraint->theta i 0.000000E+00 6.898530E+00 1.500000E+01 9.00000E+100
228 traj.phases.ascent->path_constraint->theta i 0.000000E+00 6.898531E+00 1.500000E+01 9.00000E+100
229 traj.phases.ascent->path_constraint->theta i 0.000000E+00 7.012092E+00 1.500000E+01 9.00000E+100
230 traj.phases.ascent->path_constraint->theta i 0.000000E+00 7.970050E+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.745016E+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.525835E+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.471423E+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:897: 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:2323: 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:2323: 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:2323: 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:2323: 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:2323: 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:2323: 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 152800 lbm
'aircraft:engine:mass [7400.] lbm
'aircraft:fins:mass 0 lbm
'aircraft:fuel:auxiliary_fuel_capacity 0 lbm
'aircraft:fuel:fuselage_fuel_capacity 0 lbm
'aircraft:fuel:total_capacity 45694 lbm
'aircraft:fuselage:planform_area 1578.24 ft**2
'aircraft:fuselage:wetted_area 4158.62 ft**2
'aircraft:horizontal_tail:wetted_area 592.65 ft**2
'aircraft:landing_gear:main_gear_oleo_length 102 inch
'aircraft:landing_gear:nose_gear_oleo_length 67 inch
'aircraft:vertical_tail:wetted_area 581.13 ft**2
'aircraft:wing:aspect_ratio 11.22091 unitless
'aircraft:wing:control_surface_area 137 ft**2
'aircraft:wing:wetted_area 2396.56 ft**2
--- 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.6638707189999877 seconds.
Total jacobian shape: (137, 96)
Jacobian shape: (137, 96) (7.79% nonzero)
FWD solves: 14 REV solves: 0
Total colors vs. total size: 14 vs 96 (85.42% improvement)
Sparsity computed using tolerance: 1e-25
Time to compute sparsity: 0.6639 sec
Time to compute coloring: 0.0533 sec
Memory to compute coloring: 0.1250 MB
Coloring created on: 2024-11-19 19:08:45
This is Ipopt version 3.14.16, running with linear solver MUMPS 5.7.3.
Number of nonzeros in equality constraint Jacobian...: 676
Number of nonzeros in inequality constraint Jacobian.: 346
Number of nonzeros in Lagrangian Hessian.............: 0
Total number of variables............................: 96
variables with only lower bounds: 2
variables with lower and upper bounds: 94
variables with only upper bounds: 0
Total number of equality constraints.................: 94
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.91e-02 -5.0 0.00e+00 - 0.00e+00 0.00e+00 0
Number of Iterations....: 1
(scaled) (unscaled)
Objective...............: 3.3328505805995667e-01 3.3328505805995667e-01
Dual infeasibility......: 1.0071386876135464e+00 1.0071386876135464e+00
Constraint violation....: 1.8729520373666332e+02 1.8729520373666332e+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.139
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.1399
User Objective Time : 0.7604
User Sensitivity Time : 0.3641
Interface Time : 0.0078
Opt Solver Time: 0.0076
Calls to Objective Function : 3
Calls to Sens Function : 3
Objectives
Index Name Value
0 mission:objectives:fuel 3.332851E-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.000976E+00 1.000000E+30
1 mission:summary:gross_mass_0 c 5.714286E-05 1.000976E+00 1.000000E+30
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.945617E+00 1.000000E+17
4 traj.climb.states:mass_1 c 0.000000E+00 7.945663E+00 1.000000E+17
5 traj.climb.states:mass_2 c 0.000000E+00 7.945711E+00 1.000000E+17
6 traj.climb.states:mass_3 c 0.000000E+00 7.945724E+00 1.000000E+17
7 traj.climb.states:mass_4 c 0.000000E+00 7.945774E+00 1.000000E+17
8 traj.climb.states:mass_5 c 0.000000E+00 7.945824E+00 1.000000E+17
9 traj.climb.states:mass_6 c 0.000000E+00 7.945838E+00 1.000000E+17
10 traj.climb.states:mass_7 c 0.000000E+00 7.945875E+00 1.000000E+17
11 traj.climb.states:mass_8 c 0.000000E+00 7.945926E+00 1.000000E+17
12 traj.climb.states:mass_9 c 0.000000E+00 7.945945E+00 1.000000E+17
13 traj.climb.states:mass_10 c 0.000000E+00 7.945981E+00 1.000000E+17
14 traj.climb.states:mass_11 c 0.000000E+00 7.946037E+00 1.000000E+17
15 traj.climb.states:mass_12 c 0.000000E+00 7.946055E+00 1.000000E+17
16 traj.climb.states:mass_13 c 0.000000E+00 7.946076E+00 1.000000E+17
17 traj.climb.states:mass_14 c 0.000000E+00 7.946104E+00 1.000000E+17
18 traj.climb.states:mass_15 c 0.000000E+00 7.946114E+00 1.000000E+17
19 traj.climb.states:distance_0 c 0.000000E+00 9.795116E-03 1.000000E+15
20 traj.climb.states:distance_1 c 0.000000E+00 9.703680E-03 1.000000E+15
21 traj.climb.states:distance_2 c 0.000000E+00 9.672477E-03 1.000000E+15
22 traj.climb.states:distance_3 c 0.000000E+00 9.512290E-03 1.000000E+15
23 traj.climb.states:distance_4 c 0.000000E+00 9.253372E-03 1.000000E+15
24 traj.climb.states:distance_5 c 0.000000E+00 9.162454E-03 1.000000E+15
25 traj.climb.states:distance_6 c 0.000000E+00 8.893575E-03 1.000000E+15
26 traj.climb.states:distance_7 c 0.000000E+00 8.472601E-03 1.000000E+15
27 traj.climb.states:distance_8 c 0.000000E+00 8.327620E-03 1.000000E+15
28 traj.climb.states:distance_9 c 0.000000E+00 8.032903E-03 1.000000E+15
29 traj.climb.states:distance_10 c 0.000000E+00 7.593684E-03 1.000000E+15
30 traj.climb.states:distance_11 c 0.000000E+00 7.447012E-03 1.000000E+15
31 traj.climb.states:distance_12 c 0.000000E+00 7.278278E-03 1.000000E+15
32 traj.climb.states:distance_13 c 0.000000E+00 7.038153E-03 1.000000E+15
33 traj.climb.states:distance_14 c 0.000000E+00 6.960414E-03 1.000000E+15
34 traj.cruise.t_duration_0 c 5.000000E-01 5.202536E-01 1.500000E+00
35 traj.cruise.states:mass_0 c 0.000000E+00 7.945809E+00 1.000000E+17
36 traj.cruise.states:mass_1 c 0.000000E+00 7.945389E+00 1.000000E+17
37 traj.cruise.states:mass_2 c 0.000000E+00 7.945256E+00 1.000000E+17
38 traj.cruise.states:mass_3 c 0.000000E+00 7.944637E+00 1.000000E+17
39 traj.cruise.states:mass_4 c 0.000000E+00 7.943786E+00 1.000000E+17
40 traj.cruise.states:mass_5 c 0.000000E+00 7.943518E+00 1.000000E+17
41 traj.cruise.states:mass_6 c 0.000000E+00 7.942790E+00 1.000000E+17
42 traj.cruise.states:mass_7 c 0.000000E+00 7.941791E+00 1.000000E+17
43 traj.cruise.states:mass_8 c 0.000000E+00 7.941477E+00 1.000000E+17
44 traj.cruise.states:mass_9 c 0.000000E+00 7.940873E+00 1.000000E+17
45 traj.cruise.states:mass_10 c 0.000000E+00 7.940043E+00 1.000000E+17
46 traj.cruise.states:mass_11 c 0.000000E+00 7.939781E+00 1.000000E+17
47 traj.cruise.states:mass_12 c 0.000000E+00 7.939488E+00 1.000000E+17
48 traj.cruise.states:mass_13 c 0.000000E+00 7.939085E+00 1.000000E+17
49 traj.cruise.states:mass_14 c 0.000000E+00 7.938957E+00 1.000000E+17
50 traj.cruise.states:distance_0 c 0.000000E+00 8.041598E-03 1.000000E+15
51 traj.cruise.states:distance_1 c 0.000000E+00 9.532757E-03 1.000000E+15
52 traj.cruise.states:distance_2 c 0.000000E+00 1.000455E-02 1.000000E+15
53 traj.cruise.states:distance_3 c 0.000000E+00 1.220992E-02 1.000000E+15
54 traj.cruise.states:distance_4 c 0.000000E+00 1.525015E-02 1.000000E+15
55 traj.cruise.states:distance_5 c 0.000000E+00 1.621172E-02 1.000000E+15
56 traj.cruise.states:distance_6 c 0.000000E+00 1.882794E-02 1.000000E+15
57 traj.cruise.states:distance_7 c 0.000000E+00 2.243391E-02 1.000000E+15
58 traj.cruise.states:distance_8 c 0.000000E+00 2.357426E-02 1.000000E+15
59 traj.cruise.states:distance_9 c 0.000000E+00 2.576937E-02 1.000000E+15
60 traj.cruise.states:distance_10 c 0.000000E+00 2.879544E-02 1.000000E+15
61 traj.cruise.states:distance_11 c 0.000000E+00 2.975251E-02 1.000000E+15
62 traj.cruise.states:distance_12 c 0.000000E+00 3.082525E-02 1.000000E+15
63 traj.cruise.states:distance_13 c 0.000000E+00 3.230475E-02 1.000000E+15
64 traj.cruise.states:distance_14 c 0.000000E+00 3.277285E-02 1.000000E+15
65 traj.descent.t_duration_0 c 5.000000E-01 5.503020E-01 1.500000E+00
66 traj.descent.states:mass_0 c 0.000000E+00 7.938586E+00 1.000000E+17
67 traj.descent.states:mass_1 c 0.000000E+00 7.938073E+00 1.000000E+17
68 traj.descent.states:mass_2 c 0.000000E+00 7.937911E+00 1.000000E+17
69 traj.descent.states:mass_3 c 0.000000E+00 7.937158E+00 1.000000E+17
70 traj.descent.states:mass_4 c 0.000000E+00 7.936129E+00 1.000000E+17
71 traj.descent.states:mass_5 c 0.000000E+00 7.935801E+00 1.000000E+17
72 traj.descent.states:mass_6 c 0.000000E+00 7.934914E+00 1.000000E+17
73 traj.descent.states:mass_7 c 0.000000E+00 7.933663E+00 1.000000E+17
74 traj.descent.states:mass_8 c 0.000000E+00 7.933249E+00 1.000000E+17
75 traj.descent.states:mass_9 c 0.000000E+00 7.932514E+00 1.000000E+17
76 traj.descent.states:mass_10 c 0.000000E+00 7.931594E+00 1.000000E+17
77 traj.descent.states:mass_11 c 0.000000E+00 7.931325E+00 1.000000E+17
78 traj.descent.states:mass_12 c 0.000000E+00 7.931032E+00 1.000000E+17
79 traj.descent.states:mass_13 c 0.000000E+00 7.930641E+00 1.000000E+17
80 traj.descent.states:mass_14 c 0.000000E+00 7.930519E+00 1.000000E+17
81 traj.descent.states:distance_0 c 0.000000E+00 3.424781E-02 1.000000E+15
82 traj.descent.states:distance_1 c 0.000000E+00 3.624658E-02 1.000000E+15
83 traj.descent.states:distance_2 c 0.000000E+00 3.687023E-02 1.000000E+15
84 traj.descent.states:distance_3 c 0.000000E+00 3.972824E-02 1.000000E+15
85 traj.descent.states:distance_4 c 0.000000E+00 4.350818E-02 1.000000E+15
86 traj.descent.states:distance_5 c 0.000000E+00 4.466366E-02 1.000000E+15
87 traj.descent.states:distance_6 c 0.000000E+00 4.770652E-02 1.000000E+15
88 traj.descent.states:distance_7 c 0.000000E+00 5.164925E-02 1.000000E+15
89 traj.descent.states:distance_8 c 0.000000E+00 5.283319E-02 1.000000E+15
90 traj.descent.states:distance_9 c 0.000000E+00 5.502430E-02 1.000000E+15
91 traj.descent.states:distance_10 c 0.000000E+00 5.784959E-02 1.000000E+15
92 traj.descent.states:distance_11 c 0.000000E+00 5.869475E-02 1.000000E+15
93 traj.descent.states:distance_12 c 0.000000E+00 5.961381E-02 1.000000E+15
94 traj.descent.states:distance_13 c 0.000000E+00 6.083166E-02 1.000000E+15
95 traj.descent.states:distance_14 c 0.000000E+00 6.120483E-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.872952E+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 link_climb_mass.mass e 0.000000E+00 -2.910383E-16 0.000000E+00 9.00000E+100
3 mission:constraints:mass_residual e 0.000000E+00 -3.674947E-01 0.000000E+00 E 9.00000E+100
4 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 2.982429E-04 0.000000E+00 E 9.00000E+100
5 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 2.624334E-04 0.000000E+00 E 9.00000E+100
6 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 2.297219E-04 0.000000E+00 E 9.00000E+100
7 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.535451E-04 0.000000E+00 E 9.00000E+100
8 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.024904E-04 0.000000E+00 E 9.00000E+100
9 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 3.661594E-04 0.000000E+00 E 9.00000E+100
10 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.282339E-04 0.000000E+00 E 9.00000E+100
11 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.175378E-04 0.000000E+00 E 9.00000E+100
12 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.169505E-04 0.000000E+00 E 9.00000E+100
13 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 3.515544E-04 0.000000E+00 E 9.00000E+100
14 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 3.547786E-04 0.000000E+00 E 9.00000E+100
15 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 3.610058E-04 0.000000E+00 E 9.00000E+100
16 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 1.777920E-04 0.000000E+00 E 9.00000E+100
17 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 1.788763E-04 0.000000E+00 E 9.00000E+100
18 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 1.811332E-04 0.000000E+00 E 9.00000E+100
19 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 9.214804E-05 0.000000E+00 E 9.00000E+100
20 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -1.182569E-04 0.000000E+00 E 9.00000E+100
21 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -2.043726E-04 0.000000E+00 E 9.00000E+100
22 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.058407E-04 0.000000E+00 E 9.00000E+100
23 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.701531E-04 0.000000E+00 E 9.00000E+100
24 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -5.566059E-04 0.000000E+00 E 9.00000E+100
25 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -6.936155E-04 0.000000E+00 E 9.00000E+100
26 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -7.787254E-04 0.000000E+00 E 9.00000E+100
27 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -8.921414E-04 0.000000E+00 E 9.00000E+100
28 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -7.797529E-04 0.000000E+00 E 9.00000E+100
29 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -8.351568E-04 0.000000E+00 E 9.00000E+100
30 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -9.090832E-04 0.000000E+00 E 9.00000E+100
31 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.562837E-04 0.000000E+00 E 9.00000E+100
32 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.686128E-04 0.000000E+00 E 9.00000E+100
33 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.853166E-04 0.000000E+00 E 9.00000E+100
34 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.270134E-04 0.000000E+00 E 9.00000E+100
35 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.269135E-04 0.000000E+00 E 9.00000E+100
36 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.267599E-04 0.000000E+00 E 9.00000E+100
37 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.587797E-04 0.000000E+00 E 9.00000E+100
38 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.583221E-04 0.000000E+00 E 9.00000E+100
39 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.577179E-04 0.000000E+00 E 9.00000E+100
40 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 3.061815E-04 0.000000E+00 E 9.00000E+100
41 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 3.056028E-04 0.000000E+00 E 9.00000E+100
42 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 3.048495E-04 0.000000E+00 E 9.00000E+100
43 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.562215E-04 0.000000E+00 E 9.00000E+100
44 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.558653E-04 0.000000E+00 E 9.00000E+100
45 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.554005E-04 0.000000E+00 E 9.00000E+100
46 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.249828E-04 0.000000E+00 E 9.00000E+100
47 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.249001E-04 0.000000E+00 E 9.00000E+100
48 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.247878E-04 0.000000E+00 E 9.00000E+100
49 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.330729E-04 0.000000E+00 E 9.00000E+100
50 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.329136E-04 0.000000E+00 E 9.00000E+100
51 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.326938E-04 0.000000E+00 E 9.00000E+100
52 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.835416E-04 0.000000E+00 E 9.00000E+100
53 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.828766E-04 0.000000E+00 E 9.00000E+100
54 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.819582E-04 0.000000E+00 E 9.00000E+100
55 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -1.048215E-03 0.000000E+00 E 9.00000E+100
56 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -1.047273E-03 0.000000E+00 E 9.00000E+100
57 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -1.045972E-03 0.000000E+00 E 9.00000E+100
58 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.794337E-04 0.000000E+00 E 9.00000E+100
59 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.787656E-04 0.000000E+00 E 9.00000E+100
60 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.778428E-04 0.000000E+00 E 9.00000E+100
61 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.296907E-04 0.000000E+00 E 9.00000E+100
62 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.295302E-04 0.000000E+00 E 9.00000E+100
63 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.293087E-04 0.000000E+00 E 9.00000E+100
64 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 2.834042E-05 0.000000E+00 E 9.00000E+100
65 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 2.807735E-05 0.000000E+00 E 9.00000E+100
66 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 2.766511E-05 0.000000E+00 E 9.00000E+100
67 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 5.619270E-05 0.000000E+00 E 9.00000E+100
68 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 5.533125E-05 0.000000E+00 E 9.00000E+100
69 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 5.330218E-05 0.000000E+00 E 9.00000E+100
70 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 6.248803E-05 0.000000E+00 E 9.00000E+100
71 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 5.980251E-05 0.000000E+00 E 9.00000E+100
72 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 5.467316E-05 0.000000E+00 E 9.00000E+100
73 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 4.448770E-05 0.000000E+00 E 9.00000E+100
74 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 4.124540E-05 0.000000E+00 E 9.00000E+100
75 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 3.964360E-05 0.000000E+00 E 9.00000E+100
76 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 1.935847E-05 0.000000E+00 E 9.00000E+100
77 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 1.950718E-05 0.000000E+00 E 9.00000E+100
78 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 1.991092E-05 0.000000E+00 E 9.00000E+100
79 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -2.202374E-04 0.000000E+00 E 9.00000E+100
80 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -2.169897E-04 0.000000E+00 E 9.00000E+100
81 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -2.124010E-04 0.000000E+00 E 9.00000E+100
82 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.307645E-04 0.000000E+00 E 9.00000E+100
83 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.163167E-04 0.000000E+00 E 9.00000E+100
84 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -3.955003E-04 0.000000E+00 E 9.00000E+100
85 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.621295E-04 0.000000E+00 E 9.00000E+100
86 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.395355E-04 0.000000E+00 E 9.00000E+100
87 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.069626E-04 0.000000E+00 E 9.00000E+100
88 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -3.333517E-04 0.000000E+00 E 9.00000E+100
89 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -3.157434E-04 0.000000E+00 E 9.00000E+100
90 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -2.906591E-04 0.000000E+00 E 9.00000E+100
91 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -1.383413E-04 0.000000E+00 E 9.00000E+100
92 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -1.338277E-04 0.000000E+00 E 9.00000E+100
93 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -1.275103E-04 0.000000E+00 E 9.00000E+100
94 traj.phases.climb->path_constraint->throttle i 0.000000E+00 5.642897E-01 1.000000E+00 9.00000E+100
95 traj.phases.climb->path_constraint->throttle i 0.000000E+00 5.241363E-01 1.000000E+00 9.00000E+100
96 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.898121E-01 1.000000E+00 9.00000E+100
97 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.824774E-01 1.000000E+00 9.00000E+100
98 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.824774E-01 1.000000E+00 9.00000E+100
99 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.658854E-01 1.000000E+00 9.00000E+100
100 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.783143E-01 1.000000E+00 9.00000E+100
101 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.871400E-01 1.000000E+00 9.00000E+100
102 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.871400E-01 1.000000E+00 9.00000E+100
103 traj.phases.climb->path_constraint->throttle i 0.000000E+00 5.273790E-01 1.000000E+00 9.00000E+100
104 traj.phases.climb->path_constraint->throttle i 0.000000E+00 6.055114E-01 1.000000E+00 9.00000E+100
105 traj.phases.climb->path_constraint->throttle i 0.000000E+00 6.360395E-01 1.000000E+00 9.00000E+100
106 traj.phases.climb->path_constraint->throttle i 0.000000E+00 6.360395E-01 1.000000E+00 9.00000E+100
107 traj.phases.climb->path_constraint->throttle i 0.000000E+00 6.994444E-01 1.000000E+00 9.00000E+100
108 traj.phases.climb->path_constraint->throttle i 0.000000E+00 8.069190E-01 1.000000E+00 9.00000E+100
109 traj.phases.climb->path_constraint->throttle i 0.000000E+00 8.449364E-01 1.000000E+00 9.00000E+100
110 traj.phases.climb->path_constraint->throttle i 0.000000E+00 8.449364E-01 1.000000E+00 9.00000E+100
111 traj.phases.climb->path_constraint->throttle i 0.000000E+00 8.920272E-01 1.000000E+00 9.00000E+100
112 traj.phases.climb->path_constraint->throttle i 0.000000E+00 9.560029E-01 1.000000E+00 9.00000E+100
113 traj.phases.climb->path_constraint->throttle i 0.000000E+00 9.771379E-01 1.000000E+00 9.00000E+100
114 traj.phases.cruise->initial_boundary_constraint->throttle i 0.000000E+00 7.736283E-01 1.000000E+00 9.00000E+100
115 traj.phases.cruise->final_boundary_constraint->throttle i 0.000000E+00 8.431367E-01 1.000000E+00 9.00000E+100
116 traj.phases.descent->path_constraint->throttle i 0.000000E+00 3.780411E-01 1.000000E+00 9.00000E+100
117 traj.phases.descent->path_constraint->throttle i 0.000000E+00 3.502232E-01 1.000000E+00 9.00000E+100
118 traj.phases.descent->path_constraint->throttle i 0.000000E+00 3.171886E-01 1.000000E+00 9.00000E+100
119 traj.phases.descent->path_constraint->throttle i 0.000000E+00 3.078335E-01 1.000000E+00 9.00000E+100
120 traj.phases.descent->path_constraint->throttle i 0.000000E+00 3.078335E-01 1.000000E+00 9.00000E+100
121 traj.phases.descent->path_constraint->throttle i 0.000000E+00 2.646555E-01 1.000000E+00 9.00000E+100
122 traj.phases.descent->path_constraint->throttle i 0.000000E+00 2.111892E-01 1.000000E+00 9.00000E+100
123 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.957397E-01 1.000000E+00 9.00000E+100
124 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.957397E-01 1.000000E+00 9.00000E+100
125 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.592429E-01 1.000000E+00 9.00000E+100
126 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.194341E-01 1.000000E+00 9.00000E+100
127 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.082821E-01 1.000000E+00 9.00000E+100
128 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.082821E-01 1.000000E+00 9.00000E+100
129 traj.phases.descent->path_constraint->throttle i 0.000000E+00 8.759223E-02 1.000000E+00 9.00000E+100
130 traj.phases.descent->path_constraint->throttle i 0.000000E+00 4.650123E-02 1.000000E+00 9.00000E+100
131 traj.phases.descent->path_constraint->throttle i 0.000000E+00 3.450206E-02 1.000000E+00 9.00000E+100
132 traj.phases.descent->path_constraint->throttle i 0.000000E+00 3.450206E-02 1.000000E+00 9.00000E+100
133 traj.phases.descent->path_constraint->throttle i 0.000000E+00 2.168874E-02 1.000000E+00 9.00000E+100
134 traj.phases.descent->path_constraint->throttle i 0.000000E+00 5.531807E-03 1.000000E+00 9.00000E+100
135 traj.phases.descent->path_constraint->throttle i 0.000000E+00 6.836566E-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:
Input Values: Any FORTRAN variables that were mapped to input variables in Aviary components
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
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
post_mission_info : dict
Dictionary of phase settings for a post 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:
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:
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
.
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:
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:
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:
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.
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:
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.
Let’s switch to ascent
tab. We see the following:
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
:
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:
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.