Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 35 additions & 63 deletions aviary/core/aviary_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
from dymos.utils.misc import _unspecified
from openmdao.utils.mpi import MPI

from aviary.core.post_mission_group import PostMissionGroup
from aviary.core.pre_mission_group import PreMissionGroup
from aviary.core.static_group import StaticGroup
from aviary.interface.utils import set_warning_format
from aviary.mission.energy_state_problem_configurator import EnergyStateProblemConfigurator
from aviary.mission.solved_two_dof_problem_configurator import SolvedTwoDOFProblemConfigurator
Expand Down Expand Up @@ -70,7 +69,7 @@ class AviaryGroup(om.Group):
def __init__(self, verbosity=None, **kwargs):
super().__init__(**kwargs)

self.post_mission = PostMissionGroup()
self.post_mission = StaticGroup()
self.verbosity = verbosity
self.external_subsystems = []
self.engine_models = []
Expand Down Expand Up @@ -206,6 +205,28 @@ def configure(self):
phase.indep_states.nonlinear_solver = om.NewtonSolver(solve_subsystems=True)
phase.indep_states.linear_solver = om.DirectSolver(rhs_checking=True)

def _override_verbosity(self, verbosity):
"""
Overrides verbosity setting for this method.

Parameters
----------
verbosity : int, Verbosity (optional)
Verbosity level requested for this method.

Returns
-------
Verbosity
New verbosity for this method.
"""
if verbosity is not None:
# compatibility with being passed int for verbosity
verbosity = Verbosity(verbosity)
else:
verbosity = self.verbosity # defaults to BRIEF

return verbosity

def load_inputs(
self,
aircraft_data,
Expand All @@ -224,13 +245,7 @@ def load_inputs(
This method is not strictly necessary; a user could also supply
an AviaryValues object and/or phase_info dict of their own.
"""
# `self.verbosity` is "true" verbosity for entire run. `verbosity` is verbosity
# override for just this method
if verbosity is not None:
# compatibility with being passed int for verbosity
verbosity = Verbosity(verbosity)
else:
verbosity = self.verbosity # defaults to BRIEF
verbosity = self._override_verbosity(verbosity)

# validate phase info modifier function
if phase_info_modifier is not None:
Expand Down Expand Up @@ -339,17 +354,10 @@ def load_external_subsystems(self, external_subsystems: list = [], verbosity=Non
----------
external_subsystems : list of SubsystemBuilders
List of all external subsystems to be added.

verbosity : int, Verbosity (optional)
Sets the printout level for the entire off-design problem that is ran.
Verbosity level for this API call.
"""
# `self.verbosity` is "true" verbosity for entire run. `verbosity` is verbosity
# override for just this method
if verbosity is not None:
# compatibility with being passed int for verbosity
verbosity = Verbosity(verbosity)
else:
verbosity = self.verbosity # defaults to BRIEF
verbosity = self._override_verbosity(verbosity)

for subsystem in external_subsystems:
if not isinstance(subsystem, SubsystemBuilder) and verbosity >= verbosity.BRIEF:
Expand All @@ -370,13 +378,7 @@ def check_and_preprocess_inputs(self, verbosity=None):
This method checks the user-supplied input values for any potential problems
and preprocesses the inputs to prepare them for use in the Aviary problem.
"""
# `self.verbosity` is "true" verbosity for entire run. `verbosity` is verbosity
# override for just this method
if verbosity is not None:
# compatibility with being passed int for verbosity
verbosity = Verbosity(verbosity)
else:
verbosity = self.verbosity # defaults to BRIEF
verbosity = self._override_verbosity(verbosity)

aviary_inputs = self.aviary_inputs
# Target_distance verification for all phases
Expand Down Expand Up @@ -559,7 +561,7 @@ def add_pre_mission_systems(self, verbosity=None):

A user can override this method with their own pre-mission systems as desired.
"""
pre_mission = PreMissionGroup()
pre_mission = StaticGroup()
all_subsystem_options = self.pre_mission_info.get('subsystem_options', {})

self.add_subsystem(
Expand All @@ -569,7 +571,7 @@ def add_pre_mission_systems(self, verbosity=None):
promotes_outputs=['aircraft:*', 'mission:*'],
)

# TODO temporary until way to merge PreMissionGroup and CorePreMission group is found
# TODO temporary until way to merge StaticGroup and CorePreMission group is found
core_subsystems = self.subsystems[0:5]

# Propulsion isn't included in core pre-mission group to avoid override step in
Expand Down Expand Up @@ -715,13 +717,7 @@ def add_phases(self, parallel_phases=True, verbosity=None, comm=None):
-------
traj: The Dymos Trajectory object containing the added mission phases.
"""
# `self.verbosity` is "true" verbosity for entire run. `verbosity` is verbosity
# override for just this method
if verbosity is not None:
# compatibility with being passed int for verbosity
verbosity = Verbosity(verbosity)
else:
verbosity = self.verbosity # defaults to BRIEF
verbosity = self._override_verbosity(verbosity)

if self.phase_info_modifier is not None:
self.mission_info, self.post_mission_info = self.phase_info_modifier(
Expand Down Expand Up @@ -824,13 +820,7 @@ def add_post_mission_systems(self, verbosity=None):

A user can override this with their own postmission systems.
"""
# `self.verbosity` is "true" verbosity for entire run. `verbosity` is verbosity
# override for just this method
if verbosity is not None:
# compatibility with being passed int for verbosity
verbosity = Verbosity(verbosity)
else:
verbosity = self.verbosity # defaults to BRIEF
verbosity = self._override_verbosity(verbosity)

post_mission = self.post_mission
self.add_subsystem(
Expand Down Expand Up @@ -1111,13 +1101,7 @@ def link_phases(self, verbosity=None, comm=None):
If a variable is common to two phases, it can be linked via a direct connection or a
constraint.
"""
# `self.verbosity` is "true" verbosity for entire run. `verbosity` is verbosity override for
# just this method
if verbosity is not None:
# compatibility with being passed int for verbosity
verbosity = Verbosity(verbosity)
else:
verbosity = self.verbosity # defaults to BRIEF
verbosity = self._override_verbosity(verbosity)

self._add_bus_variables_and_connect()
self._connect_mission_bus_variables()
Expand Down Expand Up @@ -1486,13 +1470,7 @@ def add_design_variables(self, problem_type: ProblemType = None, verbosity=None)
In all cases, a design variable is added for the final cruise mass of the aircraft, with no
upper bound, and a residual mass constraint is added to ensure that the mass balances.
"""
# `self.verbosity` is "true" verbosity for entire run. `verbosity` is verbosity
# override for just this method
if verbosity is not None:
# compatibility with being passed int for verbosity
verbosity = Verbosity(verbosity)
else:
verbosity = self.verbosity # defaults to BRIEF
verbosity = self._override_verbosity(verbosity)

all_subsystems = self.subsystems

Expand Down Expand Up @@ -1641,13 +1619,7 @@ def set_initial_guesses(self, parent_prob=None, parent_prefix='', verbosity=None
if not hasattr(self, 'traj'):
return

# `self.verbosity` is "true" verbosity for entire run. `verbosity` is verbosity
# override for just this method
if verbosity is not None:
# compatibility with being passed int for verbosity
verbosity = Verbosity(verbosity)
else:
verbosity = self.verbosity # defaults to BRIEF
verbosity = self._override_verbosity(verbosity)

target_prob = self
if parent_prob is not None and parent_prefix != '':
Expand Down
Loading
Loading