Python library for ODE integration via Taylor's method and LLVM
Project description
heyoka.py
Modern Taylor's method via just-in-time compilation
Explore the docs »
Report bug
·
Request feature
·
Discuss
The heyókȟa [...] is a kind of sacred clown in the culture of the Sioux (Lakota and Dakota people) of the Great Plains of North America. The heyoka is a contrarian, jester, and satirist, who speaks, moves and reacts in an opposite fashion to the people around them.
heyoka.py is a Python library for the integration of ordinary differential equations (ODEs) via Taylor's method, based on automatic differentiation techniques and aggressive just-in-time compilation via LLVM. Notable features include:
- support for single-precision, double-precision, extended-precision (80-bit and 128-bit), and arbitrary-precision floating-point types,
- high-precision zero-cost dense output,
- accurate and reliable event detection,
- builtin support for analytical mechanics - bring your own Lagrangians/Hamiltonians and let heyoka.py formulate and solve the equations of motion,
- builtin support for high-order variational equations - compute not only the solution, but also its partial derivatives,
- builtin support for machine learning applications via neural network models,
- the ability to maintain machine precision accuracy over tens of billions of timesteps,
- batch mode integration to harness the power of modern SIMD instruction sets (including AVX/AVX2/AVX-512/Neon/VSX),
- ensemble simulations and automatic parallelisation,
- interoperability with SymPy.
heyoka.py is based on the heyoka C++ library.
If you are using heyoka.py as part of your research, teaching, or other activities, we would be grateful if you could star the repository and/or cite our work. For citation purposes, you can use the following BibTex entry, which refers to the heyoka.py paper (arXiv preprint):
@article{10.1093/mnras/stab1032,
author = {Biscani, Francesco and Izzo, Dario},
title = "{Revisiting high-order Taylor methods for astrodynamics and celestial mechanics}",
journal = {Monthly Notices of the Royal Astronomical Society},
volume = {504},
number = {2},
pages = {2614-2628},
year = {2021},
month = {04},
issn = {0035-8711},
doi = {10.1093/mnras/stab1032},
url = {https://doi.org/10.1093/mnras/stab1032},
eprint = {https://academic.oup.com/mnras/article-pdf/504/2/2614/37750349/stab1032.pdf}
}
heyoka.py's novel event detection system is described in the following paper (arXiv preprint):
@article{10.1093/mnras/stac1092,
author = {Biscani, Francesco and Izzo, Dario},
title = "{Reliable event detection for Taylor methods in astrodynamics}",
journal = {Monthly Notices of the Royal Astronomical Society},
volume = {513},
number = {4},
pages = {4833-4844},
year = {2022},
month = {04},
issn = {0035-8711},
doi = {10.1093/mnras/stac1092},
url = {https://doi.org/10.1093/mnras/stac1092},
eprint = {https://academic.oup.com/mnras/article-pdf/513/4/4833/43796551/stac1092.pdf}
}
Installation
Via pip:
$ pip install heyoka
Via conda + conda-forge:
$ conda install heyoka.py
Documentation
The full documentation can be found here.
Authors
- Francesco Biscani (European Space Agency)
- Dario Izzo (European Space Agency)
License
heyoka.py is released under the MPL-2.0 license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for heyoka-6.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a2f1646b2f08bdf0248b82f73c4d4c2c0ddd92e5b3b6deb5c036891250dd237 |
|
MD5 | e4150495dc3520a3756b9c58304777ba |
|
BLAKE2b-256 | 81d6ebf0124520ba518620c88e20cc781f08a3f28c98f2336230eadb806cdded |
Hashes for heyoka-6.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7493f27add1194202a0b1cecd629511e7062f2774b539891d8a7def37506aca4 |
|
MD5 | 77c44b3e770eb416226423e754bd699b |
|
BLAKE2b-256 | 18f5cf2c766bd4a1938174820371f06f3dae7d2fed83823f39ce3d1e7ae31b45 |
Hashes for heyoka-6.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c90d26ab490e31dfe38febbda9118c32cb1705807da4e2c6af46c73261a7e72e |
|
MD5 | 78ba6d69f3ebe977e7ec0a00b54cfc27 |
|
BLAKE2b-256 | 40d1672e07ff3596fb8f85f3630575b691659e81794f4f4eafe0a4000bd68a60 |
Hashes for heyoka-6.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 642aca03e1dc5ae7c0f9bb61990e1497b9a8bc7055f19a80501cd883903c2614 |
|
MD5 | 35ab94d73d152def760ee4564910f313 |
|
BLAKE2b-256 | e1ffb4f3aae78c403ece4d3c55ea2cee37daec32c5edc944896bd95041ace0fb |
Hashes for heyoka-6.1.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 951787f2b63d24d4b03111b95f33c06798d37c110d69fba03636f541b9ee824c |
|
MD5 | 4be68a2ca9e64baf2b98d5bab2b8d060 |
|
BLAKE2b-256 | ab5e8c397346e6396dd61da29622cbc05fd2d5245a9f5a7894121b7997fb3243 |
Hashes for heyoka-6.1.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 721313b5e25634bb8ae315e8d6e9b4d57bd01dd8f6165e5ff489396089afcc88 |
|
MD5 | 78b19cfaa0cf81725204f12a0bca4c70 |
|
BLAKE2b-256 | 63214c296259655fdd060a013f8bb4714bce14b500862324aa30372451ed5d62 |