Skip to content

Dymos 1.9.0

Compare
Choose a tag to compare
@robfalck robfalck released this 07 Sep 12:20
· 83 commits to master since this release
82f2479

Release Notes for Dymos 1.9.0

September 07, 2023

Dymos 1.9.0 changes the default timeseries behavior so that state rates,
control rates, and t_phase are not included by default. These values tended
to clutter the timeseries plots on more complex problems.

A new add_duration_balance method is added to phases that allows the final time
of a phase to be found with a solver without the need for an optimizer. This is useful
for explicit shooting phases which are effectively just simulating out the dynamics
until some target condition is achieved. An example of this behavior is available in the docs.

Trajectory parameters are improved. Parameters can now have a mix of static and dynamic targets, which was not possible before.
Also, trajectories will now use variable data obtained by introspection in the phases for
setting properties of trajectory-level parameters.

The behavior of some scipy.sparse routines was changed in 1.11 and caused incorrect derivatives.
This has been addressed.

Dymos had previously been calling allgather excessively under MPI which could
cause performance issues during setup.

Finally, Trajectory.simulate() should now work correctly under MPI so that results can
be checked with explicit integration when working under MPI.

Backwards Incompatible API Changes & Deprecations

  • Remove state rates, control rates, and t_phase from the timeseries by default, and remove type prefix. #935

Enhancements

  • Remove state rates, control rates, and t_phase from the timeseries by default, and remove type prefix. #935
  • Implicit duration #939
  • Updated dymos to utilize new OpenMDAO load_case capability. #954
  • Updated parameter introspection and traj parameters #964
  • Allow parameter shape to be given as None, rather than just _unspecified #970

Bug Fixes

  • Fixed an error message that gave outdated instructions solve segments #930
  • Fixed a Trajectory.simulate method specification bug #931
  • Fixed issue where optimal trajectory parameters would also attempt to make corresponding phase parameter a design variable. #938
  • Fixed issue where "connected" could not be used when linking all variables of a phase #942
  • Fixed issues with scipy sparse storage in scipy 1.11 #943
  • Fixed an issue where grid refinement tests were still expecting some things to be in the timeseries. #946
  • Fixed openmdao warning messages. #950
  • Fixed timeseries plots under MPI so that all phases show up. #959
  • Fixed an MPI slowdown introduced by parameter introspection at the Trajectory level. #977
  • Fixed some issues that were causing simulation to fail under MPI. #978
  • Fixed an issue where dymos calling excessive allgathers during setup. #980
  • Fixed an issue where a DirectSolver was automatically added to a phase if any state has input_initial=True. #982

Miscellaneous

  • Changed all uses of the deprecated 'value' keyword to 'val' #926
  • Bump to next dev cycle version #927
  • Updated the GitHub workflow to test with '[all]' extra dependencies #929
  • Fixed out-of-order systems in some tests #941
  • Refactored time_extents away in favor of housing extents in param_comp #952
  • Set defect_scaler values to 1.0 in finite_burn_orbit_raise problem #953
  • Fixed a couple PEP8 failures #961
  • Added various phase options dictionaries to the API documentation. #956
  • Updated GitHub workflow to upload documentation to web site #965
  • Minor doc fix #967
  • Slight changes to scaling in the water rocket example. #969
  • Updated baseline test to use Numpy version 1.22.4 #975