Repository navigation
2.5.0: High fidelity drag modeling
Summary
Nyx 2.5.0 brings major enhancements to atmospheric drag modeling alongside key fixes for CCSDS measurement processing, tracking data persistence, and expanded Python bindings.
The defining addition in this release is expanded atmospheric modeling, led by Nyx's first high-fidelity drag model: NRLMSISE-00 (#580).
Rather than wrapping legacy C or FORTRAN implementations, NRLMSISE-00 is written in 100% safe Rust. This eliminates foreign function interface (FFI) overhead and memory safety risks, allowing thread-safe parallel evaluation across Monte Carlo runs and estimation filters. The implementation has been independently verified against standard benchmarks for both localized density computations and integrated trajectory propagation.
- Space Weather Ingestion: Driven directly from CelesTrak CSV space weather files or via static space weather profiles for deterministic testing.
-
Enum-Based Model Configuration (
#586): Exposes all internal NRLMSISE-00 switches via strongly-typed enums, providing fine-grained control over specific physical effects (e.g., anomalous oxygen, geomagnetic storm terms, daily and annual density variations). -
Dimensional Consistency: The SI-versus-CGS switch is intentionally fixed to SI units (
$kg/m^3$ ,$m$ ) to guarantee consistency with Nyx's equations of motion. -
Harris-Priester Model Integration (
#583): Added the classic Harris-Priester empirical atmosphere model, offering a lightweight, low-altitude density calculation alternative.
Orbit Determination & Tracking Data
- Parquet Rejection State Persistence (
#578):TrackingDataArcexport and import routines now preserve measurement rejection flags in Parquet files, keeping estimation state histories intact across post-processing pipelines, and allowing for manual editing of the file to set the rejection status - Rigorous TDM Range Unit Parsing (
#581): Implemented strict parsing and physical unit conversions forRANGE_UNITSwithin CCSDS Tracking Data Messages (TDM), resolving physical scale discrepancies in range observations. - PositionDevice Tracking & Python OD Bindings (
#590):PositionDevicetrackers now enforce explicit frame definitions to eliminate coordinate ambiguity during measurement modeling. Additionally, fullPositionDeviceorbit determination capabilities are now exposed through Python bindings.
Quality of Life & Infrastructure
- Transparent Gravity Field Compression (
#587):GravityFieldDatanow auto-detects gzip compression on field files, removing the redundant manual configuration flag. - Python Type Stubs (
#588): Updated.pyitype hints for the 2.5.0 API surface, ensuring proper static analysis and autocompletion support in Python IDEs.
Pull requests
New Features
- Add Naval Research Lab MSISE-00 drag model by @ChristopherRabotin in #580
- Add harris priester drag model by @ChristopherRabotin in #583
- Allow configuration of NRLMSISE-00 switches via enums by @ChristopherRabotin in #586
Improvements
- Add tracking frame support and Python bindings for PositionDevice by @ChristopherRabotin in #590
- feat: Export/import rejected status in TrackingDataArc Parquet by @ChristopherRabotin in #578
- fix: implement rigorous RANGE_UNITS parsing with correct physical conversions in TDM files by @ChristopherRabotin in #581
- Remove gunzipped config field and auto-detect gzip in gravity field loader by @ChristopherRabotin in #587
Fixes
- Fix pyi 2.5.0 by @ChristopherRabotin in #588
Full Changelog: 2.4.2...2.5.0