Level 2#
We have discussed Level 1 in great detail. As we have seen, Level 1 is relatively simple.
In Level 2, we see more flexibility and additional choices. You will be exposed to some simple Python code and see how Aviary establishes a problem from beginning to end. Each step is built upon the capabilities of Level 3. Users will be led to Level 3 in a natural way.
Level 2 is defined in the aviary/interface/methods_for_level1.py file and it has a single method run_aviary()
with a few arguments. If you examine interface/level1.py
you see that Level 1 prepares those arguments and then call run_aviary()
. For aviary run_mission aircraft_for_bench_GwGm
examples, those arguments are:
aircraft_filename
:aircraft_for_bench_GwGm
phase_info
:phase_info
(loaded fromaviary/interface/default_phase_info/gasp.py
)optimizer
:IPOPT
(the default isNone
)analysis_scheme
:AnalysisScheme.COLLOCATION
(the default)objective_type
:None
(default)record_filename
:problem_history.db
(the default)restart_filename
:None
(the default)max_iter
: 50 (the default)
All the above arguments are straightforward except objective_type
. Even though objective_type
is None
, it is not treated as None
. In this scenario, the objective is set based on problem_type
when using the GASP-based mission method, but not the FLOPS-based mission. There are three options for problem_type
. Aviary has the following mapping when objective_type
is not set by user and mission_method
is EquationsOfMotion.TWO_DEGREES_OF_FREEDOM
:
problem_type |
objective |
---|---|
|
Mission.Objectives.FUEL |
|
Mission.Objectives.FUEL |
|
Mission.Objectives.RANGE |
In Aviary, problem_type
is set to SIZING
when it creates a vehicle (see create_vehicle). As you can see, since problem_type
is SIZING
by default in our case and we don’t manually alter this setting, Aviary set objective to Mission.Objectives.FUEL
. We will discuss more options of objective_type
later on.
Note
If you want to use a custom objective function, you can set any arbitrary variable to be the objective by directly calling the OpenMDAO add_objective
method instead of using Aviary’s built-in add_objective()
method.
In our onboarding runs, we want to limit the number of iterations to 1 so that they all run faster. As a result, we will not consider whether the optimization converges. So, we will have
`max_iter`: 1
Level 2 cannot be run via aviary
command on the command line. Users must develop level 2 Python code. The good news is that the Python code is pretty small. You can follow the following steps in order (we do not include function arguments for simplicity):
prob = AviaryProblem()
prob.load_inputs()
prob.check_and_preprocess_inputs()
prob.add_pre_mission_systems()
prob.add_phases()
prob.add_post_mission_systems()
prob.link_phases()
prob.add_driver()
prob.add_design_variables()
prob.add_objective()
prob.setup()
prob.set_initial_guesses()
prob.run_aviary_problem()
In the rest of this page, we will show a few examples to demonstrate how level 2 runs these steps. We start from rebuilding aircraft_for_bench_GwGm
model in great details.
Build level 2 for the same aircraft_for_bench_GwGm
Model#
We create a level 2 Python script to reproduce the aircraft_for_bench_GwGm
model run that was used as an example in the level 1 document (this time we won’t use the level 1 functionality). The methods listed above are defined in level 3 (namely, interface/methods_for_level2.py). You can run the code as follows:
from aviary.api import Aircraft, Mission
import aviary.api as av
from copy import deepcopy
# inputs that run_aviary() requires
aircraft_filename = "models/test_aircraft/aircraft_for_bench_GwGm.csv"
optimizer = "IPOPT"
analysis_scheme = av.AnalysisScheme.COLLOCATION
objective_type = None
record_filename = 'aviary_history.db'
restart_filename = None
max_iter = 0
phase_info = deepcopy(av.default_2DOF_phase_info)
# Build problem
prob = av.AviaryProblem(analysis_scheme)
# Load aircraft and options data from user
# Allow for user overrides here
prob.load_inputs(aircraft_filename, phase_info)
# Preprocess inputs
prob.check_and_preprocess_inputs()
# adds a pre-mission group (propulsion, geometry, aerodynamics, and mass)
prob.add_pre_mission_systems()
# adds a sequence of core mission phases.
prob.add_phases()
# adds a landing phase
prob.add_post_mission_systems()
# Link phases and variables
prob.link_phases()
# adds an optimizer to the driver
prob.add_driver(optimizer, max_iter=max_iter)
# adds relevant design variables
prob.add_design_variables()
# Load optimization problem formulation
# Detail which variables the optimizer can control
prob.add_objective(objective_type=objective_type)
# setup the problem
prob.setup()
# set initial guesses of states and controls variables
prob.set_initial_guesses()
# run the problem we just set up
prob.run_aviary_problem(record_filename, restart_filename=restart_filename)
/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.
Model viewer data has already been recorded for Driver.
Model viewer data has already been recorded for Driver.
Full total jacobian for problem 'problem4' was computed 3 times, taking 1.9491578490000165 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.9492 sec
Time to compute coloring: 0.1875 sec
Memory to compute coloring: 1.7500 MB
Coloring created on: 2024-11-19 19:09:02
/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.
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
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....: 0
(scaled) (unscaled)
Objective...............: 5.2731333333333330e+00 5.2731333333333330e+00
Dual infeasibility......: 1.6500000000000000e+01 1.6500000000000000e+01
Constraint violation....: 3.4448886382184898e+00 1.7364599999999916e+03
Variable bound violation: 0.0000000000000000e+00 0.0000000000000000e+00
Complementarity.........: 7.1428571428571420e+15 7.1428571428571420e+15
Overall NLP error.......: 7.1428571428571420e+15 7.1428571428571420e+15
Number of objective function evaluations = 1
Number of objective gradient evaluations = 1
Number of equality constraint evaluations = 1
Number of inequality constraint evaluations = 1
Number of equality constraint Jacobian evaluations = 1
Number of inequality constraint Jacobian evaluations = 1
Number of Lagrangian Hessian evaluations = 0
Total seconds in IPOPT = 1.426
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.4272
User Objective Time : 0.1964
User Sensitivity Time : 1.2130
Interface Time : 0.0119
Opt Solver Time: 0.0059
Calls to Objective Function : 2
Calls to Sens Function : 2
Objectives
Index Name Value
0 mission:objectives:fuel 5.273133E+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 1.002286E+00 1.000000E+30
1 mission:summary:gross_mass_0 c 5.714286E-05 1.002286E+00 1.000000E+30
2 mission:takeoff:ascent_t_initial_0 c 0.000000E+00 3.333333E-01 3.333333E+00
3 mission:takeoff:ascent_duration_0 c 1.000000E-01 2.500000E+00 1.000000E+02
4 tau_gear_0 c 1.000000E-02 2.000000E-01 1.000000E+00
5 tau_flaps_0 c 1.000000E-02 9.000000E-01 1.000000E+00
6 traj.accel.t_duration_0 c 9.950249E-03 1.293532E-01 1.990050E+00
7 traj.accel.states:velocity_0 c 0.000000E+00 5.807832E-01 1.200000E+00
8 traj.accel.states:velocity_1 c 0.000000E+00 8.992168E-01 1.200000E+00
9 traj.accel.states:velocity_2 c 0.000000E+00 1.000000E+00 1.200000E+00
10 traj.accel.states:mass_0 c 0.000000E+00 1.157640E+00 6.666667E+15
11 traj.accel.states:mass_1 c 0.000000E+00 1.157640E+00 6.666667E+15
12 traj.accel.states:mass_2 c 0.000000E+00 1.157640E+00 6.666667E+15
13 traj.accel.states:mass_3 c 0.000000E+00 1.157640E+00 6.666667E+15
14 traj.accel.states:distance_0 c 0.000000E+00 4.460254E-01 3.000000E+01
15 traj.accel.states:distance_1 c 0.000000E+00 6.072791E-01 3.000000E+01
16 traj.accel.states:distance_2 c 0.000000E+00 6.583153E-01 3.000000E+01
17 traj.ascent.states:flight_path_angle_0 c -9.999996E+00 1.239361E-02 1.999999E+01
18 traj.ascent.states:flight_path_angle_1 c -9.999996E+00 2.949427E-02 1.999999E+01
19 traj.ascent.states:flight_path_angle_2 c -9.999996E+00 3.490657E-02 1.999999E+01
20 traj.ascent.states:flight_path_angle_3 c -9.999996E+00 4.730019E-02 1.999999E+01
21 traj.ascent.states:flight_path_angle_4 c -9.999996E+00 6.440085E-02 1.999999E+01
22 traj.ascent.states:flight_path_angle_5 c -9.999996E+00 6.981315E-02 1.999999E+01
23 traj.ascent.states:flight_path_angle_6 c -9.999996E+00 8.220676E-02 1.999999E+01
24 traj.ascent.states:flight_path_angle_7 c -9.999996E+00 9.930742E-02 1.999999E+01
25 traj.ascent.states:flight_path_angle_8 c -9.999996E+00 1.047197E-01 1.999999E+01
26 traj.ascent.states:flight_path_angle_9 c -9.999996E+00 1.171133E-01 1.999999E+01
27 traj.ascent.states:flight_path_angle_10 c -9.999996E+00 1.342140E-01 1.999999E+01
28 traj.ascent.states:flight_path_angle_11 c -9.999996E+00 1.396263E-01 1.999999E+01
29 traj.ascent.states:altitude_0 c 0.000000E+00 6.999990E-03 7.000000E-01
30 traj.ascent.states:altitude_1 c 0.000000E+00 4.438138E-02 7.000000E-01
31 traj.ascent.states:altitude_2 c 0.000000E+00 1.056186E-01 7.000000E-01
32 traj.ascent.states:altitude_3 c 0.000000E+00 1.250000E-01 7.000000E-01
33 traj.ascent.states:altitude_4 c 0.000000E+00 1.693814E-01 7.000000E-01
34 traj.ascent.states:altitude_5 c 0.000000E+00 2.306186E-01 7.000000E-01
35 traj.ascent.states:altitude_6 c 0.000000E+00 2.500000E-01 7.000000E-01
36 traj.ascent.states:altitude_7 c 0.000000E+00 2.943814E-01 7.000000E-01
37 traj.ascent.states:altitude_8 c 0.000000E+00 3.556186E-01 7.000000E-01
38 traj.ascent.states:altitude_9 c 0.000000E+00 3.750000E-01 7.000000E-01
39 traj.ascent.states:altitude_10 c 0.000000E+00 4.193814E-01 7.000000E-01
40 traj.ascent.states:altitude_11 c 0.000000E+00 4.806186E-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.655335E-01 3.500000E+00
43 traj.ascent.states:velocity_1 c 0.000000E+00 7.869665E-01 3.500000E+00
44 traj.ascent.states:velocity_2 c 0.000000E+00 7.937500E-01 3.500000E+00
45 traj.ascent.states:velocity_3 c 0.000000E+00 8.092835E-01 3.500000E+00
46 traj.ascent.states:velocity_4 c 0.000000E+00 8.307165E-01 3.500000E+00
47 traj.ascent.states:velocity_5 c 0.000000E+00 8.375000E-01 3.500000E+00
48 traj.ascent.states:velocity_6 c 0.000000E+00 8.530335E-01 3.500000E+00
49 traj.ascent.states:velocity_7 c 0.000000E+00 8.744665E-01 3.500000E+00
50 traj.ascent.states:velocity_8 c 0.000000E+00 8.812500E-01 3.500000E+00
51 traj.ascent.states:velocity_9 c 0.000000E+00 8.967835E-01 3.500000E+00
52 traj.ascent.states:velocity_10 c 0.000000E+00 9.182165E-01 3.500000E+00
53 traj.ascent.states:velocity_11 c 0.000000E+00 9.250000E-01 3.500000E+00
54 traj.ascent.states:mass_0 c 0.000000E+00 1.157640E+00 6.666667E+15
55 traj.ascent.states:mass_1 c 0.000000E+00 1.157640E+00 6.666667E+15
56 traj.ascent.states:mass_2 c 0.000000E+00 1.157640E+00 6.666667E+15
57 traj.ascent.states:mass_3 c 0.000000E+00 1.157640E+00 6.666667E+15
58 traj.ascent.states:mass_4 c 0.000000E+00 1.157640E+00 6.666667E+15
59 traj.ascent.states:mass_5 c 0.000000E+00 1.157640E+00 6.666667E+15
60 traj.ascent.states:mass_6 c 0.000000E+00 1.157640E+00 6.666667E+15
61 traj.ascent.states:mass_7 c 0.000000E+00 1.157640E+00 6.666667E+15
62 traj.ascent.states:mass_8 c 0.000000E+00 1.157640E+00 6.666667E+15
63 traj.ascent.states:mass_9 c 0.000000E+00 1.157640E+00 6.666667E+15
64 traj.ascent.states:mass_10 c 0.000000E+00 1.157640E+00 6.666667E+15
65 traj.ascent.states:mass_11 c 0.000000E+00 1.157640E+00 6.666667E+15
66 traj.ascent.states:mass_12 c 0.000000E+00 1.157640E+00 6.666667E+15
67 traj.ascent.states:distance_0 c 0.000000E+00 4.532577E-01 1.500000E+00
68 traj.ascent.states:distance_1 c 0.000000E+00 5.267423E-01 1.500000E+00
69 traj.ascent.states:distance_2 c 0.000000E+00 5.500000E-01 1.500000E+00
70 traj.ascent.states:distance_3 c 0.000000E+00 6.032577E-01 1.500000E+00
71 traj.ascent.states:distance_4 c 0.000000E+00 6.767423E-01 1.500000E+00
72 traj.ascent.states:distance_5 c 0.000000E+00 7.000000E-01 1.500000E+00
73 traj.ascent.states:distance_6 c 0.000000E+00 7.532577E-01 1.500000E+00
74 traj.ascent.states:distance_7 c 0.000000E+00 8.267423E-01 1.500000E+00
75 traj.ascent.states:distance_8 c 0.000000E+00 8.500000E-01 1.500000E+00
76 traj.ascent.states:distance_9 c 0.000000E+00 9.032577E-01 1.500000E+00
77 traj.ascent.states:distance_10 c 0.000000E+00 9.767423E-01 1.500000E+00
78 traj.ascent.states:distance_11 c 0.000000E+00 1.000000E+00 1.500000E+00
79 traj.ascent.controls:alpha_0 c -6.000000E+00 5.000000E-01 6.000000E+00
80 traj.ascent.controls:alpha_1 c -6.000000E+00 4.822474E-01 6.000000E+00
81 traj.ascent.controls:alpha_2 c -6.000000E+00 4.577526E-01 6.000000E+00
82 traj.ascent.controls:alpha_3 c -6.000000E+00 4.500000E-01 6.000000E+00
83 traj.ascent.controls:alpha_4 c -6.000000E+00 4.322474E-01 6.000000E+00
84 traj.ascent.controls:alpha_5 c -6.000000E+00 4.077526E-01 6.000000E+00
85 traj.ascent.controls:alpha_6 c -6.000000E+00 4.000000E-01 6.000000E+00
86 traj.ascent.controls:alpha_7 c -6.000000E+00 3.822474E-01 6.000000E+00
87 traj.ascent.controls:alpha_8 c -6.000000E+00 3.577526E-01 6.000000E+00
88 traj.ascent.controls:alpha_9 c -6.000000E+00 3.500000E-01 6.000000E+00
89 traj.ascent.controls:alpha_10 c -6.000000E+00 3.322474E-01 6.000000E+00
90 traj.ascent.controls:alpha_11 c -6.000000E+00 3.077526E-01 6.000000E+00
91 traj.climb1.t_duration_0 c 1.818182E-01 7.272727E-01 1.818182E+00
92 traj.climb1.states:altitude_0 c 4.000000E-02 5.000000E-02 1.100000E+00
93 traj.climb1.states:altitude_1 c 4.000000E-02 3.872985E-01 1.100000E+00
94 traj.climb1.states:altitude_2 c 4.000000E-02 8.527015E-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.157640E+00 6.666667E+15
97 traj.climb1.states:mass_1 c 0.000000E+00 1.157640E+00 6.666667E+15
98 traj.climb1.states:mass_2 c 0.000000E+00 1.157640E+00 6.666667E+15
99 traj.climb1.states:mass_3 c 0.000000E+00 1.157640E+00 6.666667E+15
100 traj.climb1.states:distance_0 c 0.000000E+00 7.966287E-01 5.000000E+01
101 traj.climb1.states:distance_1 c 0.000000E+00 1.441643E+00 5.000000E+01
102 traj.climb1.states:distance_2 c 0.000000E+00 1.645788E+00 5.000000E+01
103 traj.climb2.t_duration_0 c 2.325581E-02 1.511628E-01 1.976744E+00
104 traj.climb2.states:altitude_0 c 3.000000E-01 4.418211E-01 1.333333E+00
105 traj.climb2.states:altitude_1 c 3.000000E-01 5.915122E-01 1.333333E+00
106 traj.climb2.states:altitude_2 c 3.000000E-01 6.388889E-01 1.333333E+00
107 traj.climb2.states:altitude_3 c 3.000000E-01 7.473767E-01 1.333333E+00
108 traj.climb2.states:altitude_4 c 3.000000E-01 8.970677E-01 1.333333E+00
109 traj.climb2.states:altitude_5 c 3.000000E-01 9.444444E-01 1.333333E+00
110 traj.climb2.states:altitude_6 c 3.000000E-01 1.052932E+00 1.333333E+00
111 traj.climb2.states:altitude_7 c 3.000000E-01 1.202623E+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.146064E+00 6.666667E+15
114 traj.climb2.states:mass_1 c 0.000000E+00 1.146064E+00 6.666667E+15
115 traj.climb2.states:mass_2 c 0.000000E+00 1.146064E+00 6.666667E+15
116 traj.climb2.states:mass_3 c 0.000000E+00 1.146064E+00 6.666667E+15
117 traj.climb2.states:mass_4 c 0.000000E+00 1.146064E+00 6.666667E+15
118 traj.climb2.states:mass_5 c 0.000000E+00 1.146064E+00 6.666667E+15
119 traj.climb2.states:mass_6 c 0.000000E+00 1.146064E+00 6.666667E+15
120 traj.climb2.states:mass_7 c 0.000000E+00 1.146064E+00 6.666667E+15
121 traj.climb2.states:mass_8 c 0.000000E+00 1.146064E+00 6.666667E+15
122 traj.climb2.states:mass_9 c 0.000000E+00 1.146064E+00 6.666667E+15
123 traj.climb2.states:distance_0 c 2.000000E-02 3.681136E-02 2.000000E+00
124 traj.climb2.states:distance_1 c 2.000000E-02 4.218648E-02 2.000000E+00
125 traj.climb2.states:distance_2 c 2.000000E-02 4.388769E-02 2.000000E+00
126 traj.climb2.states:distance_3 c 2.000000E-02 4.778328E-02 2.000000E+00
127 traj.climb2.states:distance_4 c 2.000000E-02 5.315840E-02 2.000000E+00
128 traj.climb2.states:distance_5 c 2.000000E-02 5.485961E-02 2.000000E+00
129 traj.climb2.states:distance_6 c 2.000000E-02 5.875520E-02 2.000000E+00
130 traj.climb2.states:distance_7 c 2.000000E-02 6.413033E-02 2.000000E+00
131 traj.climb2.states:distance_8 c 2.000000E-02 6.583153E-02 2.000000E+00
132 traj.cruise.t_initial_0 c 0.000000E+00 1.714810E+00 1.000000E+02
133 traj.cruise.t_duration_0 c -2.000000E+02 -7.000000E-01 -2.000000E-05
134 traj.desc1.t_duration_0 c 5.000000E-01 8.333333E-01 1.500000E+00
135 traj.desc1.states:altitude_0 c 3.333333E-02 1.250000E+00 1.333333E+00
136 traj.desc1.states:altitude_1 c 3.333333E-02 1.141512E+00 1.333333E+00
137 traj.desc1.states:altitude_2 c 3.333333E-02 9.918211E-01 1.333333E+00
138 traj.desc1.states:altitude_3 c 3.333333E-02 9.444444E-01 1.333333E+00
139 traj.desc1.states:altitude_4 c 3.333333E-02 8.359566E-01 1.333333E+00
140 traj.desc1.states:altitude_5 c 3.333333E-02 6.862656E-01 1.333333E+00
141 traj.desc1.states:altitude_6 c 3.333333E-02 6.388889E-01 1.333333E+00
142 traj.desc1.states:altitude_7 c 3.333333E-02 5.304011E-01 1.333333E+00
143 traj.desc1.states:altitude_8 c 3.333333E-02 3.807100E-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.714286E-01 7.142857E+15
146 traj.desc1.states:mass_1 c 0.000000E+00 9.714286E-01 7.142857E+15
147 traj.desc1.states:mass_2 c 0.000000E+00 9.714286E-01 7.142857E+15
148 traj.desc1.states:mass_3 c 0.000000E+00 9.714286E-01 7.142857E+15
149 traj.desc1.states:mass_4 c 0.000000E+00 9.714286E-01 7.142857E+15
150 traj.desc1.states:mass_5 c 0.000000E+00 9.714286E-01 7.142857E+15
151 traj.desc1.states:mass_6 c 0.000000E+00 9.714286E-01 7.142857E+15
152 traj.desc1.states:mass_7 c 0.000000E+00 9.714286E-01 7.142857E+15
153 traj.desc1.states:mass_8 c 0.000000E+00 9.714286E-01 7.142857E+15
154 traj.desc1.states:mass_9 c 0.000000E+00 9.714286E-01 7.142857E+15
155 traj.desc1.states:distance_0 c 8.163265E-01 9.247340E-01 1.360544E+00
156 traj.desc1.states:distance_1 c 8.163265E-01 9.312660E-01 1.360544E+00
157 traj.desc1.states:distance_2 c 8.163265E-01 9.333333E-01 1.360544E+00
158 traj.desc1.states:distance_3 c 8.163265E-01 9.380673E-01 1.360544E+00
159 traj.desc1.states:distance_4 c 8.163265E-01 9.445993E-01 1.360544E+00
160 traj.desc1.states:distance_5 c 8.163265E-01 9.466667E-01 1.360544E+00
161 traj.desc1.states:distance_6 c 8.163265E-01 9.514007E-01 1.360544E+00
162 traj.desc1.states:distance_7 c 8.163265E-01 9.579327E-01 1.360544E+00
163 traj.desc1.states:distance_8 c 8.163265E-01 9.600000E-01 1.360544E+00
164 traj.desc2.t_duration_0 c 3.921569E-02 1.960784E-01 1.960784E+00
165 traj.desc2.states:altitude_0 c -5.555556E-02 9.269457E-01 1.111111E+00
166 traj.desc2.states:altitude_1 c -5.555556E-02 7.692339E-01 1.111111E+00
167 traj.desc2.states:altitude_2 c -5.555556E-02 5.586715E-01 1.111111E+00
168 traj.desc2.states:altitude_3 c -5.555556E-02 3.369847E-01 1.111111E+00
169 traj.desc2.states:altitude_4 c -5.555556E-02 1.480786E-01 1.111111E+00
170 traj.desc2.states:altitude_5 c -5.555556E-02 2.931643E-02 1.111111E+00
171 traj.desc2.states:altitude_6 c -5.555556E-02 0.000000E+00 1.111111E+00
172 traj.desc2.states:mass_0 c 0.000000E+00 9.066667E-01 6.666667E+15
173 traj.desc2.states:mass_1 c 0.000000E+00 9.066667E-01 6.666667E+15
174 traj.desc2.states:mass_2 c 0.000000E+00 9.066667E-01 6.666667E+15
175 traj.desc2.states:mass_3 c 0.000000E+00 9.066667E-01 6.666667E+15
176 traj.desc2.states:mass_4 c 0.000000E+00 9.066667E-01 6.666667E+15
177 traj.desc2.states:mass_5 c 0.000000E+00 9.066667E-01 6.666667E+15
178 traj.desc2.states:mass_6 c 0.000000E+00 9.066667E-01 6.666667E+15
179 traj.desc2.states:mass_7 c 0.000000E+00 9.066667E-01 6.666667E+15
180 traj.desc2.states:distance_0 c 0.000000E+00 1.011068E+00 1.428571E+00
181 traj.desc2.states:distance_1 c 0.000000E+00 1.017692E+00 1.428571E+00
182 traj.desc2.states:distance_2 c 0.000000E+00 1.026536E+00 1.428571E+00
183 traj.desc2.states:distance_3 c 0.000000E+00 1.035847E+00 1.428571E+00
184 traj.desc2.states:distance_4 c 0.000000E+00 1.043781E+00 1.428571E+00
185 traj.desc2.states:distance_5 c 0.000000E+00 1.048769E+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.920792E-01 1.980198E+00
188 traj.groundroll.states:velocity_0 c 0.000000E+00 3.390025E-01 6.666667E+00
189 traj.groundroll.states:velocity_1 c 0.000000E+00 8.061495E-01 6.666667E+00
190 traj.groundroll.states:velocity_2 c 0.000000E+00 9.540000E-01 6.666667E+00
191 traj.groundroll.states:mass_0 c 0.000000E+00 1.157640E+00 6.666667E+15
192 traj.groundroll.states:mass_1 c 0.000000E+00 1.157640E+00 6.666667E+15
193 traj.groundroll.states:mass_2 c 0.000000E+00 1.157640E+00 6.666667E+15
194 traj.groundroll.states:mass_3 c 0.000000E+00 1.157640E+00 6.666667E+15
195 traj.groundroll.states:distance_0 c 0.000000E+00 1.183503E-01 3.333333E+00
196 traj.groundroll.states:distance_1 c 0.000000E+00 2.816497E-01 3.333333E+00
197 traj.groundroll.states:distance_2 c 0.000000E+00 3.333333E-01 3.333333E+00
198 traj.rotation.t_duration_0 c 1.980198E-02 9.900990E-02 1.980198E+00
199 traj.rotation.states:alpha_0 c 0.000000E+00 9.999990E-03 1.000000E+00
200 traj.rotation.states:alpha_1 c 0.000000E+00 9.999990E-03 1.000000E+00
201 traj.rotation.states:alpha_2 c 0.000000E+00 9.999990E-03 1.000000E+00
202 traj.rotation.states:velocity_0 c 0.000000E+00 1.454854E+00 1.000000E+01
203 traj.rotation.states:velocity_1 c 0.000000E+00 1.489146E+00 1.000000E+01
204 traj.rotation.states:velocity_2 c 0.000000E+00 1.500000E+00 1.000000E+01
205 traj.rotation.states:mass_0 c 0.000000E+00 1.157640E+00 6.666667E+15
206 traj.rotation.states:mass_1 c 0.000000E+00 1.157640E+00 6.666667E+15
207 traj.rotation.states:mass_2 c 0.000000E+00 1.157640E+00 6.666667E+15
208 traj.rotation.states:mass_3 c 0.000000E+00 1.157640E+00 6.666667E+15
209 traj.rotation.states:distance_0 c 0.000000E+00 7.587713E-01 2.000000E+00
210 traj.rotation.states:distance_1 c 0.000000E+00 7.900883E-01 2.000000E+00
211 traj.rotation.states:distance_2 c 0.000000E+00 8.000000E-01 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 4.547474E-14 0.000000E+00 9.00000E+100
1 h_fit.h_init_gear e 1.000000E+00 -7.943950E+00 1.000000E+00 E 9.00000E+100
2 h_fit.h_init_flaps e 1.000000E+00 -5.161972E-01 1.000000E+00 E 9.00000E+100
3 groundroll_boundary.velocity e 0.000000E+00 -2.184640E-02 0.000000E+00 E 9.00000E+100
4 gtow_constraint.GTOW e 0.000000E+00 0.000000E+00 0.000000E+00 9.00000E+100
5 mission:constraints:mass_residual e 0.000000E+00 8.367697E-03 0.000000E+00 E 9.00000E+100
6 taxi_groundroll_mass_constraint.mass e 0.000000E+00 -1.545558E-01 0.000000E+00 E 9.00000E+100
7 traj.linkages.groundroll:mass_final|rotation:mass_initial e 0.000000E+00 0.000000E+00 0.000000E+00 9.00000E+100
8 traj.linkages.rotation:mass_final|ascent:mass_initial e 0.000000E+00 0.000000E+00 0.000000E+00 9.00000E+100
9 traj.linkages.rotation:alpha_final|ascent:alpha_initial e 0.000000E+00 6.366719E-03 0.000000E+00 E 9.00000E+100
10 traj.linkages.ascent:mass_final|accel:mass_initial e 0.000000E+00 0.000000E+00 0.000000E+00 9.00000E+100
11 traj.linkages.accel:mass_final|climb1:mass_initial e 0.000000E+00 0.000000E+00 0.000000E+00 9.00000E+100
12 traj.linkages.climb1:mass_final|climb2:mass_initial e 0.000000E+00 1.736460E+03 0.000000E+00 E 9.00000E+100
13 traj.linkages.climb2:mass_final|cruise:mass_initial e 0.000000E+00 4.285400E-03 0.000000E+00 E 9.00000E+100
14 traj.linkages.cruise:mass_final|desc1:mass_initial e 0.000000E+00 4.810000E-03 0.000000E+00 E 9.00000E+100
15 traj.linkages.desc1:mass_final|desc2:mass_initial e 0.000000E+00 0.000000E+00 0.000000E+00 9.00000E+100
16 traj.phases.accel->final_boundary_constraint->EAS e 1.000000E+00 9.927554E-01 1.000000E+00 E 9.00000E+100
17 traj.accel.collocation_constraint.defects:velocity e 0.000000E+00 5.831548E-02 0.000000E+00 E 9.00000E+100
18 traj.accel.collocation_constraint.defects:velocity e 0.000000E+00 5.874534E-02 0.000000E+00 E 9.00000E+100
19 traj.accel.collocation_constraint.defects:velocity e 0.000000E+00 6.150213E-02 0.000000E+00 E 9.00000E+100
20 traj.accel.collocation_constraint.defects:mass e 0.000000E+00 1.596440E-04 0.000000E+00 E 9.00000E+100
21 traj.accel.collocation_constraint.defects:mass e 0.000000E+00 1.608753E-04 0.000000E+00 E 9.00000E+100
22 traj.accel.collocation_constraint.defects:mass e 0.000000E+00 1.626472E-04 0.000000E+00 E 9.00000E+100
23 traj.accel.collocation_constraint.defects:distance e 0.000000E+00 9.777328E-02 0.000000E+00 E 9.00000E+100
24 traj.accel.collocation_constraint.defects:distance e 0.000000E+00 8.943944E-02 0.000000E+00 E 9.00000E+100
25 traj.accel.collocation_constraint.defects:distance e 0.000000E+00 7.794045E-02 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 3.271955E-01 0.000000E+00 E 9.00000E+100
28 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 3.239933E-01 0.000000E+00 E 9.00000E+100
29 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 3.153738E-01 0.000000E+00 E 9.00000E+100
30 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 3.124579E-01 0.000000E+00 E 9.00000E+100
31 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 3.058678E-01 0.000000E+00 E 9.00000E+100
32 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 2.971449E-01 0.000000E+00 E 9.00000E+100
33 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 2.944935E-01 0.000000E+00 E 9.00000E+100
34 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 2.886165E-01 0.000000E+00 E 9.00000E+100
35 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 2.809362E-01 0.000000E+00 E 9.00000E+100
36 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 2.786054E-01 0.000000E+00 E 9.00000E+100
37 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 2.734429E-01 0.000000E+00 E 9.00000E+100
38 traj.ascent.collocation_constraint.defects:flight_path_angle e 0.000000E+00 2.667063E-01 0.000000E+00 E 9.00000E+100
39 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 4.500002E-02 0.000000E+00 E 9.00000E+100
40 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 4.880564E-02 0.000000E+00 E 9.00000E+100
41 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 3.890488E-02 0.000000E+00 E 9.00000E+100
42 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 3.327824E-02 0.000000E+00 E 9.00000E+100
43 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 2.213497E-02 0.000000E+00 E 9.00000E+100
44 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 6.104057E-03 0.000000E+00 E 9.00000E+100
45 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 8.727384E-04 0.000000E+00 E 9.00000E+100
46 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -1.139040E-02 0.000000E+00 E 9.00000E+100
47 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -2.895648E-02 0.000000E+00 E 9.00000E+100
48 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -3.467113E-02 0.000000E+00 E 9.00000E+100
49 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -4.803617E-02 0.000000E+00 E 9.00000E+100
50 traj.ascent.collocation_constraint.defects:altitude e 0.000000E+00 -6.711102E-02 0.000000E+00 E 9.00000E+100
51 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -3.730269E-02 0.000000E+00 E 9.00000E+100
52 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -3.222433E-02 0.000000E+00 E 9.00000E+100
53 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -2.621911E-02 0.000000E+00 E 9.00000E+100
54 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -2.437244E-02 0.000000E+00 E 9.00000E+100
55 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -2.016566E-02 0.000000E+00 E 9.00000E+100
56 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -1.438596E-02 0.000000E+00 E 9.00000E+100
57 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -1.256933E-02 0.000000E+00 E 9.00000E+100
58 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -8.413797E-03 0.000000E+00 E 9.00000E+100
59 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -2.689611E-03 0.000000E+00 E 9.00000E+100
60 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 -8.803422E-04 0.000000E+00 E 9.00000E+100
61 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 3.257993E-03 0.000000E+00 E 9.00000E+100
62 traj.ascent.collocation_constraint.defects:velocity e 0.000000E+00 8.956421E-03 0.000000E+00 E 9.00000E+100
63 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.679909E-05 0.000000E+00 E 9.00000E+100
64 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.681276E-05 0.000000E+00 E 9.00000E+100
65 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.680776E-05 0.000000E+00 E 9.00000E+100
66 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.680384E-05 0.000000E+00 E 9.00000E+100
67 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.679065E-05 0.000000E+00 E 9.00000E+100
68 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.676870E-05 0.000000E+00 E 9.00000E+100
69 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.676740E-05 0.000000E+00 E 9.00000E+100
70 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.676449E-05 0.000000E+00 E 9.00000E+100
71 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.676058E-05 0.000000E+00 E 9.00000E+100
72 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.675938E-05 0.000000E+00 E 9.00000E+100
73 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.675667E-05 0.000000E+00 E 9.00000E+100
74 traj.ascent.collocation_constraint.defects:mass e 0.000000E+00 7.675305E-05 0.000000E+00 E 9.00000E+100
75 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -4.116087E-03 0.000000E+00 E 9.00000E+100
76 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -5.748483E-03 0.000000E+00 E 9.00000E+100
77 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -7.979510E-03 0.000000E+00 E 9.00000E+100
78 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -8.680185E-03 0.000000E+00 E 9.00000E+100
79 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.027431E-02 0.000000E+00 E 9.00000E+100
80 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.244906E-02 0.000000E+00 E 9.00000E+100
81 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.313109E-02 0.000000E+00 E 9.00000E+100
82 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.468101E-02 0.000000E+00 E 9.00000E+100
83 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.679134E-02 0.000000E+00 E 9.00000E+100
84 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.745215E-02 0.000000E+00 E 9.00000E+100
85 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -1.895200E-02 0.000000E+00 E 9.00000E+100
86 traj.ascent.collocation_constraint.defects:distance e 0.000000E+00 -2.098984E-02 0.000000E+00 E 9.00000E+100
87 traj.ascent.continuity_comp.defect_control_rates:alpha_rate e 0.000000E+00 0.000000E+00 0.000000E+00 9.00000E+100
88 traj.ascent.continuity_comp.defect_control_rates:alpha_rate e 0.000000E+00 -5.556536E-17 0.000000E+00 9.00000E+100
89 traj.ascent.continuity_comp.defect_control_rates:alpha_rate e 0.000000E+00 0.000000E+00 0.000000E+00 9.00000E+100
90 traj.ascent.continuity_comp.defect_controls:alpha e 0.000000E+00 1.387779E-17 0.000000E+00 9.00000E+100
91 traj.ascent.continuity_comp.defect_controls:alpha e 0.000000E+00 0.000000E+00 0.000000E+00 9.00000E+100
92 traj.ascent.continuity_comp.defect_controls:alpha e 0.000000E+00 0.000000E+00 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.295515E-01 0.000000E+00 E 9.00000E+100
95 traj.climb1.collocation_constraint.defects:altitude e 0.000000E+00 1.349127E-01 0.000000E+00 E 9.00000E+100
96 traj.climb1.collocation_constraint.defects:altitude e 0.000000E+00 1.615414E-01 0.000000E+00 E 9.00000E+100
97 traj.climb1.collocation_constraint.defects:mass e 0.000000E+00 1.507414E-03 0.000000E+00 E 9.00000E+100
98 traj.climb1.collocation_constraint.defects:mass e 0.000000E+00 1.426534E-03 0.000000E+00 E 9.00000E+100
99 traj.climb1.collocation_constraint.defects:mass e 0.000000E+00 1.317088E-03 0.000000E+00 E 9.00000E+100
100 traj.climb1.collocation_constraint.defects:distance e 0.000000E+00 2.424766E-01 0.000000E+00 E 9.00000E+100
101 traj.climb1.collocation_constraint.defects:distance e 0.000000E+00 2.206075E-01 0.000000E+00 E 9.00000E+100
102 traj.climb1.collocation_constraint.defects:distance e 0.000000E+00 1.873288E-01 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 -2.308981E-01 0.000000E+00 E 9.00000E+100
106 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -1.993872E-01 0.000000E+00 E 9.00000E+100
107 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -1.543238E-01 0.000000E+00 E 9.00000E+100
108 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -1.414243E-01 0.000000E+00 E 9.00000E+100
109 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -1.059912E-01 0.000000E+00 E 9.00000E+100
110 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -5.304664E-02 0.000000E+00 E 9.00000E+100
111 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 -3.776842E-02 0.000000E+00 E 9.00000E+100
112 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 9.545807E-04 0.000000E+00 E 9.00000E+100
113 traj.climb2.collocation_constraint.defects:altitude e 0.000000E+00 8.172580E-02 0.000000E+00 E 9.00000E+100
114 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 4.674561E-03 0.000000E+00 E 9.00000E+100
115 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 4.369745E-03 0.000000E+00 E 9.00000E+100
116 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 3.964637E-03 0.000000E+00 E 9.00000E+100
117 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 3.872597E-03 0.000000E+00 E 9.00000E+100
118 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 3.618909E-03 0.000000E+00 E 9.00000E+100
119 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 3.286245E-03 0.000000E+00 E 9.00000E+100
120 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 3.191289E-03 0.000000E+00 E 9.00000E+100
121 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 2.964754E-03 0.000000E+00 E 9.00000E+100
122 traj.climb2.collocation_constraint.defects:mass e 0.000000E+00 2.548933E-03 0.000000E+00 E 9.00000E+100
123 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -3.214100E-02 0.000000E+00 E 9.00000E+100
124 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -3.418797E-02 0.000000E+00 E 9.00000E+100
125 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -3.727218E-02 0.000000E+00 E 9.00000E+100
126 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -3.831655E-02 0.000000E+00 E 9.00000E+100
127 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -4.085065E-02 0.000000E+00 E 9.00000E+100
128 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -4.470143E-02 0.000000E+00 E 9.00000E+100
129 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -4.601426E-02 0.000000E+00 E 9.00000E+100
130 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -4.921350E-02 0.000000E+00 E 9.00000E+100
131 traj.climb2.collocation_constraint.defects:distance e 0.000000E+00 -4.974632E-02 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 -4.272478E-02 0.000000E+00 E 9.00000E+100
134 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -3.895675E-02 0.000000E+00 E 9.00000E+100
135 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -2.786826E-02 0.000000E+00 E 9.00000E+100
136 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -2.331792E-02 0.000000E+00 E 9.00000E+100
137 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -1.101520E-02 0.000000E+00 E 9.00000E+100
138 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 5.426408E-03 0.000000E+00 E 9.00000E+100
139 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 1.289020E-03 0.000000E+00 E 9.00000E+100
140 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -7.777022E-03 0.000000E+00 E 9.00000E+100
141 traj.desc1.collocation_constraint.defects:altitude e 0.000000E+00 -1.947472E-02 0.000000E+00 E 9.00000E+100
142 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 7.116896E-05 0.000000E+00 E 9.00000E+100
143 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 8.239956E-05 0.000000E+00 E 9.00000E+100
144 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 9.936115E-05 0.000000E+00 E 9.00000E+100
145 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 1.054056E-04 0.000000E+00 E 9.00000E+100
146 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 1.200624E-04 0.000000E+00 E 9.00000E+100
147 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 1.416797E-04 0.000000E+00 E 9.00000E+100
148 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 1.467613E-04 0.000000E+00 E 9.00000E+100
149 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 1.591485E-04 0.000000E+00 E 9.00000E+100
150 traj.desc1.collocation_constraint.defects:mass e 0.000000E+00 1.785953E-04 0.000000E+00 E 9.00000E+100
151 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 -4.846509E+00 0.000000E+00 E 9.00000E+100
152 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 -9.120876E-01 0.000000E+00 E 9.00000E+100
153 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 3.883865E-01 0.000000E+00 E 9.00000E+100
154 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 1.352695E-01 0.000000E+00 E 9.00000E+100
155 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 1.337867E-01 0.000000E+00 E 9.00000E+100
156 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 1.331703E-01 0.000000E+00 E 9.00000E+100
157 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 1.358305E-01 0.000000E+00 E 9.00000E+100
158 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 1.415816E-01 0.000000E+00 E 9.00000E+100
159 traj.desc1.collocation_constraint.defects:distance e 0.000000E+00 1.488110E-01 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 1.250854E-01 0.000000E+00 E 9.00000E+100
162 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 1.172884E-01 0.000000E+00 E 9.00000E+100
163 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 1.005456E-01 0.000000E+00 E 9.00000E+100
164 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 7.900763E-02 0.000000E+00 E 9.00000E+100
165 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 5.692021E-02 0.000000E+00 E 9.00000E+100
166 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 3.874380E-02 0.000000E+00 E 9.00000E+100
167 traj.desc2.collocation_constraint.defects:altitude e 0.000000E+00 2.751219E-02 0.000000E+00 E 9.00000E+100
168 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 4.638632E-04 0.000000E+00 E 9.00000E+100
169 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 4.729111E-04 0.000000E+00 E 9.00000E+100
170 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 4.941796E-04 0.000000E+00 E 9.00000E+100
171 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 5.229304E-04 0.000000E+00 E 9.00000E+100
172 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 5.557022E-04 0.000000E+00 E 9.00000E+100
173 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 5.846184E-04 0.000000E+00 E 9.00000E+100
174 traj.desc2.collocation_constraint.defects:mass e 0.000000E+00 6.038235E-04 0.000000E+00 E 9.00000E+100
175 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 5.332068E-01 0.000000E+00 E 9.00000E+100
176 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 5.352741E-01 0.000000E+00 E 9.00000E+100
177 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 5.396322E-01 0.000000E+00 E 9.00000E+100
178 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 5.452353E-01 0.000000E+00 E 9.00000E+100
179 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 5.508831E-01 0.000000E+00 E 9.00000E+100
180 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 5.555022E-01 0.000000E+00 E 9.00000E+100
181 traj.desc2.collocation_constraint.defects:distance e 0.000000E+00 5.583195E-01 0.000000E+00 E 9.00000E+100
182 traj.groundroll.collocation_constraint.defects:velocity e 0.000000E+00 -1.689955E-01 0.000000E+00 E 9.00000E+100
183 traj.groundroll.collocation_constraint.defects:velocity e 0.000000E+00 -1.065200E-01 0.000000E+00 E 9.00000E+100
184 traj.groundroll.collocation_constraint.defects:velocity e 0.000000E+00 2.199958E-03 0.000000E+00 E 9.00000E+100
185 traj.groundroll.collocation_constraint.defects:mass e 0.000000E+00 4.765410E-04 0.000000E+00 E 9.00000E+100
186 traj.groundroll.collocation_constraint.defects:mass e 0.000000E+00 4.811469E-04 0.000000E+00 E 9.00000E+100
187 traj.groundroll.collocation_constraint.defects:mass e 0.000000E+00 4.875537E-04 0.000000E+00 E 9.00000E+100
188 traj.groundroll.collocation_constraint.defects:distance e 0.000000E+00 1.659240E-01 0.000000E+00 E 9.00000E+100
189 traj.groundroll.collocation_constraint.defects:distance e 0.000000E+00 -4.055050E-01 0.000000E+00 E 9.00000E+100
190 traj.groundroll.collocation_constraint.defects:distance e 0.000000E+00 -1.193960E+00 0.000000E+00 E 9.00000E+100
191 traj.phases.rotation->final_boundary_constraint->normal_force e 0.000000E+00 8.409179E+00 0.000000E+00 E 9.00000E+100
192 traj.rotation.collocation_constraint.defects:alpha e 0.000000E+00 -4.059757E-03 0.000000E+00 E 9.00000E+100
193 traj.rotation.collocation_constraint.defects:alpha e 0.000000E+00 -2.379375E-02 0.000000E+00 E 9.00000E+100
194 traj.rotation.collocation_constraint.defects:alpha e 0.000000E+00 -3.032572E-02 0.000000E+00 E 9.00000E+100
195 traj.rotation.collocation_constraint.defects:velocity e 0.000000E+00 -4.947590E-02 0.000000E+00 E 9.00000E+100
196 traj.rotation.collocation_constraint.defects:velocity e 0.000000E+00 -4.694172E-02 0.000000E+00 E 9.00000E+100
197 traj.rotation.collocation_constraint.defects:velocity e 0.000000E+00 -4.521174E-02 0.000000E+00 E 9.00000E+100
198 traj.rotation.collocation_constraint.defects:mass e 0.000000E+00 6.132037E-05 0.000000E+00 E 9.00000E+100
199 traj.rotation.collocation_constraint.defects:mass e 0.000000E+00 6.136432E-05 0.000000E+00 E 9.00000E+100
200 traj.rotation.collocation_constraint.defects:mass e 0.000000E+00 6.142751E-05 0.000000E+00 E 9.00000E+100
201 traj.rotation.collocation_constraint.defects:distance e 0.000000E+00 1.251386E+00 0.000000E+00 E 9.00000E+100
202 traj.rotation.collocation_constraint.defects:distance e 0.000000E+00 1.914830E-01 0.000000E+00 E 9.00000E+100
203 traj.rotation.collocation_constraint.defects:distance e 0.000000E+00 -1.615733E-01 0.000000E+00 E 9.00000E+100
204 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.206914E-01 1.100000E+00 9.00000E+100
205 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.127141E-01 1.100000E+00 9.00000E+100
206 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.131475E-01 1.100000E+00 9.00000E+100
207 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.139957E-01 1.100000E+00 9.00000E+100
208 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.139957E-01 1.100000E+00 9.00000E+100
209 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.161165E-01 1.100000E+00 9.00000E+100
210 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.189456E-01 1.100000E+00 9.00000E+100
211 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.197486E-01 1.100000E+00 9.00000E+100
212 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.197486E-01 1.100000E+00 9.00000E+100
213 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.214011E-01 1.100000E+00 9.00000E+100
214 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.232370E-01 1.100000E+00 9.00000E+100
215 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.237063E-01 1.100000E+00 9.00000E+100
216 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.237063E-01 1.100000E+00 9.00000E+100
217 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.245697E-01 1.100000E+00 9.00000E+100
218 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.252587E-01 1.100000E+00 9.00000E+100
219 traj.phases.ascent->path_constraint->load_factor i 0.000000E+00 2.253505E-01 1.100000E+00 9.00000E+100
220 traj.phases.ascent->path_constraint->theta i 0.000000E+00 1.000000E+00 1.500000E+01 9.00000E+100
221 traj.phases.ascent->path_constraint->theta i 0.000000E+00 1.621339E+00 1.500000E+01 9.00000E+100
222 traj.phases.ascent->path_constraint->theta i 0.000000E+00 2.478661E+00 1.500000E+01 9.00000E+100
223 traj.phases.ascent->path_constraint->theta i 0.000000E+00 2.750000E+00 1.500000E+01 9.00000E+100
224 traj.phases.ascent->path_constraint->theta i 0.000000E+00 2.750000E+00 1.500000E+01 9.00000E+100
225 traj.phases.ascent->path_constraint->theta i 0.000000E+00 3.371339E+00 1.500000E+01 9.00000E+100
226 traj.phases.ascent->path_constraint->theta i 0.000000E+00 4.228661E+00 1.500000E+01 9.00000E+100
227 traj.phases.ascent->path_constraint->theta i 0.000000E+00 4.500000E+00 1.500000E+01 9.00000E+100
228 traj.phases.ascent->path_constraint->theta i 0.000000E+00 4.500000E+00 1.500000E+01 9.00000E+100
229 traj.phases.ascent->path_constraint->theta i 0.000000E+00 5.121339E+00 1.500000E+01 9.00000E+100
230 traj.phases.ascent->path_constraint->theta i 0.000000E+00 5.978661E+00 1.500000E+01 9.00000E+100
231 traj.phases.ascent->path_constraint->theta i 0.000000E+00 6.250000E+00 1.500000E+01 9.00000E+100
232 traj.phases.ascent->path_constraint->theta i 0.000000E+00 6.250000E+00 1.500000E+01 9.00000E+100
233 traj.phases.ascent->path_constraint->theta i 0.000000E+00 6.871339E+00 1.500000E+01 9.00000E+100
234 traj.phases.ascent->path_constraint->theta i 0.000000E+00 7.728661E+00 1.500000E+01 9.00000E+100
235 traj.phases.ascent->path_constraint->theta i 0.000000E+00 8.000000E+00 1.500000E+01 9.00000E+100
236 traj.phases.climb2->final_boundary_constraint->altitude_rate i 1.000000E-01 3.314185E+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.
In this code, you do the same import as methods_for_level1.py
does and set the values of all the arguments in run_aviary()
. Now we will go through each line in detail to explain each step:
Dissection of level 2 for the same aircraft_for_bench_GwGm
model#
All the methods of prob
object (including its creation) are defined in level 3 (methods_for_level2.py
). We now look at each of them.
We add other inputs that run_aviary()
requires:
aircraft_filename = "models/test_aircraft/aircraft_for_bench_GwGm.csv"
optimizer = "IPOPT"
analysis_scheme = av.AnalysisScheme.COLLOCATION
objective_type = None
record_filename = 'aviary_history.db'
restart_filename = None
max_iter = 1
prob = av.AviaryProblem(analysis_scheme)
Several objects are initialized in this step:
self.model = om.Group()
self.pre_mission = PreMissionGroup()
self.post_mission = PostMissionGroup()
self.aviary_inputs = None
self.phase_info = phase_info
self.traj = None
self.analysis_scheme = analysis_scheme
self.pre_mission_info = self.phase_info.pop('pre_mission')
self.post_mission_info = self.phase_info.pop('post_mission')
phase_info
is a user defined dictionary (in a Python file) that controls the profile of the mission to be simulated (e.g. climb, cruise, descent segments etc).
For analysis_scheme
, the two options are: AnalysisScheme.COLLOCATION
(default) and AnalysisScheme.SHOOTING
which are defined and described in variables_info/enums.py`:
COLLOCATION uses the collocation method to optimize all points simultaneously.
SHOOTING is a forward in time integration method that simulates the trajectory.
In this onboarding document, only the COLLOCATION
scheme will be discussed. The line
phase_info = deepcopy(av.default_2DOF_phase_info)
prob.load_inputs(aircraft_filename, phase_info)
{'aircraft:blended_wing_body_design:num_bays': (0, 'unitless'), 'aircraft:crew_and_payload:mass_per_passenger': (165.0, 'lbm'), 'aircraft:crew_and_payload:num_business_class': (0, 'unitless'), 'aircraft:crew_and_payload:num_first_class': (0, 'unitless'), 'aircraft:crew_and_payload:num_passengers': (180, 'unitless'), 'aircraft:crew_and_payload:num_tourist_class': (0, 'unitless'), 'aircraft:crew_and_payload:passenger_mass_with_bags': (200, 'lbm'), 'aircraft:design:compute_htail_volume_coeff': (False, 'unitless'), 'aircraft:design:compute_vtail_volume_coeff': (False, 'unitless'), 'aircraft:design:part25_structural_category': (3, 'unitless'), 'aircraft:design:reserve_fuel_additional': (4998, 'lbm'), 'aircraft:design:reserve_fuel_fraction': (0, 'unitless'), 'aircraft:design:smooth_mass_discontinuities': (False, 'unitless'), 'aircraft:design:ulf_calculated_from_maneuver': (False, 'unitless'), 'aircraft:design:use_alt_mass': (False, 'unitless'), 'aircraft:electrical:has_hybrid_system': (False, 'unitless'), 'aircraft:engine:compute_propeller_installation_loss': (True, 'unitless'), 'aircraft:engine:constant_fuel_consumption': (0.0, 'lbm/h'), 'aircraft:engine:flight_idle_max_fraction': (1.0, 'unitless'), 'aircraft:engine:flight_idle_min_fraction': (0.08, 'unitless'), 'aircraft:engine:flight_idle_thrust_fraction': (0.0, 'unitless'), 'aircraft:engine:fuel_flow_scaler_constant_term': (0.0, 'unitless'), 'aircraft:engine:fuel_flow_scaler_linear_term': (0.0, 'unitless'), 'aircraft:engine:generate_flight_idle': (False, 'unitless'), 'aircraft:engine:geopotential_alt': (False, 'unitless'), 'aircraft:engine:has_propellers': (False, 'unitless'), 'aircraft:engine:ignore_negative_thrust': (False, 'unitless'), 'aircraft:engine:interpolation_method': ('slinear', 'unitless'), 'aircraft:engine:num_engines': (2, 'unitless'), 'aircraft:engine:num_fuselage_engines': (0, 'unitless'), 'aircraft:engine:num_propeller_blades': (0, 'unitless'), 'aircraft:engine:num_wing_engines': (0, 'unitless'), 'aircraft:engine:scale_mass': (True, 'unitless'), 'aircraft:engine:scale_performance': (True, 'unitless'), 'aircraft:engine:subsonic_fuel_flow_scaler': (1.0, 'unitless'), 'aircraft:engine:supersonic_fuel_flow_scaler': (1.0, 'unitless'), 'aircraft:engine:type': (<GASPEngineType.TURBOJET: 7>, 'unitless'), 'aircraft:engine:use_propeller_map': (False, 'unitless'), 'aircraft:engine:shaft_power_design': (1.0, 'hp'), 'aircraft:fins:num_fins': (0, 'unitless'), 'aircraft:fuel:num_tanks': (7, 'unitless'), 'aircraft:fuselage:aisle_width': (24, 'inch'), 'aircraft:fuselage:military_cargo_floor': (False, 'unitless'), 'aircraft:fuselage:num_aisles': (1, 'unitless'), 'aircraft:fuselage:num_fuselages': (1, 'unitless'), 'aircraft:fuselage:num_seats_abreast': (6, 'unitless'), 'aircraft:fuselage:seat_pitch': (29, 'inch'), 'aircraft:fuselage:seat_width': (20.2, 'inch'), 'aircraft:landing_gear:carrier_based': (False, 'unitless'), 'aircraft:landing_gear:drag_coefficient': (0.0, 'unitless'), 'aircraft:landing_gear:fixed_gear': (False, 'unitless'), 'aircraft:strut:dimensional_location_specified': (False, 'unitless'), 'aircraft:vertical_tail:num_tails': (1, 'unitless'), 'aircraft:wing:airfoil_technology': (1.0, 'unitless'), 'aircraft:wing:choose_fold_location': (True, 'unitless'), 'aircraft:wing:detailed_wing': (False, 'unitless'), 'aircraft:wing:flap_type': (<FlapType.DOUBLE_SLOTTED: 4>, 'unitless'), 'aircraft:wing:fold_dimensional_location_specified': (False, 'unitless'), 'aircraft:wing:has_fold': (False, 'unitless'), 'aircraft:wing:has_strut': (False, 'unitless'), 'aircraft:wing:load_distribution_control': (2.0, 'unitless'), 'aircraft:wing:loading_above_20': (True, 'unitless'), 'aircraft:wing:num_flap_segments': (2, 'unitless'), 'aircraft:wing:num_integration_stations': (50, 'unitless'), 'aircraft:wing:span_efficiency_reduction': (False, 'unitless'), 'mission:design:cruise_altitude': (37500, 'ft'), 'mission:design:rate_of_climb_at_top_of_climb': (0.0, 'ft/min'), 'mission:summary:fuel_flow_scaler': (1, 'unitless'), 'mission:takeoff:angle_of_attack_runway': (0.0, 'deg'), 'mission:takeoff:obstacle_height': (35.0, 'ft'), 'mission:takeoff:thrust_incidence': (0.0, 'deg'), 'mission:taxi:duration': (0.1677, 'h'), 'mission:taxi:mach': (0.0001, 'unitless'), 'settings:verbosity': (<Verbosity.BRIEF: 1>, 'unitless'), 'INGASP.JENGSZ': (4, 'unitless'), 'test_mode': (False, 'unitless'), 'use_surrogates': (True, 'unitless'), 'mass_defect': (10000, 'lbm'), 'settings:problem_type': (<ProblemType.SIZING: 'sizing'>, 'unitless'), 'aircraft:air_conditioning:mass_coefficient': (1.65, 'unitless'), 'aircraft:anti_icing:mass': (551, 'lbm'), 'aircraft:apu:mass': (928, 'lbm'), 'aircraft:avionics:mass': (1959, 'lbm'), 'aircraft:controls:cockpit_control_mass_scaler': (1, 'unitless'), 'aircraft:controls:control_mass_increment': (0, 'lbm'), 'aircraft:controls:stability_augmentation_system_mass': (0, 'lbm'), 'aircraft:controls:stability_augmentation_system_mass_scaler': (1, 'unitless'), 'aircraft:crew_and_payload:cargo_mass': (10040, 'lbm'), 'aircraft:crew_and_payload:catering_items_mass_per_passenger': (7.6, 'lbm'), 'aircraft:crew_and_payload:passenger_service_mass_per_passenger': (5, 'lbm'), 'aircraft:crew_and_payload:water_mass_per_occupant': (3, 'lbm'), 'aircraft:design:cg_delta': (0.25, 'unitless'), 'aircraft:design:cockpit_control_mass_coefficient': (16.5, 'unitless'), 'aircraft:design:drag_increment': (0.00175, 'unitless'), 'aircraft:design:emergency_equipment_mass': (50, 'lbm'), 'aircraft:design:max_structural_speed': (402.5, 'mi/h'), 'aircraft:design:static_margin': (0.03, 'unitless'), 'aircraft:design:structural_mass_increment': (0, 'lbm'), 'aircraft:design:supercritical_drag_shift': (0.033, 'unitless'), 'aircraft:engine:additional_mass_fraction': (0.135, 'unitless'), 'aircraft:engine:data_file': ('models/engines/turbofan_23k_1.deck', 'unitless'), 'aircraft:engine:mass_scaler': (1, 'unitless'), 'aircraft:engine:mass_specific': (0.21366, 'lbm/lbf'), 'aircraft:engine:pod_mass_scaler': (1, 'unitless'), 'aircraft:engine:pylon_factor': (1.25, 'unitless'), 'aircraft:engine:reference_diameter': (5.8, 'ft'), 'aircraft:engine:reference_sls_thrust': (28690, 'lbf'), 'aircraft:engine:scale_factor': (1, 'unitless'), 'aircraft:engine:scaled_sls_thrust': (28690, 'lbf'), 'aircraft:engine:wing_locations': ([0.35], 'unitless'), 'aircraft:fuel:density': (6.687, 'lbm/galUS'), 'aircraft:fuel:fuel_margin': (0, 'unitless'), 'aircraft:fuel:fuel_system_mass_coefficient': (0.041, 'unitless'), 'aircraft:fuel:fuel_system_mass_scaler': (1, 'unitless'), 'aircraft:fuel:unusable_fuel_mass_coefficient': (12, 'unitless'), 'aircraft:fuel:wing_fuel_fraction': (0.6, 'unitless'), 'aircraft:furnishings:mass': (11192, 'lbm'), 'aircraft:fuselage:delta_diameter': (4.5, 'ft'), 'aircraft:fuselage:flat_plate_area_increment': (0.25, 'ft**2'), 'aircraft:fuselage:form_factor': (1.25, 'unitless'), 'aircraft:fuselage:mass_coefficient': (128, 'unitless'), 'aircraft:fuselage:nose_fineness': (1, 'unitless'), 'aircraft:fuselage:pilot_compartment_length': (9.5, 'ft'), 'aircraft:fuselage:pressure_differential': (7.5, 'psi'), 'aircraft:fuselage:tail_fineness': (3, 'unitless'), 'aircraft:fuselage:wetted_area': (4000, 'ft**2'), 'aircraft:horizontal_tail:area': (0, 'ft**2'), 'aircraft:horizontal_tail:aspect_ratio': (4.75, 'unitless'), 'aircraft:horizontal_tail:form_factor': (1.25, 'unitless'), 'aircraft:horizontal_tail:mass_coefficient': (0.232, 'unitless'), 'aircraft:horizontal_tail:moment_ratio': (0.2307, 'unitless'), 'aircraft:horizontal_tail:sweep': (25, 'deg'), 'aircraft:horizontal_tail:taper_ratio': (0.352, 'unitless'), 'aircraft:horizontal_tail:thickness_to_chord': (0.12, 'unitless'), 'aircraft:horizontal_tail:vertical_tail_fraction': (0, 'unitless'), 'aircraft:horizontal_tail:volume_coefficient': (1.189, 'unitless'), 'aircraft:hydraulics:flight_control_mass_coefficient': (0.112, 'unitless'), 'aircraft:hydraulics:gear_mass_coefficient': (0.14, 'unitless'), 'aircraft:instruments:mass_coefficient': (0.0736, 'unitless'), 'aircraft:landing_gear:main_gear_location': (0.15, 'unitless'), 'aircraft:landing_gear:main_gear_mass_coefficient': (0.85, 'unitless'), 'aircraft:landing_gear:mass_coefficient': (0.04, 'unitless'), 'aircraft:landing_gear:tail_hook_mass_scaler': (1, 'unitless'), 'aircraft:landing_gear:total_mass_scaler': (1, 'unitless'), 'aircraft:nacelle:clearance_ratio': (0.2, 'unitless'), 'aircraft:nacelle:core_diameter_ratio': (1.25, 'unitless'), 'aircraft:nacelle:fineness': (2, 'unitless'), 'aircraft:nacelle:form_factor': (1.5, 'unitless'), 'aircraft:nacelle:mass_specific': (3, 'lbm/ft**2'), 'aircraft:strut:area_ratio': (0, 'unitless'), 'aircraft:strut:attachment_location': (0, 'ft'), 'aircraft:strut:attachment_location_dimensionless': (0, 'unitless'), 'aircraft:strut:fuselage_interference_factor': (0, 'unitless'), 'aircraft:strut:mass_coefficient': (0, 'unitless'), 'aircraft:strut:thickness_to_chord': (0, 'unitless'), 'aircraft:vertical_tail:area': (0, 'ft**2'), 'aircraft:vertical_tail:aspect_ratio': (1.67, 'unitless'), 'aircraft:vertical_tail:form_factor': (1.25, 'unitless'), 'aircraft:vertical_tail:mass_coefficient': (0.289, 'unitless'), 'aircraft:vertical_tail:moment_ratio': (2.362, 'unitless'), 'aircraft:vertical_tail:sweep': (35, 'deg'), 'aircraft:vertical_tail:taper_ratio': (0.801, 'unitless'), 'aircraft:vertical_tail:thickness_to_chord': (0.12, 'unitless'), 'aircraft:vertical_tail:volume_coefficient': (0.145, 'unitless'), 'aircraft:wing:aspect_ratio': (10.13, 'unitless'), 'aircraft:wing:center_distance': (0.463, 'unitless'), 'aircraft:wing:flap_chord_ratio': (0.3, 'unitless'), 'aircraft:wing:flap_deflection_landing': (40, 'deg'), 'aircraft:wing:flap_deflection_takeoff': (10, 'deg'), 'aircraft:wing:flap_drag_increment_optimum': (0.1, 'unitless'), 'aircraft:wing:flap_lift_increment_optimum': (1.5, 'unitless'), 'aircraft:wing:flap_span_ratio': (0.65, 'unitless'), 'aircraft:wing:fold_mass_coefficient': (0, 'unitless'), 'aircraft:wing:folded_span': (0, 'ft'), 'aircraft:wing:form_factor': (1.25, 'unitless'), 'aircraft:wing:fuselage_interference_factor': (1.1, 'unitless'), 'aircraft:wing:height': (8, 'ft'), 'aircraft:wing:high_lift_mass_coefficient': (1.9, 'unitless'), 'aircraft:wing:incidence': (1.5, 'deg'), 'aircraft:wing:loading': (128, 'lbf/ft**2'), 'aircraft:wing:mass_coefficient': (102.5, 'unitless'), 'aircraft:wing:max_lift_ref': (1.15, 'unitless'), 'aircraft:wing:max_slat_deflection_landing': (10, 'deg'), 'aircraft:wing:max_slat_deflection_takeoff': (10, 'deg'), 'aircraft:wing:max_thickness_location': (0.4, 'unitless'), 'aircraft:wing:min_pressure_location': (0.3, 'unitless'), 'aircraft:wing:mounting_type': (0, 'unitless'), 'aircraft:wing:optimum_flap_deflection': (55, 'deg'), 'aircraft:wing:optimum_slat_deflection': (20, 'deg'), 'aircraft:wing:slat_chord_ratio': (0.15, 'unitless'), 'aircraft:wing:slat_lift_increment_optimum': (0.93, 'unitless'), 'aircraft:wing:surface_ctrl_mass_coefficient': (0.95, 'unitless'), 'aircraft:wing:sweep': (25, 'deg'), 'aircraft:wing:taper_ratio': (0.33, 'unitless'), 'aircraft:wing:thickness_to_chord_root': (0.15, 'unitless'), 'aircraft:wing:thickness_to_chord_tip': (0.12, 'unitless'), 'aircraft:wing:zero_lift_angle': (-1.2, 'deg'), 'mission:design:gross_mass': (175400, 'lbm'), 'mission:design:mach': (0.8, 'unitless'), 'mission:design:range': (3675, 'NM'), 'mission:landing:airport_altitude': (0, 'ft'), 'mission:landing:braking_delay': (1, 's'), 'mission:landing:glide_to_stall_ratio': (1.3, 'unitless'), 'mission:landing:maximum_flare_load_factor': (1.15, 'unitless'), 'mission:landing:maximum_sink_rate': (900, 'ft/min'), 'mission:landing:obstacle_height': (50, 'ft'), 'mission:landing:touchdown_sink_rate': (5, 'ft/s'), 'mission:takeoff:decision_speed_increment': (10, 'kn'), 'mission:takeoff:rotation_speed_increment': (5, 'kn'), 'settings:equations_of_motion': (<EquationsOfMotion.TWO_DEGREES_OF_FREEDOM: '2DOF'>, 'unitless'), 'settings:mass_method': (<LegacyCode.GASP: 'GASP'>, 'unitless'), 'mission:summary:cruise_mass_final': (140320.0, 'lbm'), 'mission:summary:gross_mass': (175400, 'lbm')}
is a function that has a few tasks:
Read aircraft deck file
aircraft_filename
Read phase info file
phase_info
Build core subsystems
We have seen aircraft_filename
file (a .csv
file) in our level 1 examples. In level 1, we simply called it input file. An aircraft model can also be directly defined in Python, by setting up an AviaryValues
object with the desired inputs and options normally found in an input file. That object can be provided in the place of aircraft_filename
.
Engines are built by using aircraft:engine:data_file
in the .csv file. For example in aircraft_for_bench_GwGm.csv
file, we see:
aircraft:engine:data_file,models/engines/turbofan_28k.deck,unitless
So, aircraft:engine:data_file
has value models/engines/turbofan_28k.deck,unitless
. The top rows of engine deck file are:
Mach_Number (unitless) |
Altitude (ft) |
Throttle (unitless) |
Gross_Thrust (lbf) |
Ram_Drag (lbf) |
Fuel_Flow (lb/h) |
NOx_Rate (lb/h) |
---|---|---|---|---|---|---|
0.0, |
0.0, |
50.0, |
28928.1, |
0.0, |
8662.3, |
61.9894 |
0.0, |
0.0, |
48.0, |
26999.7, |
0.0, |
7932.6, |
49.2185 |
0.0, |
0.0, |
46.0, |
25071.1, |
0.0, |
7258.1, |
33.3976 |
0.0, |
0.0, |
42.0, |
21214.0, |
0.0, |
5979.1, |
19.8547 |
0.0, |
0.0, |
38.0, |
17356.9, |
0.0, |
4795.2, |
17.5877 |
Users can provide an EngineModel
instance of their own to use in Aviary’s propulsion systems by adding it to engine_models
.
Other subsystems, including mass, geometry, and aerodynamics, are set up according to which legacy code options the user has specified in their input file, using settings:equations_of_motion
and settings:mass_method
. Aerodynamics is set up to match the selected equations of motion, while geometry will use either GASP, FLOPS, or both methods as required to calculate all values needed by other subsystems.
Next we check the user-provided inputs:
prob.check_and_preprocess_inputs()
/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(
This method checks the user-supplied input values for any potential problems. These problems include variable names that are not recognized in Aviary, conflicting options or values, or units mismatching.
Next, we add pre-mission systems:
prob.add_pre_mission_systems()
This call adds a pre-mission group which includes propulsion, geometry, aerodynamics, and mass subsystems.
For height_energy
missions, aviary currently models FLOPS’ “simplified” takeoff as defined in mission/flops_based/phases/simplified_takeoff.py.
Next is the line
prob.add_phases()
Show code cell output
<dymos.trajectory.trajectory.Trajectory at 0x7f9a2acf6ab0>
which adds a sequence of core mission phases. In addition, if mission_method
is 2dof
and ascent
is a phase, it adds an equality constraint to the problem to ensure that the TAS at the end of the groundroll phase is equal to the rotation velocity at the start of the rotation phase (_add_groundroll_eq_constraint(phase)
). If mission_method
is height_energy
, it sets up trajectory parameters by calling setup_trajectory_params()
. If mission_method
is solved
, it has a block of code to make sure that the trajectory is smooth by applying boundary constraints between phases (e.g. fuselage pitch angle or true airspeed).
It follows by adding post-mission subsystems:
prob.add_post_mission_systems()
Similar to pre-mission, it adds a landing phase if include_landing
key of post_mission
has value of True
. If user chooses to define a post_mission
, it will override the default. For 2dof
missions, landing is defined in mission/gasp_based/ode/landing_ode.py. For simple
mission, landing means a simplified landing. Note that the solved
method currently doesn’t have any post mission systems.
The next line is
prob.link_phases()
This is important for allowing each phase of flight to pass to the next without discontinuities in the parameters. Consider Dymos’ Aircraft Balanced Field Length Calculation example. In that example, we see separate nonlinear boundary constraints, nonlinear path constraints, and phase continuity constraints between phases. We don’t want to go deeper in this function call, but just point out that each individual link can be set via dymos function link_phases
. See dymos API for more details.
The code blocks in this function (namely, link_phases()
) are for 2DOF
, simple
, and solved
missions. The links are set up based on physical principals (e.g. you can’t have instantaneous changes in mass, velocity, position etc.). Special care is required if the user selects a different or unusual set of phases.
Now, our aircraft and the mission are fully defined. We are ready to define an optimization problem. This is achieved by adding an optimization driver, adding design variables, and an objective.
For add_driver
function, we accept use_coloring=None
. Coloring is a technique that OpenMDAO uses to compute partial derivatives efficiently. This will become important later.
prob.add_driver(optimizer, max_iter=max_iter)
Drivers available for use in Aviary are SLSQP
, SNOPT
, and IPOPT
. The table below summarizes the basic setting along with sample values (the settings are options required by each optimizer):
Optimizers |
Drivers |
Settings |
---|---|---|
|
om.pyOptSparseDriver() |
|
|
om.pyOptSparseDriver() |
|
|
om.ScipyOptimizeDriver() |
|
Note that SLSQP
is freely available, but its performance is not as good as SNOPT
and IPOPT
sometimes. SNOPT
is a commercial optimizer, but it is free for academic use. IPOPT
is an open-source optimizer and it is free for all users.
Design variables (and constraints) are set in the line prob.add_design_variables()
:
prob.add_design_variables()
For default HEIGHT_ENERGY
mission model, it is relatively simple:
Design Variables |
Lower Bound |
Upper Bound |
Reference Value |
Units |
---|---|---|---|---|
Mission.Design.GROSS_MASS |
100.e3 |
200.e3 |
135.e3 |
lbm |
For default TWO_DEGREES_OF_FREEDOM
mission model, the design variables and constraints depend on the type of problems (SIZING
, ALTERNATE
, or FALLOUT
, see ProblemType
class in aviary/variable_info/enums.py
for details). First, there are four common design variables and two common constraints. There are two more design variables and two constraints for sizing problem.
Problem Type |
Design Variables |
Lower Bound |
Upper Bound |
Reference Value |
Units |
---|---|---|---|---|---|
Any |
Mission.Takeoff.ASCENT_T_INITIAL |
0 |
100 |
30.0 |
s |
Any |
Mission.Takeoff.ASCENT_DURATION |
1 |
1000 |
10.0 |
s |
Any |
tau_gear |
0.01 |
1.0 |
1 |
s |
Any |
tau_flaps |
0.01 |
1.0 |
1 |
s |
SIZING |
Mission.Design.GROSS_MASS |
10. |
400.e3 |
175_000 |
lbm |
SIZING |
Mission.Summary.GROSS_MASS |
10. |
400.e3 |
175_000 |
lbm |
ALTERNATE |
Mission.Summary.GROSS_MASS |
0 |
infinite |
175_000 |
lbm |
Problem Type |
Constraint |
Relation |
Value |
Reference Value |
Units |
Any |
h_fit.h_init_gear |
= |
50.0 |
50.0 |
ft |
Any |
h_fit.h_init_flaps |
= |
400.0 |
400.0 |
ft |
SIZING |
Mission.Constraints.RANGE_RESIDUAL |
= |
0 |
10 |
unitless |
ALTERNATE |
Mission.Constraints.RANGE_RESIDUAL |
= |
0 |
10 |
lbm |
In the above table, there are two hard-coded design variables: tau_gear
and tau_flaps
. They represent fractions of ascent time to start gear retraction and flaps retraction. There are two hard-coded constraints: h_fit.h_init_gear
and h_fit.h_init_flaps
. They are the altitudes of initial gear retraction and initial flaps retraction. The underscore in number “175_000” is for readability only.
There are other constraints using OpenMDAO’s EQConstraintComp
component. We will not go into the details as this part is complicated and needs special attention. Note that each subsystem (for example engine model) might have their own design variables (think, for example, sizing the engine). Aviary goes through all subsystems and adds appropriate design variables.
You can override all the functions in level 3. So, you can set up your constraints in level 3 if the above ones do not meet your requirements.
The optimization objective is added to the problem by this line:
prob.add_objective(objective_type=objective_type)
The selection of objective is a little complicated.
Earlier in this page, we have discussed the objective when objective_type=None
and mission_method
is 2DOF
. Let us discuss the other situations.
There are several objective types that users can choose: mass
, hybrid_objective
, fuel_burned
, and fuel
.
objective_type |
objective |
---|---|
mass |
|
hybrid_objective |
|
fuel_burned |
|
fuel |
|
As listed in the above, if objective_type="mass"
, the objective is the final value of Dynamic.Mission.MASS
at the end of the mission.
If objective_type="fuel"
, the objective is the Mission.Objectives.FUEL
.
There is a special objective type: hybrid_objective
. When objective_type="hybrid_objective"
, the objective is a mix of minimizing fuel burn and minimizing the mission duration:
obj = -final_mass / {takeoff_mass} + final_time / 5.
This is because if we just minimized fuel burn then the optimizer would probably fly the plane slowly to save fuel, but we actually care about some mix of minimizing fuel burn while providing a reasonable travel time for the passengers. This leads to the hybrid_objective
which seeks to minimize a combination of those two objectives. final_time
is the duration of the full mission and is usually in the range of hours. So, the denominator 5.
means 5 hours
. That’s just a value to scale the final_time variable. Since it’s a composite objective we didn’t want to have OpenMDAO do the scaling because the two variables in the objective are of a different order of magnitude. We will show an example of this objective type in level 2 discussion.
If objective_type=None
for a 2DOF
mission, Aviary will choose the objective based on mission_method
and problem_type
. We have discussed this case earlier in this page.
If objective_type=None
for a FLOPS
mission method, Aviary adds a fuel_burned
objective. In fact, this objective is available for FLOPS
mission only. That number you get is for the actual fuel burned in lbm. You may get something like fuel_burned
with the scaled value [3.91228276]
, reference value 1e+04
. It translates to the dimensional physical quantity of 39,122.8276
lbm. To see this in action, check the resulting reports/opt_report.html
file to see the optimal results.
Note: Aviary variable Mission.Objectives.FUEL
when using the GASP-based mission is actually a hybrid objective defined as
reg_objective = overall_fuel/10000 + ascent_duration/30.
where overall_fuel
has the unit of lbm
and ascent_duration
has the unit of seconds. In our case, settings:equations_of_motion = 2DOF
, the final value of objective is [5.5910123]
, with ref: 1.0
and units: blank
. The units should be interpreted as unitless
.
Here, ref
is the reference value. For different objectives, the range may vary significantly different. We want to normalize the value. Ideally, users should choose ref
such that the objective is in the range of (0,1)
. This is required by optimizer.
Note: Unfortunately, not all objective_type
and mission_method
combinations work.
Next is a line to call
prob.setup()
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]
This is a lightly wrapped OpenMDAO setup()
method for the problem. It allows us to do pre-
and post-setup
changes, like adding calls to set_input_defaults
and do some simple set_vals
if needed.
If we look at the signature of setup()
in OpenMDAO’s Problem class, we find that the available kwargs are: check
, logger
, mode
, force_alloc_complex
, distributed_vector_class
, local_vector_class
, and derivatives
. The ones that Aviary uses are check
and force_alloc_complex
. Argument check
is a flag to determine default checks are performed. Default checks are: ‘auto_ivc_warnings’, comp_has_no_outputs’, ‘dup_inputs’, ‘missing_recorders’, ‘out_of_order’, ‘solvers’, ‘system’, ‘unserializable_options’.
If force_alloc_complex is true, sufficient memory will be allocated to allow nonlinear vectors to store complex values while operating under complex step. For our example, we don’t use any of them.
For optimization problems, initial guesses are important.
prob.set_initial_guesses()
For solved_2DOF
and 2DOF
missions, this method performs several calls to set_val
on the trajectory for states and controls to seed the problem with reasonable initial guesses using initial_guesses
within corresponding phases (e.g. default_flops_phases.py
and default_gasp_phases.py
). For solved_2DOF
missions, it performs similar tasks but for hard-coded state parameters. This is reasonable because a solved_2DOF
mission is actually a level 3 Aviary approach. We will cover it in level 3 onboarding doc in the next page. Note that initial guesses for all phases are especially important for collocation methods.
The last line is to run the problem we just set up:
prob.run_aviary_problem()
'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 'problem5' was computed 3 times, taking 1.9341004169999678 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.9341 sec
Time to compute coloring: 0.1854 sec
Memory to compute coloring: 0.0000 MB
Coloring created on: 2024-11-19 19:09:22
/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.
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
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.3444527521514260e+01 3.0967714820926119e+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.353
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.3538
User Objective Time : 0.6986
User Sensitivity Time : 1.6261
Interface Time : 0.0195
Opt Solver Time: 0.0097
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.947046E-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.941332E-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.643173E-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.
This is a simple wrapper of Dymos’ run_problem() function. It allows the users to provide record_filename
, restart_filename
, suppress_solver_print
, and run_driver
. In our case, record_filename
is changed to aviary_history.db
and restart_filename
is set to None
. The rest of the arguments take default values. If a restart file name is provided, aviary (or dymos) will load the states, controls, and parameters as given in the provided case as the initial guess for the next run. We have discussed the .db
file in level 1 onboarding doc and will discuss how to use it to generate useful output in level 3 onboarding doc.
Finally, we can add a few print statements for the variables that we are interested:
print("Mission.Objectives.FUEL",
prob.get_val(Mission.Objectives.FUEL, units='unitless'))
print("Mission.Design.FUEL_MASS",
prob.get_val(Mission.Design.FUEL_MASS, units='lbm'))
print("Mission.Design.FUEL_MASS_REQUIRED",
prob.get_val(Mission.Design.FUEL_MASS_REQUIRED, units='lbm'))
print("Mission.Summary.TOTAL_FUEL_MASS",
prob.get_val(Mission.Summary.TOTAL_FUEL_MASS, units='lbm'))
print("Mission.Summary.GROSS_MASS (takeoff_mass)",
prob.get_val(Mission.Summary.GROSS_MASS, units='lbm'))
print("Mission.Landing.TOUCHDOWN_MASS (final_mass)",
prob.get_val(Mission.Landing.TOUCHDOWN_MASS, units='lbm'))
print()
print("Groundroll Final Mass (lbm)",
prob.get_val('traj.phases.groundroll.states:mass', units='lbm')[-1])
print("Rotation Final Mass (lbm)",
prob.get_val('traj.rotation.states:mass', units='lbm')[-1])
print("Ascent Final Mass (lbm)",
prob.get_val('traj.ascent.states:mass', units='lbm')[-1])
print("Accel Final Mass (lbm)",
prob.get_val('traj.accel.states:mass', units='lbm')[-1])
print("Climb1 Final Mass (lbm)",
prob.get_val('traj.climb1.states:mass', units='lbm')[-1])
print("Climb2 Final Mass (lbm)",
prob.get_val('traj.climb2.states:mass', units='lbm')[-1])
print("Cruise Final Mass (lbm)",
prob.get_val('traj.phases.cruise.rhs.calc_weight.mass', units='lbm')[-1])
print("Desc1 Final Mass (lbm)",
prob.get_val('traj.desc1.states:mass', units='lbm')[-1])
print("Desc2 Final Mass (lbm)",
prob.get_val('traj.desc2.states:mass', units='lbm')[-1])
print('done')
Mission.Objectives.FUEL [4.43116407]
Mission.Design.FUEL_MASS [42515.50721545]
Mission.Design.FUEL_MASS_REQUIRED [42515.50721545]
Mission.Summary.TOTAL_FUEL_MASS [42515.60248201]
Mission.Summary.GROSS_MASS (takeoff_mass) [174020.68225281]
Mission.Landing.TOUCHDOWN_MASS (final_mass) [136503.0797708]
Groundroll Final Mass (lbm) [173680.75323402]
Rotation Final Mass (lbm) [173669.56493953]
Ascent Final Mass (lbm) [173650.43374416]
Accel Final Mass (lbm) [173540.76672894]
Climb1 Final Mass (lbm) [172954.73533652]
Climb2 Final Mass (lbm) [170521.33461179]
Cruise Final Mass (lbm) 136760.9916381593
Desc1 Final Mass (lbm) [136641.67398654]
Desc2 Final Mass (lbm) [136503.0797708]
done
We will cover user customized outputs in level 3.
Level 2: Another example#
We now use a similar aircraft, a large single aisle commercial transport aircraft, but with a different mass estimation and mission method. Let us run Aviary using this input deck in level 1 first.
!aviary run_mission models/test_aircraft/aircraft_for_bench_FwFm.csv --max_iter 0 --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.6607447970000067 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.6607 sec
Time to compute coloring: 0.0519 sec
Memory to compute coloring: 0.1250 MB
Coloring created on: 2024-11-19 19:09:38
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....: 0
(scaled) (unscaled)
Objective...............: 2.9999999999999999e-01 2.9999999999999999e-01
Dual infeasibility......: 1.9052460444930253e-02 1.9052460444930253e-02
Constraint violation....: 1.9006004373650109e+02 1.9006004373650109e+02
Variable bound violation: 0.0000000000000000e+00 0.0000000000000000e+00
Complementarity.........: 1.0000000000000000e+17 1.0000000000000000e+17
Overall NLP error.......: 1.0000000000000000e+17 1.0000000000000000e+17
Number of objective function evaluations = 1
Number of objective gradient evaluations = 1
Number of equality constraint evaluations = 1
Number of inequality constraint evaluations = 1
Number of equality constraint Jacobian evaluations = 1
Number of inequality constraint Jacobian evaluations = 1
Number of Lagrangian Hessian evaluations = 0
Total seconds in IPOPT = 0.677
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: 0.6785
User Objective Time : 0.3856
User Sensitivity Time : 0.2826
Interface Time : 0.0051
Opt Solver Time: 0.0052
Calls to Objective Function : 2
Calls to Sens Function : 2
Objectives
Index Name Value
0 mission:objectives:fuel 3.000000E-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.002286E+00 1.000000E+30
1 mission:summary:gross_mass_0 c 5.714286E-05 1.002286E+00 1.000000E+30
2 traj.climb.t_duration_0 c 5.000000E-01 5.100000E-01 1.500000E+00
3 traj.climb.states:mass_0 c 0.000000E+00 7.956010E+00 1.000000E+17
4 traj.climb.states:mass_1 c 0.000000E+00 7.956010E+00 1.000000E+17
5 traj.climb.states:mass_2 c 0.000000E+00 7.956010E+00 1.000000E+17
6 traj.climb.states:mass_3 c 0.000000E+00 7.956010E+00 1.000000E+17
7 traj.climb.states:mass_4 c 0.000000E+00 7.956010E+00 1.000000E+17
8 traj.climb.states:mass_5 c 0.000000E+00 7.956010E+00 1.000000E+17
9 traj.climb.states:mass_6 c 0.000000E+00 7.956010E+00 1.000000E+17
10 traj.climb.states:mass_7 c 0.000000E+00 7.956010E+00 1.000000E+17
11 traj.climb.states:mass_8 c 0.000000E+00 7.956010E+00 1.000000E+17
12 traj.climb.states:mass_9 c 0.000000E+00 7.956010E+00 1.000000E+17
13 traj.climb.states:mass_10 c 0.000000E+00 7.956010E+00 1.000000E+17
14 traj.climb.states:mass_11 c 0.000000E+00 7.956010E+00 1.000000E+17
15 traj.climb.states:mass_12 c 0.000000E+00 7.956010E+00 1.000000E+17
16 traj.climb.states:mass_13 c 0.000000E+00 7.956010E+00 1.000000E+17
17 traj.climb.states:mass_14 c 0.000000E+00 7.956010E+00 1.000000E+17
18 traj.climb.states:mass_15 c 0.000000E+00 7.956010E+00 1.000000E+17
19 traj.climb.states:distance_0 c 0.000000E+00 9.999990E-03 1.000000E+15
20 traj.climb.states:distance_1 c 0.000000E+00 9.999990E-03 1.000000E+15
21 traj.climb.states:distance_2 c 0.000000E+00 9.999990E-03 1.000000E+15
22 traj.climb.states:distance_3 c 0.000000E+00 9.999990E-03 1.000000E+15
23 traj.climb.states:distance_4 c 0.000000E+00 9.999990E-03 1.000000E+15
24 traj.climb.states:distance_5 c 0.000000E+00 9.999990E-03 1.000000E+15
25 traj.climb.states:distance_6 c 0.000000E+00 9.999990E-03 1.000000E+15
26 traj.climb.states:distance_7 c 0.000000E+00 9.999990E-03 1.000000E+15
27 traj.climb.states:distance_8 c 0.000000E+00 9.999990E-03 1.000000E+15
28 traj.climb.states:distance_9 c 0.000000E+00 9.999990E-03 1.000000E+15
29 traj.climb.states:distance_10 c 0.000000E+00 9.999990E-03 1.000000E+15
30 traj.climb.states:distance_11 c 0.000000E+00 9.999990E-03 1.000000E+15
31 traj.climb.states:distance_12 c 0.000000E+00 9.999990E-03 1.000000E+15
32 traj.climb.states:distance_13 c 0.000000E+00 9.999990E-03 1.000000E+15
33 traj.climb.states:distance_14 c 0.000000E+00 9.999990E-03 1.000000E+15
34 traj.cruise.t_duration_0 c 5.000000E-01 5.100000E-01 1.500000E+00
35 traj.cruise.states:mass_0 c 0.000000E+00 7.956010E+00 1.000000E+17
36 traj.cruise.states:mass_1 c 0.000000E+00 7.956010E+00 1.000000E+17
37 traj.cruise.states:mass_2 c 0.000000E+00 7.956010E+00 1.000000E+17
38 traj.cruise.states:mass_3 c 0.000000E+00 7.956010E+00 1.000000E+17
39 traj.cruise.states:mass_4 c 0.000000E+00 7.956010E+00 1.000000E+17
40 traj.cruise.states:mass_5 c 0.000000E+00 7.956010E+00 1.000000E+17
41 traj.cruise.states:mass_6 c 0.000000E+00 7.956010E+00 1.000000E+17
42 traj.cruise.states:mass_7 c 0.000000E+00 7.956010E+00 1.000000E+17
43 traj.cruise.states:mass_8 c 0.000000E+00 7.956010E+00 1.000000E+17
44 traj.cruise.states:mass_9 c 0.000000E+00 7.956010E+00 1.000000E+17
45 traj.cruise.states:mass_10 c 0.000000E+00 7.956010E+00 1.000000E+17
46 traj.cruise.states:mass_11 c 0.000000E+00 7.956010E+00 1.000000E+17
47 traj.cruise.states:mass_12 c 0.000000E+00 7.956010E+00 1.000000E+17
48 traj.cruise.states:mass_13 c 0.000000E+00 7.956010E+00 1.000000E+17
49 traj.cruise.states:mass_14 c 0.000000E+00 7.956010E+00 1.000000E+17
50 traj.cruise.states:distance_0 c 0.000000E+00 9.999990E-03 1.000000E+15
51 traj.cruise.states:distance_1 c 0.000000E+00 9.999990E-03 1.000000E+15
52 traj.cruise.states:distance_2 c 0.000000E+00 9.999990E-03 1.000000E+15
53 traj.cruise.states:distance_3 c 0.000000E+00 9.999990E-03 1.000000E+15
54 traj.cruise.states:distance_4 c 0.000000E+00 9.999990E-03 1.000000E+15
55 traj.cruise.states:distance_5 c 0.000000E+00 9.999990E-03 1.000000E+15
56 traj.cruise.states:distance_6 c 0.000000E+00 9.999990E-03 1.000000E+15
57 traj.cruise.states:distance_7 c 0.000000E+00 9.999990E-03 1.000000E+15
58 traj.cruise.states:distance_8 c 0.000000E+00 9.999990E-03 1.000000E+15
59 traj.cruise.states:distance_9 c 0.000000E+00 9.999990E-03 1.000000E+15
60 traj.cruise.states:distance_10 c 0.000000E+00 9.999990E-03 1.000000E+15
61 traj.cruise.states:distance_11 c 0.000000E+00 9.999990E-03 1.000000E+15
62 traj.cruise.states:distance_12 c 0.000000E+00 9.999990E-03 1.000000E+15
63 traj.cruise.states:distance_13 c 0.000000E+00 9.999990E-03 1.000000E+15
64 traj.cruise.states:distance_14 c 0.000000E+00 9.999990E-03 1.000000E+15
65 traj.descent.t_duration_0 c 5.000000E-01 5.100000E-01 1.500000E+00
66 traj.descent.states:mass_0 c 0.000000E+00 7.956010E+00 1.000000E+17
67 traj.descent.states:mass_1 c 0.000000E+00 7.956010E+00 1.000000E+17
68 traj.descent.states:mass_2 c 0.000000E+00 7.956010E+00 1.000000E+17
69 traj.descent.states:mass_3 c 0.000000E+00 7.956010E+00 1.000000E+17
70 traj.descent.states:mass_4 c 0.000000E+00 7.956010E+00 1.000000E+17
71 traj.descent.states:mass_5 c 0.000000E+00 7.956010E+00 1.000000E+17
72 traj.descent.states:mass_6 c 0.000000E+00 7.956010E+00 1.000000E+17
73 traj.descent.states:mass_7 c 0.000000E+00 7.956010E+00 1.000000E+17
74 traj.descent.states:mass_8 c 0.000000E+00 7.956010E+00 1.000000E+17
75 traj.descent.states:mass_9 c 0.000000E+00 7.956010E+00 1.000000E+17
76 traj.descent.states:mass_10 c 0.000000E+00 7.956010E+00 1.000000E+17
77 traj.descent.states:mass_11 c 0.000000E+00 7.956010E+00 1.000000E+17
78 traj.descent.states:mass_12 c 0.000000E+00 7.956010E+00 1.000000E+17
79 traj.descent.states:mass_13 c 0.000000E+00 7.956010E+00 1.000000E+17
80 traj.descent.states:mass_14 c 0.000000E+00 7.956010E+00 1.000000E+17
81 traj.descent.states:distance_0 c 0.000000E+00 9.999990E-03 1.000000E+15
82 traj.descent.states:distance_1 c 0.000000E+00 9.999990E-03 1.000000E+15
83 traj.descent.states:distance_2 c 0.000000E+00 9.999990E-03 1.000000E+15
84 traj.descent.states:distance_3 c 0.000000E+00 9.999990E-03 1.000000E+15
85 traj.descent.states:distance_4 c 0.000000E+00 9.999990E-03 1.000000E+15
86 traj.descent.states:distance_5 c 0.000000E+00 9.999990E-03 1.000000E+15
87 traj.descent.states:distance_6 c 0.000000E+00 9.999990E-03 1.000000E+15
88 traj.descent.states:distance_7 c 0.000000E+00 9.999990E-03 1.000000E+15
89 traj.descent.states:distance_8 c 0.000000E+00 9.999990E-03 1.000000E+15
90 traj.descent.states:distance_9 c 0.000000E+00 9.999990E-03 1.000000E+15
91 traj.descent.states:distance_10 c 0.000000E+00 9.999990E-03 1.000000E+15
92 traj.descent.states:distance_11 c 0.000000E+00 9.999990E-03 1.000000E+15
93 traj.descent.states:distance_12 c 0.000000E+00 9.999990E-03 1.000000E+15
94 traj.descent.states:distance_13 c 0.000000E+00 9.999990E-03 1.000000E+15
95 traj.descent.states:distance_14 c 0.000000E+00 9.999990E-03 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.900600E+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 0.000000E+00 0.000000E+00 9.00000E+100
3 mission:constraints:mass_residual e 0.000000E+00 -3.729196E-01 0.000000E+00 E 9.00000E+100
4 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 3.026331E-04 0.000000E+00 E 9.00000E+100
5 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 2.662970E-04 0.000000E+00 E 9.00000E+100
6 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 2.331048E-04 0.000000E+00 E 9.00000E+100
7 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.602245E-04 0.000000E+00 E 9.00000E+100
8 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.084196E-04 0.000000E+00 E 9.00000E+100
9 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 3.715553E-04 0.000000E+00 E 9.00000E+100
10 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.345451E-04 0.000000E+00 E 9.00000E+100
11 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.236925E-04 0.000000E+00 E 9.00000E+100
12 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 4.230979E-04 0.000000E+00 E 9.00000E+100
13 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 3.567378E-04 0.000000E+00 E 9.00000E+100
14 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 3.600099E-04 0.000000E+00 E 9.00000E+100
15 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 3.663290E-04 0.000000E+00 E 9.00000E+100
16 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 1.804136E-04 0.000000E+00 E 9.00000E+100
17 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 1.815137E-04 0.000000E+00 E 9.00000E+100
18 traj.climb.collocation_constraint.defects:mass e 0.000000E+00 1.838039E-04 0.000000E+00 E 9.00000E+100
19 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 9.350828E-05 0.000000E+00 E 9.00000E+100
20 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -1.200026E-04 0.000000E+00 E 9.00000E+100
21 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -2.073895E-04 0.000000E+00 E 9.00000E+100
22 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.118317E-04 0.000000E+00 E 9.00000E+100
23 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.770935E-04 0.000000E+00 E 9.00000E+100
24 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -5.648226E-04 0.000000E+00 E 9.00000E+100
25 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -7.038547E-04 0.000000E+00 E 9.00000E+100
26 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -7.902210E-04 0.000000E+00 E 9.00000E+100
27 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -9.053112E-04 0.000000E+00 E 9.00000E+100
28 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -7.912636E-04 0.000000E+00 E 9.00000E+100
29 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -8.474854E-04 0.000000E+00 E 9.00000E+100
30 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -9.225030E-04 0.000000E+00 E 9.00000E+100
31 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.630193E-04 0.000000E+00 E 9.00000E+100
32 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.755304E-04 0.000000E+00 E 9.00000E+100
33 traj.climb.collocation_constraint.defects:distance e 0.000000E+00 -4.924808E-04 0.000000E+00 E 9.00000E+100
34 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.288911E-04 0.000000E+00 E 9.00000E+100
35 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.287930E-04 0.000000E+00 E 9.00000E+100
36 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.286337E-04 0.000000E+00 E 9.00000E+100
37 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.626051E-04 0.000000E+00 E 9.00000E+100
38 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.621411E-04 0.000000E+00 E 9.00000E+100
39 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.615286E-04 0.000000E+00 E 9.00000E+100
40 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 3.107090E-04 0.000000E+00 E 9.00000E+100
41 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 3.101222E-04 0.000000E+00 E 9.00000E+100
42 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 3.093585E-04 0.000000E+00 E 9.00000E+100
43 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.600114E-04 0.000000E+00 E 9.00000E+100
44 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.596504E-04 0.000000E+00 E 9.00000E+100
45 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 2.591793E-04 0.000000E+00 E 9.00000E+100
46 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.268334E-04 0.000000E+00 E 9.00000E+100
47 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.267481E-04 0.000000E+00 E 9.00000E+100
48 traj.cruise.collocation_constraint.defects:mass e 0.000000E+00 1.266343E-04 0.000000E+00 E 9.00000E+100
49 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.394659E-04 0.000000E+00 E 9.00000E+100
50 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.393043E-04 0.000000E+00 E 9.00000E+100
51 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.390812E-04 0.000000E+00 E 9.00000E+100
52 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.965844E-04 0.000000E+00 E 9.00000E+100
53 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.959096E-04 0.000000E+00 E 9.00000E+100
54 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.949776E-04 0.000000E+00 E 9.00000E+100
55 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -1.063689E-03 0.000000E+00 E 9.00000E+100
56 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -1.062733E-03 0.000000E+00 E 9.00000E+100
57 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -1.061412E-03 0.000000E+00 E 9.00000E+100
58 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.924158E-04 0.000000E+00 E 9.00000E+100
59 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.917378E-04 0.000000E+00 E 9.00000E+100
60 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -8.908015E-04 0.000000E+00 E 9.00000E+100
61 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.360338E-04 0.000000E+00 E 9.00000E+100
62 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.358709E-04 0.000000E+00 E 9.00000E+100
63 traj.cruise.collocation_constraint.defects:distance e 0.000000E+00 -4.356461E-04 0.000000E+00 E 9.00000E+100
64 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 2.874835E-05 0.000000E+00 E 9.00000E+100
65 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 2.850018E-05 0.000000E+00 E 9.00000E+100
66 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 2.808172E-05 0.000000E+00 E 9.00000E+100
67 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 5.703891E-05 0.000000E+00 E 9.00000E+100
68 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 5.600375E-05 0.000000E+00 E 9.00000E+100
69 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 5.406189E-05 0.000000E+00 E 9.00000E+100
70 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 6.339068E-05 0.000000E+00 E 9.00000E+100
71 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 6.070757E-05 0.000000E+00 E 9.00000E+100
72 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 5.550588E-05 0.000000E+00 E 9.00000E+100
73 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 4.496773E-05 0.000000E+00 E 9.00000E+100
74 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 4.187322E-05 0.000000E+00 E 9.00000E+100
75 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 4.024431E-05 0.000000E+00 E 9.00000E+100
76 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 1.965084E-05 0.000000E+00 E 9.00000E+100
77 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 1.980147E-05 0.000000E+00 E 9.00000E+100
78 traj.descent.collocation_constraint.defects:mass e 0.000000E+00 2.021077E-05 0.000000E+00 E 9.00000E+100
79 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -2.234890E-04 0.000000E+00 E 9.00000E+100
80 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -2.201934E-04 0.000000E+00 E 9.00000E+100
81 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -2.155369E-04 0.000000E+00 E 9.00000E+100
82 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.371245E-04 0.000000E+00 E 9.00000E+100
83 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.224634E-04 0.000000E+00 E 9.00000E+100
84 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.013397E-04 0.000000E+00 E 9.00000E+100
85 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.689527E-04 0.000000E+00 E 9.00000E+100
86 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.460253E-04 0.000000E+00 E 9.00000E+100
87 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -4.129717E-04 0.000000E+00 E 9.00000E+100
88 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -3.382739E-04 0.000000E+00 E 9.00000E+100
89 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -3.204058E-04 0.000000E+00 E 9.00000E+100
90 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -2.949513E-04 0.000000E+00 E 9.00000E+100
91 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -1.403842E-04 0.000000E+00 E 9.00000E+100
92 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -1.358041E-04 0.000000E+00 E 9.00000E+100
93 traj.descent.collocation_constraint.defects:distance e 0.000000E+00 -1.293934E-04 0.000000E+00 E 9.00000E+100
94 traj.phases.climb->path_constraint->throttle i 0.000000E+00 5.629170E-01 1.000000E+00 9.00000E+100
95 traj.phases.climb->path_constraint->throttle i 0.000000E+00 5.226949E-01 1.000000E+00 9.00000E+100
96 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.882858E-01 1.000000E+00 9.00000E+100
97 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.809262E-01 1.000000E+00 9.00000E+100
98 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.809262E-01 1.000000E+00 9.00000E+100
99 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.642184E-01 1.000000E+00 9.00000E+100
100 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.764746E-01 1.000000E+00 9.00000E+100
101 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.852476E-01 1.000000E+00 9.00000E+100
102 traj.phases.climb->path_constraint->throttle i 0.000000E+00 4.852476E-01 1.000000E+00 9.00000E+100
103 traj.phases.climb->path_constraint->throttle i 0.000000E+00 5.253139E-01 1.000000E+00 9.00000E+100
104 traj.phases.climb->path_constraint->throttle i 0.000000E+00 6.031896E-01 1.000000E+00 9.00000E+100
105 traj.phases.climb->path_constraint->throttle i 0.000000E+00 6.336275E-01 1.000000E+00 9.00000E+100
106 traj.phases.climb->path_constraint->throttle i 0.000000E+00 6.336275E-01 1.000000E+00 9.00000E+100
107 traj.phases.climb->path_constraint->throttle i 0.000000E+00 6.968775E-01 1.000000E+00 9.00000E+100
108 traj.phases.climb->path_constraint->throttle i 0.000000E+00 8.040961E-01 1.000000E+00 9.00000E+100
109 traj.phases.climb->path_constraint->throttle i 0.000000E+00 8.420271E-01 1.000000E+00 9.00000E+100
110 traj.phases.climb->path_constraint->throttle i 0.000000E+00 8.420271E-01 1.000000E+00 9.00000E+100
111 traj.phases.climb->path_constraint->throttle i 0.000000E+00 8.890541E-01 1.000000E+00 9.00000E+100
112 traj.phases.climb->path_constraint->throttle i 0.000000E+00 9.529013E-01 1.000000E+00 9.00000E+100
113 traj.phases.climb->path_constraint->throttle i 0.000000E+00 9.739942E-01 1.000000E+00 9.00000E+100
114 traj.phases.cruise->initial_boundary_constraint->throttle i 0.000000E+00 7.746548E-01 1.000000E+00 9.00000E+100
115 traj.phases.cruise->final_boundary_constraint->throttle i 0.000000E+00 8.450059E-01 1.000000E+00 9.00000E+100
116 traj.phases.descent->path_constraint->throttle i 0.000000E+00 3.427857E-01 1.000000E+00 9.00000E+100
117 traj.phases.descent->path_constraint->throttle i 0.000000E+00 3.166671E-01 1.000000E+00 9.00000E+100
118 traj.phases.descent->path_constraint->throttle i 0.000000E+00 2.856332E-01 1.000000E+00 9.00000E+100
119 traj.phases.descent->path_constraint->throttle i 0.000000E+00 2.768399E-01 1.000000E+00 9.00000E+100
120 traj.phases.descent->path_constraint->throttle i 0.000000E+00 2.768399E-01 1.000000E+00 9.00000E+100
121 traj.phases.descent->path_constraint->throttle i 0.000000E+00 2.353558E-01 1.000000E+00 9.00000E+100
122 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.836339E-01 1.000000E+00 9.00000E+100
123 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.692206E-01 1.000000E+00 9.00000E+100
124 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.692206E-01 1.000000E+00 9.00000E+100
125 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.352237E-01 1.000000E+00 9.00000E+100
126 traj.phases.descent->path_constraint->throttle i 0.000000E+00 9.832435E-02 1.000000E+00 9.00000E+100
127 traj.phases.descent->path_constraint->throttle i 0.000000E+00 8.585627E-02 1.000000E+00 9.00000E+100
128 traj.phases.descent->path_constraint->throttle i 0.000000E+00 8.585627E-02 1.000000E+00 9.00000E+100
129 traj.phases.descent->path_constraint->throttle i 0.000000E+00 5.463784E-02 1.000000E+00 9.00000E+100
130 traj.phases.descent->path_constraint->throttle i 0.000000E+00 1.645443E-02 1.000000E+00 9.00000E+100
131 traj.phases.descent->path_constraint->throttle i 0.000000E+00 5.165559E-03 1.000000E+00 9.00000E+100
132 traj.phases.descent->path_constraint->throttle i 0.000000E+00 5.165559E-03 1.000000E+00 9.00000E+100
133 traj.phases.descent->path_constraint->throttle i 0.000000E+00 -6.759847E-03 1.000000E+00 L 9.00000E+100
134 traj.phases.descent->path_constraint->throttle i 0.000000E+00 -2.188436E-02 1.000000E+00 L 9.00000E+100
135 traj.phases.descent->path_constraint->throttle i 0.000000E+00 -2.641202E-02 1.000000E+00 L 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.
Once again, to convert it to a level 2 model, we need to set all the arguments in level 1 manually.
By running a model in level 2 directly, we have the flexibility to modify the input parameters (e.g. phase_info
). Let us continue to make modifications and obtain a different run script shown below:
phase_info = {
'pre_mission': {
'include_takeoff': False,
'optimize_mass': False,
},
'cruise': {
'subsystem_options': {
'core_aerodynamics': {'method': 'computed'}
},
'user_options': {
'optimize_mach': False,
'optimize_altitude': False,
'polynomial_control_order': 1,
'num_segments': 2,
'order': 3,
'solve_for_distance': False,
'initial_mach': (0.72, 'unitless'),
'final_mach': (0.72, 'unitless'),
'mach_bounds': ((0.7, 0.74), 'unitless'),
'initial_altitude': (35000.0, 'ft'),
'final_altitude': (35000.0, 'ft'),
'altitude_bounds': ((23000.0, 38000.0), 'ft'),
'throttle_enforcement': 'boundary_constraint',
'fix_initial': True,
'constrain_final': False,
'fix_duration': False,
'initial_bounds': ((0.0, 0.0), 'min'),
'duration_bounds': ((10., 30.), 'min'),
},
'initial_guesses': {'time': ([0, 30], 'min')},
},
'post_mission': {
'include_landing': False,
},
}
# inputs that run_aviary() requires
aircraft_filename = "models/test_aircraft/aircraft_for_bench_FwFm.csv"
mission_method = "height_energy_energy"
mass_method = "FLOPS"
optimizer = "SLSQP"
analysis_scheme = av.AnalysisScheme.COLLOCATION
objective_type = None
record_filename = 'history.db'
restart_filename = None
# Build problem
prob = av.AviaryProblem(analysis_scheme)
# Load aircraft and options data from user
# Allow for user overrides here
prob.load_inputs(aircraft_filename, phase_info)
# Preprocess inputs
prob.check_and_preprocess_inputs()
prob.add_pre_mission_systems()
prob.add_phases()
prob.add_post_mission_systems()
# Link phases and variables
prob.link_phases()
prob.add_driver(optimizer, max_iter=0)
prob.add_design_variables()
# Load optimization problem formulation
# Detail which variables the optimizer can control
prob.add_objective(objective_type=objective_type)
prob.setup()
prob.set_initial_guesses()
prob.run_aviary_problem(record_filename)
print("done")
/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 '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 "
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] ---
--- cruise ---
[initial] 0.0000e+00 <= throttle <= 1.0000e+00 [unitless]
[final] 0.0000e+00 <= throttle <= 1.0000e+00 [unitless]
Model viewer data has already been recorded for Driver.
/usr/share/miniconda/envs/test/lib/python3.12/site-packages/openmdao/core/driver.py:659: DriverWarning:The following design variable initial conditions are out of their specified bounds:
traj.cruise.t_duration
val: [1800.]
lower: 600.0
upper: 1799.9999999999998
Set the initial value of the design variable to a valid value or set the driver option['invalid_desvar_behavior'] to 'ignore'.
Full total jacobian for problem 'problem13' was computed 3 times, taking 0.14468482299992047 seconds.
Total jacobian shape: (18, 16)
Jacobian shape: (18, 16) (25.35% nonzero)
FWD solves: 6 REV solves: 0
Total colors vs. total size: 6 vs 16 (62.50% improvement)
Sparsity computed using tolerance: 1e-25
Time to compute sparsity: 0.1447 sec
Time to compute coloring: 0.0081 sec
Memory to compute coloring: 0.0000 MB
Coloring created on: 2024-11-19 19:09:43
Iteration limit reached (Exit mode 9)
Current function value: 0.3
Iterations: 1
Function evaluations: 1
Gradient evaluations: 1
Optimization FAILED.
Iteration limit reached
-----------------------------------
done
/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.
As you see, there is a single phase cruise
, no takeoff, no landing. Note that we must set include_takeoff
to False
because Aviary internally tries to connect takeoff to climb phase which we don’t provide. There should be a check to see if both takeoff and climb phase exist first. Aviary still has many things to be improved.
We will see more details for what users can do in level 3.
Level 2 is where you can integrate user-defined external subsystems, which is one of the main features of the Aviary tool. Examples of external subsystems are: acoustics, battery modeling, etc.
Assume that you already have an external subsystem that you want to incorporate it into your model. We show how to add external subsystems via external_subsystems
key in phase_info
.
We will cover external subsystems in details in Models with External Subsystems page.
Summary#
As you see, level 2 is more flexible than level 1. In level 2, you can:
add/remove pre-defined mission phases (via
phase_info
, see example above);scale design variables (via reference value in
phase_info
)import additional files (e.g.
aero_data
);set pre-defined objective (e.g.
hybrid_objective
);add external subsystems (via
phase_info
);set
use_coloring
(see example above).
Most Aviary users should be well-served by Level 2; we have purposefully constructed it to be capable of most all use cases, even those on the forefront of research in aircraft design.
That being said, there are some cases where Level 2 is not sufficient and you may need additional flexibility. We are ready to move on to Level 3.