Skip to main content

Python library for ODE integration via Taylor's method and LLVM

Project description

heyoka.py

Build Status Build Status

Anaconda-Server Badge PyPI


Logo

Modern Taylor's method via just-in-time compilation
Explore the docs »

Report bug · Request feature · Discuss

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 operational Earth-orbiting spacecraft analysis, including frame transformations, high-fidelity geopotential models, Earth Orientation Parameters (EOP), atmospheric models, space weather effects, ephemeris-based third-body perturbations,
  • 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

heyoka-7.11.0.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

heyoka-7.11.0-cp314-cp314t-manylinux_2_28_x86_64.whl (104.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

heyoka-7.11.0-cp314-cp314t-manylinux_2_28_aarch64.whl (100.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

heyoka-7.11.0-cp314-cp314-manylinux_2_28_x86_64.whl (104.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

heyoka-7.11.0-cp314-cp314-manylinux_2_28_aarch64.whl (100.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

heyoka-7.11.0-cp313-cp313-manylinux_2_28_x86_64.whl (104.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

heyoka-7.11.0-cp313-cp313-manylinux_2_28_aarch64.whl (100.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

heyoka-7.11.0-cp312-cp312-manylinux_2_28_x86_64.whl (104.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

heyoka-7.11.0-cp312-cp312-manylinux_2_28_aarch64.whl (100.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

heyoka-7.11.0-cp311-cp311-manylinux_2_28_x86_64.whl (104.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

heyoka-7.11.0-cp311-cp311-manylinux_2_28_aarch64.whl (100.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

File details

Details for the file heyoka-7.11.0.tar.gz.

File metadata

  • Download URL: heyoka-7.11.0.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0.tar.gz
Algorithm Hash digest
SHA256 81c357587559836497b626871f3191ee3b36579fc02eda3890f14acc9b7509bb
MD5 bf329d784dc90116cdd1bb20333a544d
BLAKE2b-256 1700bf53a417829a3ef99dd230b80e1c60e5be8388060931cf6c428c69b6c202

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp314-cp314t-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.0 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 504628ddd48f18f2e8af279bfaedfad9aef3e7e6122b3bd78b220a0142d1cf0b
MD5 428c21883d317e055a888a54a33d8183
BLAKE2b-256 f2e028bf208030aa5c34efa0a287b53efecec48eb03c1aacfd1ba39321b0f9f5

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp314-cp314t-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 100.9 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2b3947de4dc17c7c930f7d52ab5f93e8f724f7cc3d7ec30a2a9864cb126e153b
MD5 339dc40e154c80acb85f0125633c883e
BLAKE2b-256 ff4739129ddf2180abd71949a9c9caf73aa78e2611a0f511f8c5f6487655c1c2

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp314-cp314-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.0 MB
  • Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b9a6870ff9089477ca008855cc22a275a22d403dd88cb19f1b25652ed185a386
MD5 c69ccf115a79e73df043623e10d25748
BLAKE2b-256 dcd5b8cc50f27a1f16f33f7731842da0dc8c3bd80a6875a8cd16e84b63f8c6e4

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp314-cp314-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 100.9 MB
  • Tags: CPython 3.14, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2733ae85bf264ee50fb4782c82151ed1295bf73f5c398022257b28868e8cc8e2
MD5 8357c1c3ba9ede6ee0df98339cbcf82c
BLAKE2b-256 27c203f70301105b13e98f575b6b332ef900447eb8dd70dadea14df7e6e2bb04

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.0 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 717e5a5b31070e6cc22fd457bdea6f6697481f3860459562ea68b9e78586c381
MD5 7311b80e7eea38d14aaa0f16c3bc2d09
BLAKE2b-256 2fd430300188aafc91b2b83770804366b5c13bae72ea1fb4b7ea7376b73b0fbe

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp313-cp313-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 100.9 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0166ae1848d70af843e415ca89faf896167794a6881f402d1ee0ec176ef74c15
MD5 1c855e3a74119e990c64db11ecdf295f
BLAKE2b-256 aa52addde5dcbc19d3eb1cbc21bfdff8cc500f7930dff26b20f1ee2950841f7c

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.0 MB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c8f774b7f096de6081fc97587dc2ba04b9040f437926813dc83c95104202584e
MD5 ac70791adf9f378349567e9faa67a3ec
BLAKE2b-256 9541cc950c7af23167c744b6ebb04b62c6caaf60b6981e7837f37e67048de34e

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp312-cp312-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 100.9 MB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 839367609063bb8b0f123112e36f5baab23d463522e73369189eb173e9609ce9
MD5 1c2afe3a0db71876554f4407176aa4c8
BLAKE2b-256 904a61c2fe6465f5d09c30cc44071721313657427e1c03da32dc2d49fcb509c4

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.0 MB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 99fbf101289f5504dac7f099ea83d2b8872eb334a5b084005b3f1385d6467f2a
MD5 cda9de0e02ffab0cd5a9d6fb8b729044
BLAKE2b-256 9f720ff292ba31d513ab06184398302de93474fd2b573bf99bab33c51a4a45ec

See more details on using hashes here.

File details

Details for the file heyoka-7.11.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.0-cp311-cp311-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 100.9 MB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heyoka-7.11.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 619f66449777e97c201dfd8a764e76805316092ff2b8fe3c626776338914b848
MD5 2bb2c155395b53c9d0bd85e4b7fbd035
BLAKE2b-256 27470a56dd6c7d3e40f7df59fa53c2cebd8eb1c143dce7dfb5e9d6a0e488ad8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page