Dymos

Latest version: v1.12.0

Safety actively analyzes 681775 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 5

3.2.0

1.12.0

Oct 02, 2024

Dymos 1.12.0 primarily supports the updated paths to OpenMDAO output files in the OpenMDAO 3.35.0 release.

The Birkhoff transcription can involve extraordinarily long segments with hundreds of nodes. The lagrange polynomial interpolation algorith used with shorter segments is inefficient in this case and is replaced (for simulation) by
the use of cubic splines from scipy.interpolate. This provides fast interpolation that's accurate enough for simulation,
when derivatives are not needed.

The SolveIVP transcription, which has long been deprecated in favor of the more general and derivative-capable ExplicitShooting transcription, is removed.

Backwards Incompatible API Changes & Deprecations
- Removed `SolveIVP` and removed dead code from TranscriptionBase [1104](https://github.com/OpenMDAO/dymos/pull/1104)

Enhancements
- bokeh timeseries plots now comply with OpenMDAO's placement of recorder files. [1106](https://github.com/OpenMDAO/dymos/pull/1106)
- Faster interpolation for explicit shooting [1109](https://github.com/OpenMDAO/dymos/pull/1109)

Miscellaneous
- Added readme to pyproject.toml [1094](https://github.com/OpenMDAO/dymos/pull/1094)
- Reduced the memory allocation in the TimeseriesOutputComp in common use cases. [1096](https://github.com/OpenMDAO/dymos/pull/1096)
- Timeseries report tooltip hover change. [1098](https://github.com/OpenMDAO/dymos/pull/1098)
- Removed need for copy_build_artifacts in the doc build process. [1100](https://github.com/OpenMDAO/dymos/pull/1100)
- Removed use of newshape keyword argument from numpy reshape calls. [1102](https://github.com/OpenMDAO/dymos/pull/1102)
- Added a pre-commit configuration to enable automatic linting with ruff [1105](https://github.com/OpenMDAO/dymos/pull/1105)
- Added the Gong challenge problem benchmark for Birkhoff transcription. [1108](https://github.com/OpenMDAO/dymos/pull/1108)
- Updated GitHub Workflows [1111](https://github.com/OpenMDAO/dymos/pull/1111)

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](https://github.com/OpenMDAO/dymos/pull/1034)
- Updated GitHub workflow to use only the conda-forge channel for dependencies [1036](https://github.com/OpenMDAO/dymos/pull/1036)
- Some Birkhoff constraints are now treated as linear. [1043](https://github.com/OpenMDAO/dymos/pull/1043)
- Use sparse partials for the Birkhoff state residuals when OpenMDAO bug is fixed. [1055](https://github.com/OpenMDAO/dymos/pull/1055)
- Use Barycentric Lagrange Interpolation for controls in Simulation [1056](https://github.com/OpenMDAO/dymos/pull/1056)
- Changed oldest support python to 3.9 [1067](https://github.com/OpenMDAO/dymos/pull/1067)
- API Change for setting values [1072](https://github.com/OpenMDAO/dymos/pull/1072)
- Unify controls and polynomial controls [1078](https://github.com/OpenMDAO/dymos/pull/1078)
- Added optional `integ_var_options` for `time_options` when the integration variable is not time. [1079](https://github.com/OpenMDAO/dymos/pull/1079)
- Updated phase.load_case so that it uses the state_xxx_vals API. Specify parent when subproblems are used. [1087](https://github.com/OpenMDAO/dymos/pull/1087)
- Added Birkhoff Docs [1088](https://github.com/OpenMDAO/dymos/pull/1088)


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


Miscellaneous
- Replaced `setup.py` with `pyproject.toml` using `hatchling` backend [1052](https://github.com/OpenMDAO/dymos/pull/1052)
- Minor spelling fixes [1053](https://github.com/OpenMDAO/dymos/pull/1053)
- Added inline directive to notebooks that use matplotlib [1054](https://github.com/OpenMDAO/dymos/pull/1054)
- Make docs link correctly formatted [1059](https://github.com/OpenMDAO/dymos/pull/1059)
- Added skip to handle tests that need matplotlib and/or pydocstyle when not installed [1062](https://github.com/OpenMDAO/dymos/pull/1062)
- Modified `latest` workflow build to use petsc 3.21.0 [1064](https://github.com/OpenMDAO/dymos/pull/1064)

1.10.0

December 08, 2023

Dymos 1.10.0 includes a few performance improvements, more user-configurability of automatic solver placement, and a still-experimental implementation of the Birkhoff transcription.

Thanks to Shugo Kaneko for pointing out some issues with using dymos under MPI.
Timeseries jacobians were inefficient and used excessive memory when operating on a single system under MPI.
Also, the user now has more control over how solvers are added when necessary. Previously, the presence of a DirectSolver over a distributed system was causing an error.

Trajectory now has a `parallel_phases` option. When True (the default), the top level `Trajectory.phases` container will be an OpenMDAO ParallelGroup. Setting it to `False` makes `Trajectory.phases` a standard serial `OpenMDAO.api.Group` object.

Trajectory and Phase now both have an `auto_solvers` option. It is enabled by default and will result in appropriate nonlinear and linear solvers being placed when it is `True`.
Trajectory.phases needs a nonlinear solver when running phases in parallel under MPI AND the phases are directly connected.
Phases need a solver when there is implicit behavior due to a duration balance or the use of `solve_segments` is pseudospectral phases.

Backwards Incompatible API Changes & Deprecations
- None

Enhancements
- Reduce memory usage for timeseries jac computation [1001](https://github.com/OpenMDAO/dymos/pull/1001)
- Added Birkhoff Transcription (this feature is still somewhat experimental) [1008](https://github.com/OpenMDAO/dymos/pull/1008) [#1010](https://github.com/OpenMDAO/dymos/pull/1010) [#1021](https://github.com/OpenMDAO/dymos/pull/1021)

Bug Fixes
- Fixed python 3.12 compatibility issues. [1004](https://github.com/OpenMDAO/dymos/pull/1004)
- Fixed load_case logic to correctly handle negative-duration phases [1007](https://github.com/OpenMDAO/dymos/pull/1007)
- Boundary constraints in Birkhoff transcription changed to pull from boundary ODE [1018](https://github.com/OpenMDAO/dymos/pull/1018)
- Fixed an issue where applying DirectSolver to StateIndependentsComp was breaking when used with other linear solvers under MPI. [1020](https://github.com/OpenMDAO/dymos/pull/1020)
- Fixed Vanderpol example under updated OpenMDAO MPI operation. [1023](https://github.com/OpenMDAO/dymos/pull/1023)

Miscellaneous
- Added a job without MPI to the test workflow [998](https://github.com/OpenMDAO/dymos/pull/998)
- Removed redundant implementations of timeseries output components. [1005](https://github.com/OpenMDAO/dymos/pull/1005)
- Remove IVCs from control groups [1013](https://github.com/OpenMDAO/dymos/pull/1013)

1.9.1

September 14, 2023

Dymos 1.9.1 fixes a few bugs introduced in 1.9.0.
For problems in which phases are directly connected, the total derivatives
could be wrong in some cases due to the lack of a linear solver covering
the initial value defect. Also, control rates were showing up in timeseries
outputs by default. Now, as expected, they must be requested explicitly
as a timeseries output.

Backwards Incompatible API Changes & Deprecations
- None

Enhancements
- None

Bug Fixes
- Added linear solver for cases where states solved via optimizer have input_initial=True. [991](https://github.com/OpenMDAO/dymos/pull/991)
- Fixed an issue where control rate values are showing up in timeseries outputs by default. [987](https://github.com/OpenMDAO/dymos/pull/987)

Miscellaneous
- Minor tweaks to the github issue templates. [985](https://github.com/OpenMDAO/dymos/pull/985) [#993](https://github.com/OpenMDAO/dymos/pull/993)

1.9.0

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](https://openmdao.github.io/dymos/examples/cannonball_implicit_duration/cannonball_implicit_duration.html?highlight=duration).

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](https://github.com/OpenMDAO/dymos/pull/935)

Enhancements
- Remove state rates, control rates, and t_phase from the timeseries by default, and remove type prefix. [935](https://github.com/OpenMDAO/dymos/pull/935)
- Implicit duration [939](https://github.com/OpenMDAO/dymos/pull/939)
- Updated dymos to utilize new OpenMDAO load_case capability. [954](https://github.com/OpenMDAO/dymos/pull/954)
- Updated parameter introspection and traj parameters [964](https://github.com/OpenMDAO/dymos/pull/964)
- Allow parameter shape to be given as `None`, rather than just `_unspecified` [970](https://github.com/OpenMDAO/dymos/pull/970)

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

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

Page 1 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.