Dymos

Latest version: v1.10.0

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

Scan your dependencies

Page 1 of 5

3.2.0

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)

1.8.0

April 18, 2023

Dymos 1.8.0 removes some deprecated OpenMDAO features that are removed as of version 3.26.0.
It also adds a new trajectory results report that is generated by `dymos.run_problem(..., make_plots=True)`.
This single HTML file contains summaries of the parameters in each phase as well as plots of the timeseries values
across phases in each trajectory.
Generating this file requires `bokeh` rather than matplotlib - a message in the HTML file will inform the user if bokeh
was unavailable.
ExplicitShooting is now consistent with `solve_segments` in the way initial state values are specified.
This release also provides better logic when connecting variables of different units via phase linkages.

Backwards Incompatible API Changes & Deprecations
- Remove deprecated src_indices argument in add_parameter() [920](https://github.com/OpenMDAO/dymos/pull/920)
- Initial states in ExplicitShooting now provided with `phase_path.initial_states:state_name` [915](https://github.com/OpenMDAO/dymos/pull/915)

Enhancements
- trajectory results report now automatically generated by run_problem [918](https://github.com/OpenMDAO/dymos/pull/918)

Bug Fixes
- Added better logic to detect different units across linkage constraints. [913](https://github.com/OpenMDAO/dymos/pull/913)

Miscellaneous
- Documentation fixes [906](https://github.com/OpenMDAO/dymos/pull/906)
- Cleaned up GitHub workflows [907](https://github.com/OpenMDAO/dymos/pull/907)
- Minor changes focused on plotting utility [908](https://github.com/OpenMDAO/dymos/pull/908)
- Documentation fixes [909](https://github.com/OpenMDAO/dymos/pull/909)
- Replaced deprecated 'value' keyword with 'val' [910](https://github.com/OpenMDAO/dymos/pull/910)
- Fixed missing component in Re-entry docs [914](https://github.com/OpenMDAO/dymos/pull/914)

1.7.0

February 09, 2023

Version 1.7.0 contains some significant enhancements to its capabilities.

Major improvements include:
- Users may now specify boundary constraints, path constraints, and the objective within a phase as expressions. These expressions must contain an equals sign and must be complex-step-safe. This allows the user to impose constraints or objectives on quantities that may not be computed by the given equations of motion model.
- The user can now rename the time variable. Integration with respect to another variable (such as range for an aircraft) has always been possible, but dymos still always called the variable "time". Now, it will be more clear.
- The ExplicitShooting transcription has been reworked to include a continuous adjoint for derivatives and uses the stock scipy.integrate.solve_ivp integrators to perform the actual integraiton. Note that this method may result in inaccurate derivatives when the time step varies widely thoughout an integration. (We're working on that part).
- Imposing rate2 continuity on controls would previously generate confusing errors with some optimizers like SLSQP. If the polynomial order of the control representation was quadratic, then the second derivative would always be zero. Continuity was thus guaranteed, but SLSQP would fail because it lacked the ability to affect that continuity despite it always being satisfied. Now Dymos will only respect control rate2 continuity across segment junctions if it can affect continuity at the segment junction.
- The `run_problem` method now includes a sanity check on time bounds. If it detects that the linkage constraints between two phases in time cannot be satisfied due to initial time and duration bounds on all previous phases, a warning will be raised.

Backwards Incompatible API Changes & Deprecations

- Deprecated Trajectory.add_linkage_constraint arguments sign_a and sign_b [888](https://github.com/OpenMDAO/dymos/pull/888)
- Deprecated SolveIVP transcription. The `simulate` method now uses the ExplicitShooting transcription without derivatives. [898](https://github.com/OpenMDAO/dymos/pull/898)

Enhancements

- Added ability to control continuity scaling for states and controls. [866](https://github.com/OpenMDAO/dymos/pull/866)
- Parameter flow added to linkage report diagram [873](https://github.com/OpenMDAO/dymos/pull/873)
- Added ability to allow the user to change the name of the integration variable. [874](https://github.com/OpenMDAO/dymos/pull/874)
- Added ability to add expressions as constraints [875](https://github.com/OpenMDAO/dymos/pull/875)
- Added the derivative of speed of sound wrt altitude as an output [879](https://github.com/OpenMDAO/dymos/pull/879)
- Phase objectives may now be given as expressions. [880](https://github.com/OpenMDAO/dymos/pull/880)
- Interim continuous-adjoint shooting implementation [885](https://github.com/OpenMDAO/dymos/pull/885)
- Replaced existing ExplicitShooting instance with the continuous-adjoint Implementation [891](https://github.com/OpenMDAO/dymos/pull/891)
- Selectively apply rate2 continuity to indices where it can be impacted. [896](https://github.com/OpenMDAO/dymos/pull/896)
- Raise an exception if the initial time of a phase is unreachable [899](https://github.com/OpenMDAO/dymos/pull/899)

Bug Fixes

- Fixed load_case when a phase does not exist in the case. [863](https://github.com/OpenMDAO/dymos/pull/863)
- Fixed url in _config.yml so that documentation examples can open at the Google colab. [868](https://github.com/OpenMDAO/dymos/pull/868)
- Fixed dymos.load_case so that it does not load states or controls into AnalyticPhases [871](https://github.com/OpenMDAO/dymos/pull/871)
- Fixed an unnecessary error when linking phases with different units via connection. [872](https://github.com/OpenMDAO/dymos/pull/872)
- Handle parameter names containing colons in Dymos linkage report [900](https://github.com/OpenMDAO/dymos/pull/900)

Miscellaneous

- Fixed broken image links in the water rocket example in the documentation. [902](https://github.com/OpenMDAO/dymos/pull/902)

Page 1 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.