Skip to content

heyoka 5.1.0

Compare
Choose a tag to compare
@bluescarni bluescarni released this 21 Jul 09:21
· 215 commits to master since this release

SGP4 propagation 🌍

heyoka 5.1.0 adds an implementation of SGP4, a widely-used analytical propagator for Earth-orbiting objects.

SGP4 uses two-line elements sets (TLEs) (available from websites such as CelesTrak and Space-Track) to predict the future or past states of Earth-orbiting objects via a simplified perturbation model. The positional accuracy of SGP4 is in the order of kilometres for propagations up to a few days from the TLE reference epoch.

heyoka's SGP4 implementation is fully differentiable up to arbitrary order, thus enabling applications such as state covariance propagation, state transition matrix computation, gradient-based optimisation, orbit determination, etc.

SGP4 is available either as a low-level function that that produces the analytical formulae of SGP4 in heyoka's expression system, or a as a fast high-level propagator class accelerated via multithreaded parallelisation and SIMD vectorisation, providing state-of-the-art propagation performance. For more details, see the tutorial in the documentation of the Python bindings:

https://bluescarni.github.io/heyoka.py/notebooks/sgp4_propagator.html

Logical and relational operators, select() 📝

Another new feature in this release is support for logical and relational operators, as well as the select() primitive, in the heyoka expression system.

Relational operators allow to perform comparisons (such as "equal to", "less than", "greater than", etc.) during the evaluation of an expression (e.g., during a numerical integration), yielding a numerical value of 1 (true) or 0 (false). Logical operators allow to combine comparisons via logical AND/OR.

The select() primitive can be used to select one of two expressions based on the result of a comparison, thus providing a primitive form of if/then/else branching in the expression system. Note however that select() will always evaluate both the true and false branches, and thus it is unsuitable for complicated flow control.

The full changelog, as usual, is available here:

https://bluescarni.github.io/heyoka/changelog.html