mod assist_data;
pub mod coordinates;
#[cfg(feature = "data")]
pub mod data;
pub mod earth_orientation;
pub mod ephemeris;
mod observatory;
mod orbit;
mod origin;
pub mod propagate;
mod state;
pub use assist_data::AssistData;
pub use coordinates::{ecliptic_to_equatorial, equatorial_to_ecliptic};
pub use ephemeris::{
EphemerisResult, Observer, assist_generate_ephemeris, assist_generate_ephemeris_single,
};
pub use observatory::ObservatoryTable;
pub use orbit::{NonGravParams, Orbit};
pub use origin::Origin;
pub use propagate::{
PropagatedState, PropagatorConfig, PropagatorPool, assist_propagate, assist_propagate_single,
};
pub use state::{BodyState, assist_get_state};
pub use libassist_sys::{
AssistSim, Ephemeris, Ias15AdaptiveMode, IntegratorConfig, Simulation, ffi,
};
pub use {libassist_sys, librebound_sys};
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error(transparent)]
Sys(#[from] libassist_sys::Error),
#[error("light-time iteration did not converge after {0} iterations")]
LightTimeConvergence(usize),
#[error("invalid body identifier: {0}")]
InvalidBody(String),
#[error("invalid observatory code: {0}")]
InvalidObservatory(String),
#[error(
"observatory {0} requires Earth orientation kernel; \
attach via ObservatoryTable::with_earth_orientation"
)]
MissingEarthOrientation(String),
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("{0}")]
Other(String),
}
impl From<librebound_sys::Error> for Error {
fn from(e: librebound_sys::Error) -> Self {
Error::Sys(libassist_sys::Error::Reb(e))
}
}
pub type Result<T> = std::result::Result<T, Error>;