Skip to content

Commit 10ef889

Browse files
Merge pull request #888 from Kenneth-T-Moore/bwb
A few fixes to #876.
2 parents 74f143d + b2a5df6 commit 10ef889

19 files changed

+86
-300
lines changed

aviary/examples/multi_mission/run_multimission_example.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ def multi_mission_example():
103103
# TODO: MULTI_MISSION cannot handle RANGE objectives correctly at the moment.
104104

105105
# optimizer and iteration limit are optional provided here
106-
prob.add_driver('IPOPT', max_iter=50)
106+
# Note: IPOPT needs more iters than SNOPT.
107+
prob.add_driver('IPOPT', max_iter=70)
107108
prob.add_design_variables()
108109

109110
prob.setup()

aviary/interface/methods_for_level2.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -502,15 +502,13 @@ def add_driver(self, optimizer=None, use_coloring=None, max_iter=50, verbosity=N
502502
driver.options['print_opt_prob'] = True
503503

504504
# optimizer agnostic settings
505-
if verbosity >= Verbosity.VERBOSE: # VERBOSE, DEBUG
506-
driver.options['debug_print'] = ['desvars']
507-
if verbosity == Verbosity.DEBUG:
508-
driver.options['debug_print'] = [
509-
'desvars',
510-
'ln_cons',
511-
'nl_cons',
512-
'objs',
513-
]
505+
if verbosity == Verbosity.DEBUG:
506+
driver.options['debug_print'] = [
507+
'desvars',
508+
'ln_cons',
509+
'nl_cons',
510+
'objs',
511+
]
514512

515513
def add_design_variables(self, verbosity=None):
516514
"""

aviary/mission/two_dof_problem_configurator.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,15 @@ def link_phases(self, aviary_group, phases, connect_directly=True):
465465
phase1, phase2, 'mass', 'mass', connected=False, ref=1.0e5
466466
)
467467

468+
# This isn't computed, but is instead set in the cruise phase_info.
469+
# We still need altitude continuity.
470+
# Note: if both sides are Breguet Range, the user is doing something odd like a
471+
# step cruise, so don't enforce a constraint.
472+
if not (analytic1 and analytic2):
473+
aviary_group.traj.add_linkage_constraint(
474+
phase1, phase2, 'altitude', 'altitude', connected=False, ref=1.0e4
475+
)
476+
468477
# add all params and promote them to aviary_group level
469478
ParamPort.promote_params(
470479
aviary_group,

aviary/models/aircraft/blended_wing_body/generic_BWB_phase_info.py

Lines changed: 0 additions & 259 deletions
This file was deleted.

aviary/validation_cases/benchmark_tests/test_FLOPS_balanced_field_length.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ def _do_run(self, driver: Driver, optimizer, *args):
122122
takeoff_trajectory_builder.apply_initial_guesses(takeoff, 'traj')
123123

124124
# run the problem
125-
dm.run_problem(takeoff, run_driver=True, simulate=True, make_plots=False)
125+
takeoff.result = dm.run_problem(takeoff, run_driver=True, simulate=True, make_plots=False)
126+
127+
self.assertTrue(takeoff.result.success)
126128

127129
# takeoff.model.traj.phases.brake_release_to_decision_speed.list_inputs(print_arrays=True)
128130
# takeoff.model.list_outputs(print_arrays=True)

aviary/validation_cases/benchmark_tests/test_FLOPS_based_sizing_N3CC.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ class ProblemPhaseTestCase(unittest.TestCase):
8282
def bench_test_sizing_N3CC(self):
8383
prob = run_trajectory(sim=False)
8484

85+
# self.assertTrue(prob.result.success)
86+
8587
times_climb = prob.get_val('traj.climb.timeseries.time', units='s')
8688
thrusts_climb = prob.get_val('traj.climb.timeseries.thrust_net_total', units='N')
8789
times_cruise = prob.get_val('traj.cruise.timeseries.time', units='s')

aviary/validation_cases/benchmark_tests/test_FLOPS_detailed_landing.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,9 @@ def _do_run(self, driver: Driver, optimizer, *args):
116116
landing_trajectory_builder.apply_initial_guesses(landing, 'traj')
117117

118118
# run the problem
119-
dm.run_problem(landing, run_driver=True, simulate=True, make_plots=False)
119+
landing.result = dm.run_problem(landing, run_driver=True, simulate=True, make_plots=False)
120+
121+
# self.assertTrue(landing.result.success)
120122

121123
# Field length
122124
# N3CC FLOPS output line 1773

aviary/validation_cases/benchmark_tests/test_FLOPS_detailed_takeoff.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,9 @@ def _do_run(self, driver: Driver, optimizer, *args):
139139
takeoff_trajectory_builder.apply_initial_guesses(takeoff, 'traj')
140140

141141
# run the problem
142-
dm.run_problem(takeoff, run_driver=True, simulate=True, make_plots=False)
142+
takeoff.result = dm.run_problem(takeoff, run_driver=True, simulate=True, make_plots=False)
143+
144+
self.assertTrue(takeoff.result.success)
143145

144146
# liftoff.rhs_all.list_inputs(print_arrays=True)
145147
# takeoff.model.list_outputs(print_arrays=True)

aviary/validation_cases/benchmark_tests/test_battery_in_a_mission.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ def test_subsystems_in_a_mission(self):
9292
prob.set_val(av.Aircraft.Battery.ADDITIONAL_MASS, 115, units='lbm')
9393

9494
prob.run_aviary_problem()
95+
self.assertTrue(prob.result.success)
9596

9697
electric_energy_used_cruise2 = prob.get_val(
9798
f'traj.cruise2.timeseries.{av.Dynamic.Vehicle.CUMULATIVE_ELECTRIC_ENERGY_USED}',

aviary/validation_cases/benchmark_tests/test_bench_FwFm.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ def test_bench_FwFm_IPOPT(self):
202202
optimizer='IPOPT',
203203
)
204204

205+
# self.assertTrue(prob.result.success)
205206
compare_against_expected_values(prob, self.expected_dict)
206207

207208
@require_pyoptsparse(optimizer='SNOPT')
@@ -214,6 +215,7 @@ def test_bench_FwFm_SNOPT(self):
214215
optimizer='SNOPT',
215216
)
216217

218+
# self.assertTrue(prob.result.success)
217219
compare_against_expected_values(prob, self.expected_dict)
218220

219221
# This is one of the few places we test Height Energy + simple takeoff.
@@ -238,7 +240,7 @@ def test_bench_FwFm_SNOPT_MPI(self):
238240
max_iter=50,
239241
optimizer='SNOPT',
240242
)
241-
243+
# self.assertTrue(prob.result.success)
242244
compare_against_expected_values(prob, self.expected_dict)
243245

244246

0 commit comments

Comments
 (0)