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 Fidelity

Full 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 Analytical

Vectorized and batched mean-element propagation with Rust backend. Ideal for constellation sweeps and optimization where perturbations are modest. ~100-500 µs/call.

SGP4Propagator

TLE-Based

Standard NORAD TLE propagation with TEME→GCRF conversion. Used for debris catalog handling and conjunction screening with space-track data.

KeplerPropagator

Ultra-Fast

Pure 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:

Crate/Module Language Purpose
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.

Tools & Technologies

Python 3.14 Rust C++ maturin pybind11 NumPy SciPy Numba