Dymos 1.11.0
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
andphase.poylnomial_control_options
are deprecated in favor of the common use ofphase.set_control_options
andphase.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
fortime_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()
withisin()
#1081 - Stopped coloring plots popping up during tests #1082
- Fixed bug that caused aviary CI failure. #1083
Miscellaneous
- Replaced
setup.py
withpyproject.toml
usinghatchling
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