1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//! Earth environment models for orbital mechanics.
//!
//! ## Atmosphere
//!
//! Provides pluggable atmospheric density models behind the [`AtmosphereModel`] trait.
//!
//! - [`Exponential`] — US Standard Atmosphere 1976, altitude-only (simplest, no epoch needed)
//! - [`HarrisPriester`] — diurnal density variation using Sun position
//! - [`Nrlmsise00`] — full empirical model driven by solar and geomagnetic activity indices
//!
//! All models implement [`AtmosphereModel`] and can be swapped at runtime via
//! `Box<dyn AtmosphereModel>`.
//!
//! ## Magnetic field
//!
//! Provides pluggable geomagnetic field models behind the
//! [`magnetic::MagneticFieldModel`] trait.
//!
//! - [`magnetic::TiltedDipole`] — simple tilted dipole approximation (fastest)
//!
//! ## Space weather
//!
//! The [`space_weather`] module defines [`SpaceWeather`] conditions and the
//! [`SpaceWeatherProvider`] trait for supplying time-varying solar/geomagnetic data.
//! [`CssiSpaceWeather`] parses CelesTrak CSSI-format files and (with the `fetch`
//! feature) downloads them automatically with local caching.
//!
//! ## Data attribution
//!
//! Space weather indices are sourced from:
//! - Kp/Ap geomagnetic indices: GFZ Helmholtz Centre for Geosciences (CC BY 4.0)
//! - F10.7 solar radio flux: NOAA SWPC / NRCan DRAO (public domain)
//! - Aggregated and distributed by CelesTrak (<https://celestrak.org/SpaceData/>)
pub use ;
pub use Exponential;
pub use HarrisPriester;
pub use Nrlmsise00;
pub use ;
use Geodetic;
use ;
/// Pre-computed input for atmospheric density evaluation.
///
/// Contains the geodetic coordinates and UTC epoch needed by all
/// atmosphere models. The caller (e.g., drag force model) is
/// responsible for computing `geodetic` from the propagator's
/// frame-typed position vector — the atmosphere model itself is
/// frame-agnostic.
/// An atmospheric density model.
///
/// Computes density \[kg/m³\] from geodetic position and epoch.
/// The model is **frame-agnostic**: it receives pre-computed geodetic
/// coordinates rather than frame-typed ECI vectors. The frame-to-geodetic
/// conversion is the caller's responsibility.