Initial commit

This commit is contained in:
ThePetrovich 2026-08-18 22:01:53 +08:00
commit 5fb00f30d1
22 changed files with 1128 additions and 0 deletions

26
yksa_orbital/__init__.py Normal file
View file

@ -0,0 +1,26 @@
"""Propagation for Django services: a backend registry and the Orekit client.
The public surface is :func:`get_backend`. Everything that needs a state vector
asks for a backend by name (or lets ``settings.ORBITAL_PROPAGATOR_BACKEND``
decide) and talks to the :class:`odm.PropagatorBackend` seam, so no call site
knows or cares which propagator answered.
Two backends ship:
``sgp4`` pure Python, no service dependency. TEME plus a GMST Earth-fixed
frame, and analytical theory only -- it has no drag integration, so
it refuses decay work rather than returning a number nobody should
trust.
``orekit`` an HTTP client to the Orekit sidecar (``services/orekit``): rigorous
frames, numerical propagation, drag fitting, decay forecasts and the
solar-activity ensemble.
Reusable on purpose. ODMS and ``track.tmtc.yksa.space`` both propagate, both
against the same sidecar, and the alternative to sharing this app is two HTTP
clients that drift apart on timeouts, on 503 handling, and on what they send.
Add it to ``INSTALLED_APPS`` and set ``OREKIT_SERVICE_URL``.
"""
from .registry import BACKENDS, get_backend, register
__all__ = ["BACKENDS", "get_backend", "register"]