Please check the build logs and, if you believe this is docs.rs' fault, open an issue.

# nyx

Nyx is a high fidelity, fast, reliable and **validated** astrodynamical toolkit library written in Rust.

The target audience is researchers and astrodynamics engineers. The rationale for using Rust is to allow for very fast computations, guaranteed thread safety, and portability to all platforms supported by Rust.

# License

The LICENSE will be strictly enforced once this toolkit reaches production-level quality.

# Features

- Propagation with different Runge Kutta methods (validated in GMAT)
- Convenient and explicit definition of the dynamics for a simulation (cf. tests/orbitaldyn.rs)
- Orbital state manipulation (from GMAT source code and validated in GMAT) (cf. tests/state.rs)
- Statistical Orbit Determination: Classical and Extended Kalman Filter (cf. tests/stat_od/two_body.rs)
- Multibody dynamics using XB files (caveat: #61) (cf. tests/orbitaldyn.rs)
- Orbit Determination with multibody dynamics (cf. tests/stat_od/multi_body.rs)
- Finite burns with fuel depletion (including low thrust / ion propulsion) (cf. tests/prop/)
- Sub-Optimal Control of continuous thrust (e.g. Ruggerio, Petropoulos/Q-law) (cf. tests/prop/closedloop_multi_oe_ruggiero.rs)
- Planetary and Solar eclipse and visibility computation (cf. tests/eclipse.rs)
- Solar radiation pressure modeling (cf. tests/srp.rs)
- Propagation to different stopping conditions
- Spherical harmonics
- Basic drag models
- Light-time corrections and abberations
- Spacecraft attitude control and some useful optimal control algorithms
- Monte Carlo simulations on different parameters
- Link budget computations

*Note:* Some of these features may only be made available only through a commercial license in the future.

# Who am I?

A astrodynamics engineer with a heavy background in software. Nyx relies on the fallbacks of smd, a library I wrote in Go while researching at the University of Colorado at Boulder. I work for Advanced Space (we do cool stuff), but this code is mostly developed on my leisure time.

# Examples

Refer to the tests for short examples.

## Orbital Determination - Estimation plots of a Halo orbit using a classical Kalman filter

**Note:** the Kalman Filtering capabilities have been validated against JPL Monte using a proprietary scenario.

Data to recreate this simulation is deliberately not shared. This just provides an example of what is possible using this library.