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
File details
Details for the file heyoka-6.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: heyoka-6.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 101.3 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.13.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a2f1646b2f08bdf0248b82f73c4d4c2c0ddd92e5b3b6deb5c036891250dd237 |
|
MD5 | e4150495dc3520a3756b9c58304777ba |
|
BLAKE2b-256 | 81d6ebf0124520ba518620c88e20cc781f08a3f28c98f2336230eadb806cdded |
File details
Details for the file heyoka-6.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: heyoka-6.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 101.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7493f27add1194202a0b1cecd629511e7062f2774b539891d8a7def37506aca4 |
|
MD5 | 77c44b3e770eb416226423e754bd699b |
|
BLAKE2b-256 | 18f5cf2c766bd4a1938174820371f06f3dae7d2fed83823f39ce3d1e7ae31b45 |
File details
Details for the file heyoka-6.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: heyoka-6.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 101.3 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c90d26ab490e31dfe38febbda9118c32cb1705807da4e2c6af46c73261a7e72e |
|
MD5 | 78ba6d69f3ebe977e7ec0a00b54cfc27 |
|
BLAKE2b-256 | 40d1672e07ff3596fb8f85f3630575b691659e81794f4f4eafe0a4000bd68a60 |
File details
Details for the file heyoka-6.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: heyoka-6.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 101.3 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 642aca03e1dc5ae7c0f9bb61990e1497b9a8bc7055f19a80501cd883903c2614 |
|
MD5 | 35ab94d73d152def760ee4564910f313 |
|
BLAKE2b-256 | e1ffb4f3aae78c403ece4d3c55ea2cee37daec32c5edc944896bd95041ace0fb |
File details
Details for the file heyoka-6.1.2-cp39-cp39-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: heyoka-6.1.2-cp39-cp39-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 101.3 MB
- Tags: CPython 3.9, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 951787f2b63d24d4b03111b95f33c06798d37c110d69fba03636f541b9ee824c |
|
MD5 | 4be68a2ca9e64baf2b98d5bab2b8d060 |
|
BLAKE2b-256 | ab5e8c397346e6396dd61da29622cbc05fd2d5245a9f5a7894121b7997fb3243 |
File details
Details for the file heyoka-6.1.2-cp38-cp38-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: heyoka-6.1.2-cp38-cp38-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 101.3 MB
- Tags: CPython 3.8, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 721313b5e25634bb8ae315e8d6e9b4d57bd01dd8f6165e5ff489396089afcc88 |
|
MD5 | 78b19cfaa0cf81725204f12a0bca4c70 |
|
BLAKE2b-256 | 63214c296259655fdd060a013f8bb4714bce14b500862324aa30372451ed5d62 |