Skip to content

Dymos 1.11.0

Compare
Choose a tag to compare
@swryan swryan released this 08 Aug 18:04
· 16 commits to master since this release
ec59282

Release Notes for Dymos 1.11.0

August 08, 2024

Dymos 1.11.0 includes the initial implementation of the Birkhoff transcription and a number of other significant improvements. These improvements have focused on the ability to the user to switch transcriptions or control types with a minimal change to their scripts.

Unification of controls and polynomial controls

The separate APIs for controls and polynomial controls are no more, in favor of the set_control_options or add_control methods that can be used to either add a standard "fully collocated" control or a "polynomial" control. Methods set_polynomial_control_options and add_polynomial_control are deprecated.

set_time_val, set_state_val, set_control_val, and set_parameter_val

The Birkhoff transcription is significantly different from the Gauss-Lobatto and Radau transcriptions in that it requires the estimated state rate, the initial state value, and the final state value to be additional design variables. This information is redundant from the user's perspective, but provides the Birkhoff method with some greater degree of robustness.

To remove the need to provide these extra values when using the Birkhoff transcription, the set_state_val method on phase will automatically populate them based upon the interpolated values of the state in the phase. To make the dymos API consistent, similar methods are added for set_time_val, set_control_val, and set_parameter_val.

integ_var_options and set_integ_var_options

For cases when the integration variable is not time, the notion of using phase.time_options and phase.set_time_options can be confusing.
For this reason, phase.integ_var_options and phase.set_integ_var_options have been added as alias to phase.time_options and phase.set_time_options, respectively.

Backwards Incompatible API Changes & Deprecations

  • set_polynomial_control_options and phase.poylnomial_control_options are deprecated in favor of the common use of phase.set_control_options and phase.control_options where an order for the control is specified if it is a polynomial control.

Enhancements

  • Changed phase default NonlinearSolver to have a maxiter of 100. #1034
  • Updated GitHub workflow to use only the conda-forge channel for dependencies #1036
  • Some Birkhoff constraints are now treated as linear. #1043
  • Use sparse partials for the Birkhoff state residuals when OpenMDAO bug is fixed. #1055
  • Use Barycentric Lagrange Interpolation for controls in Simulation #1056
  • Changed oldest support python to 3.9 #1067
  • API Change for setting values #1072
  • Unify controls and polynomial controls #1078
  • Added optional integ_var_options for time_options when the integration variable is not time. #1079
  • Updated phase.load_case so that it uses the state_xxx_vals API. Specify parent when subproblems are used. #1087
  • Added Birkhoff Docs #1088

Bug Fixes

  • Fixed a bug that was causing trajectory result reports not to be displayed in the documentation. #1032
  • Fixed an issue where matplotlib was not required to install dymos without specifications but would fail to import. #1035
  • Fixed an issue with timeseries reports and the Birkhoff transcription. #1040
  • Fixed issue with running trajectory timeseries report under MPI #1046
  • Fix for test failure in test_error_estimation.py #1047
  • Fixed matplotlib calls that were broken by a change in the matplotlib API #1070
  • Fixed a logic issue in Birkhoff timeseries outputs. #1071
  • Fixed a bug where timeserires report use of fig.circle instead of fig.scatter stopped working in Bokeh 3.4. #1073
  • Replace deprecated numpy function in1d() with isin() #1081
  • Stopped coloring plots popping up during tests #1082
  • Fixed bug that caused aviary CI failure. #1083

Miscellaneous

  • Replaced setup.py with pyproject.toml using hatchling backend #1052
  • Minor spelling fixes #1053
  • Added inline directive to notebooks that use matplotlib #1054
  • Make docs link correctly formatted #1059
  • Added skip to handle tests that need matplotlib and/or pydocstyle when not installed #1062
  • Modified latest workflow build to use petsc 3.21.0 #1064