heyoka 4.0.0
Breaking changes
Version 4 of heyoka introduces several backwards-incompatible changes, most of which have been prompted by user feedback. The updated heyoka API should be more streamlined, easier to use and more difficult to misuse.
The detailed list of breaking changes is available at the following page, along with instructions on how to update your code for the API modifications:
https://bluescarni.github.io/heyoka/breaking_changes.html#bchanges-4-0-0
If you have questions, please do not hesitate to ask.
New compiled functions class
A new class that facilitates the creation and use of compiled functions, called cfunc
, has been introduced. This class has been available for a while in the Python bindings, and it now makes its official debut in the C++ API. A tutorial illustrating the use of this class is available here:
https://bluescarni.github.io/heyoka/tut_cfunc.html#tut-cfunc
Support for Lagrangian and Hamiltonian mechanics
heyoka is now able to automatically generate (and solve) the equations of motion from user-supplied Lagrangians and Hamiltonians. The Python bindings provide a tutorial illustrating this new feature:
https://bluescarni.github.io/heyoka.py/notebooks/lagrangian.html#lagham-tut
Enhancements to the step callback API
It is now possible to pass a range of step callbacks as an optional argument to the propagate_*()
functions. The callbacks will be automatically composed into a callback set and they will be executed at the end of each integration step.
spack availability
Thanks to work by @agseaton, heyoka is now available in the spack package manager. See the updated installation instructions:
https://bluescarni.github.io/heyoka/install.html#spack
Performance improvements
The substitution primitive subs()
has been substantially sped up.
The full changelog, as usual, is available here: