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.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d41b56e19e5738f6aa0872cf2de3fc31c8e6b9aa7844fc79306c231cde0465e7 |
|
MD5 | 0d85fbebf77dfc505ac2d15d44bbb2f8 |
|
BLAKE2b-256 | 9a1e32cdb6453521ec450c0ef104c98a3505f9b60fcd17b78865ecacf05776b3 |
Hashes for heyoka-6.1.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 654b700514925ae5ea52ba59b16bfa12cbf39e8cfcd7997bb1dcf4d966be45a4 |
|
MD5 | 1bb9e060609b442cc2762a1b1b40038b |
|
BLAKE2b-256 | a2c7982c907a0891e4e8735fb246ff4bc59ff82c77090a3cc37cbf1120e81027 |
Hashes for heyoka-6.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59949cdf86caec146dee81eaa6516c53c314e392337ea9c9f85e32c5e85fad5e |
|
MD5 | 7b13fb69ca77a99a5cb030b2ff8c8689 |
|
BLAKE2b-256 | ed848e6cedcb05808a06430f27d84c9eb76cb22492d5ede2ce99f4bac05961f8 |
Hashes for heyoka-6.1.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9bfd5f10a275a4facff8f1eaafbaf36a48094f41f3ee6aa417d9c5ab0703a5e2 |
|
MD5 | 8df991d1acc5373d38b74a7c04f56e88 |
|
BLAKE2b-256 | 38dfcd9b350d58c7b08a9428dba5c18e129fa4dbdc36b58d8cdd259382001259 |
Hashes for heyoka-6.1.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ad598aa047ad1c3b07f6d056933bcddf5fac2e163c357796c13552eb2703237 |
|
MD5 | 1295f2da50c07d7e04a1ffeb732f19ae |
|
BLAKE2b-256 | df13487f6227629d5b0a6262ad53496656f850c9c52799fece6334c55d623adb |
Hashes for heyoka-6.1.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 43414b9b6a83ca37780fa9b7440986a75d02c9f4750395c8dd5b66f7b801b3f4 |
|
MD5 | 259fd56307b5a3b4e9715d60fdac0f39 |
|
BLAKE2b-256 | d6100ed2c0e7e5f30fd97dd225f6d17a30ed316d0d781f1e39475770b05af073 |