nyx_space/
lib.rs

1/*
2    Nyx, blazing fast astrodynamics
3    Copyright (C) 2018-onwards Christopher Rabotin <christopher.rabotin@gmail.com>
4
5    This program is free software: you can redistribute it and/or modify
6    it under the terms of the GNU Affero General Public License as published
7    by the Free Software Foundation, either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU Affero General Public License for more details.
14
15    You should have received a copy of the GNU Affero General Public License
16    along with this program.  If not, see <https://www.gnu.org/licenses/>.
17*/
18
19/*! # nyx-space
20
21[Nyx](https://en.wikipedia.org/wiki/Nyx): Blazing fast high-fidelity astrodynamics for Monte Carlo analyzes of constellations, interplanetary missions, and deep space flight navigation.
22
23Refer to [nyxspace.com](https://nyxspace.com) for a user guide, a show case, the MathSpec, and the validation data.
24*/
25
26// Allow confusable identifiers, as the code tries to use the literature's notation where possible.
27#![allow(confusable_idents)]
28
29extern crate log;
30
31/// Provides all the propagators / integrators available in `nyx`.
32pub mod propagators;
33
34/// Provides several dynamics used for orbital mechanics and attitude dynamics, which can be elegantly combined.
35pub mod dynamics;
36
37/// Provides the solar system planets, and state and ephemerides management.
38pub mod cosmic;
39
40/// Utility functions shared by different modules, and which may be useful to engineers.
41pub mod utils;
42
43pub mod errors;
44/// Nyx will (almost) never panic and functions which may fail will return an error.
45pub use self::errors::NyxError;
46
47/// All the input/output needs for this library, including loading of SPICE kernels, and gravity potential files.
48pub mod io;
49
50/// All the orbital determination and spacecraft navigation tools and functions.
51pub mod od;
52
53/// All of the mission design and mission analysis tools and functions
54pub mod md;
55
56/// Simple tools (e.g. Lambert solver)
57pub mod tools;
58
59/// Monte Carlo module
60pub mod mc;
61
62/// Polynomial and fitting module
63pub mod polyfit;
64
65/// Re-export of hifitime
66pub mod time {
67    pub use hifitime::prelude::*;
68}
69
70/// Re-export nalgebra
71pub mod linalg {
72    pub use nalgebra::base::*;
73}
74
75/// Re-export some useful things
76pub use self::cosmic::{Orbit, Spacecraft, State, TimeTagged};
77
78/// The GMAT Earth gravitation parameter, used only for testing.
79#[cfg(test)]
80pub(crate) const GMAT_EARTH_GM: f64 = 398_600.441_5;