Simulated Space Environment
High-fidelity orbital propagation toolkit with native Rust/C++ acceleration
Summary
- High-fidelity propagation toolkit with Python API + Rust/C++ kernels.
- Multiple propagators and perturbation models for accuracy vs. speed.
- Native batch evaluation for large-scale event studies.
Overview
Satpy Tools is a comprehensive orbital propagation and debris modeling toolkit that powers my dissertation research. It provides configurable high-fidelity simulation of the space environment, from simple two-body dynamics to full perturbation modeling with spherical harmonics, atmospheric drag, solar radiation pressure, and third-body effects.
The architecture prioritizes both accuracy and performance: Python provides the high-level API and orchestration, while performance-critical kernels are implemented in Rust (preferred) and C++ with automatic backend selection based on availability.
Propagators
Multiple propagation backends support different fidelity/speed trade-offs:
LightyearPropagator
High FidelityFull perturbation modeling with configurable spherical harmonics order, drag (JB2008, NRLMSISE-00), SRP, third-body, tides, and relativistic effects. Best for multi-day arcs requiring maximum accuracy.
EquinoctialPropagator
Fast AnalyticalVectorized and batched mean-element propagation with Rust backend. Ideal for constellation sweeps and optimization where perturbations are modest. ~100-500 µs/call.
SGP4Propagator
TLE-BasedStandard NORAD TLE propagation with TEME→GCRF conversion. Used for debris catalog handling and conjunction screening with space-track data.
KeplerPropagator
Ultra-FastPure analytical Keplerian propagation. Best for quick estimates and near-circular short arcs. ~50-100 µs/call.
Perturbation Models
- Gravitational: Spherical harmonics (EGM96, EGM2008) with configurable degree/order, third-body (Sun, Moon)
- Atmospheric Drag: JB2008, NRLMSISE-00, and custom statistical models; space weather integration
- Solar Radiation Pressure: Cannonball and area-to-mass ratio models with eclipse handling
- Additional: Earth tides, relativistic corrections, Lorentz forces, Coulomb drag for charged particles
Key Capabilities
Orbital Objects
Satellites, Walker/Flower constellations, distributed objects (GMM), ground stations
Uncertainty Quantification
Gaussian mixture splitting for covariance propagation; distributed plume modeling
Conjunction Detection
SGP4 catalog propagation, geometry enrichment, collision probability computation
State Conversions
ECI, ECEF, classical/equinoctial elements, TLE parsing, coordinate frame transforms
Native Acceleration
Performance-critical code paths use compiled backends with automatic selection:
propagators_rs Rust Equinoctial/Kepler kernels perturbs_rs Rust Fused acceleration computation gravity_rs Rust Spherical harmonics evaluation v3_evaluator_rs Rust Rust-backed batch event evaluation workflow lambert_cpp_ffi C++ (FFI) Lambert problem solvers Built with maturin for Python bindings. Thread-safe lazy initialization supports Python 3.14 free-threading builds.