v0.9.0
v0.9.0
SDP4 Deep-Space Propagator
astroz now handles all cataloged satellites — not just near-earth. GPS, GEO, Molniya, and other deep-space orbits (period > 225 min) are fully supported with SIMD-vectorized SDP4 propagation.
Everything auto-dispatches. Pass any TLE to Satrec.twoline2rv() or Constellation and it just works — SGP4 for near-earth, SDP4 for deep-space, no code changes needed.
What's new:
- Sdp4.zig / Sdp4Batch.zig — scalar and SIMD SDP4 with lunar/solar perturbations and resonance handling
- Satellite.zig — unified type that picks SGP4 or SDP4 automatically
- Constellation.zig — replaces Sgp4Constellation.zig, propagates mixed constellations with threading
- Satrec.is_deep_space property in Python
- Satrec.sgp4_array_into() — zero-copy SIMD batch for single satellites (SGP4 and SDP4)
- New benchmark scripts for JAX CPU/GPU comparisons
Breaking Changes (Zig only)
Python API has no breaking changes.
- Sgp4Constellation replaced by Constellation
- Sgp4Batch and simdMath now accessed via Constellation.Sgp4Batch / Constellation.simdMath
- DragCoefficients no longer stores perige — passed as a parameter instead
- Several Sgp4 internal types made pub for SDP4 reuse
Fixes
- Fixed non-compiling benchmarks (#80)
- CelestialBody constants refactored to use default field values