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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
//! Satellite Operations Module
//!
//! This module provides functionality for real-world satellite operations,
//! including SGP4/SDP4 propagation of Two-Line Element (TLE) sets and
//! Orbit Mean-Elements Message (OMM) data.
//!
//! # Overview
//!
//! The SGP4 (Simplified General Perturbations 4) model is the standard
//! algorithm for propagating satellite orbits from TLE data. It includes:
//! - **SGP4**: For near-Earth satellites (period < 225 minutes)
//! - **SDP4**: For deep-space satellites (period ≥ 225 minutes) with lunar/solar perturbations
//!
//! # Key Features
//!
//! - **TLE Parsing**: Support for 2-line and 3-line element formats
//! - **OMM Support**: Modern JSON format for orbital elements
//! - **High Accuracy**: Sub-meter position errors (<0.2m after 3.5 years)
//! - **Performance**: ~7% faster than C++ reference implementation
//! - **Automatic Mode Selection**: Automatically uses SGP4 or SDP4 based on orbit period
//!
//! # Coordinate System
//!
//! SGP4 outputs are in the **TEME** (True Equator, Mean Equinox) reference frame.
//! Use the coordinate transformation module to convert to other frames:
//! - TEME → ITRS (Earth-fixed)
//! - TEME → GCRS (inertial)
//!
//! # References
//!
//! - **Implementation**: Uses `neuromorphicsystems/sgp4` v2.3.0 crate
//! - **Validation**: Celestrak C++ reference implementation
//! - **Standards**:
//! - Spacetrack Report #3 (1980, revised 2006)
//! - AIAA 2006-6753 (Vallado et al.)
//! - **TLE Format**: <https://celestrak.org/NORAD/documentation/tle-fmt.php>
//! - **OMM Format**: <https://public.ccsds.org/Pubs/502x0b2c1.pdf>
//!
//! # Example
//!
//! ```rust,ignore
//! use astrora_core::satellite::propagate_tle;
//!
//! // ISS TLE (example)
//! let tle = "ISS (ZARYA)
//! 1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927
//! 2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537";
//!
//! // Propagate to 120 minutes after epoch
//! let state = propagate_tle(tle, 120.0)?;
//! // state.position: [x, y, z] in km (TEME frame)
//! // state.velocity: [vx, vy, vz] in km/s (TEME frame)
//! ```
pub use ;
pub use parse_tle;
pub use parse_omm;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;