Previously dymos automatically assigned a DirectSolver to StateIndependentsComp when necessary, but this was problematic depending on the layout of the systems on MPI (mostly due to the presence of distributed systems within the ODE.
Dymos needs solvers on phases in the following conditions:
solve_segments is True for one or more states in pseudospectral and Birkhoff transcriptions.
pseudospectral phases with input_initial set to True for one or more states
duration_balance is used and therefore a residual is associated with the time duration of a phase.
By default, Dymos will automatically assign NewtonSolver and DirectSolver to the phase if one of these conditions is met.
Furthermore, if a Trajectory has its phases under a ParallelGroup and there are explicit connections between these phases, some form of solver is required to ensure that the inputs/ouputs between the phases are consistent.
By default, Dymos will add NonlinearBlockJac and PETScKrylov as the default solvers in trajectory.phases when this is the case.
The user can bypass this behavior by assigning some other solver to the phase or Trajectory.phases. If the user really truly wants to use a RunOnce solver in these situations, then the new Trajectory and Phase option auto_solvers should be set to False.
Adds new options to Trajectory:
parallel_phases dictates whether the top level phase group is a ParallelGroup or a standard Group. Setting this to False allows the user to force phases to run in series when operating in parallel.
auto_solvers is True by default which causes dymos to attempt to place solvers where it thinks they are necessary. Setting this to False will disable this behavior.
New options for Phase
auto_solvers is True by default which causes dymos to attempt to place solvers where it thinks they are necessary. Setting this to False will disable this behavior.
coverage: 92.025%. first build
when pulling 0e041db215e088975907f9ebdad5b7543514f8d7 on robfalck:i1009_2
into 10c2df0ba7e498d155890814f82ddee70c7bec66 on OpenMDAO:master.
Summary
Previously dymos automatically assigned a DirectSolver to StateIndependentsComp when necessary, but this was problematic depending on the layout of the systems on MPI (mostly due to the presence of distributed systems within the ODE.
Dymos needs solvers on phases in the following conditions:
solve_segments
is True for one or more states in pseudospectral and Birkhoff transcriptions.input_initial
set toTrue
for one or more statesduration_balance
is used and therefore a residual is associated with the time duration of a phase. By default, Dymos will automatically assignNewtonSolver
andDirectSolver
to the phase if one of these conditions is met.Furthermore, if a Trajectory has its phases under a ParallelGroup and there are explicit connections between these phases, some form of solver is required to ensure that the inputs/ouputs between the phases are consistent. By default, Dymos will add NonlinearBlockJac and PETScKrylov as the default solvers in
trajectory.phases
when this is the case.The user can bypass this behavior by assigning some other solver to the phase or
Trajectory.phases
. If the user really truly wants to use a RunOnce solver in these situations, then the new Trajectory and Phase optionauto_solvers
should be set toFalse
.Adds new options to Trajectory:
parallel_phases
dictates whether the top level phase group is a ParallelGroup or a standard Group. Setting this toFalse
allows the user to force phases to run in series when operating in parallel.auto_solvers
isTrue
by default which causes dymos to attempt to place solvers where it thinks they are necessary. Setting this toFalse
will disable this behavior.New options for Phase
auto_solvers
isTrue
by default which causes dymos to attempt to place solvers where it thinks they are necessary. Setting this toFalse
will disable this behavior.Related Issues
Backwards incompatibilities
None
New Dependencies
None