Skip to content

2.5.0: High fidelity drag modeling

Choose a tag to compare

@ChristopherRabotin ChristopherRabotin released this 02 Aug 21:00
· 60 commits to master since this release
ac2de9b

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): TrackingDataArc export 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 for RANGE_UNITS within CCSDS Tracking Data Messages (TDM), resolving physical scale discrepancies in range observations.
  • PositionDevice Tracking & Python OD Bindings (#590): PositionDevice trackers now enforce explicit frame definitions to eliminate coordinate ambiguity during measurement modeling. Additionally, full PositionDevice orbit determination capabilities are now exposed through Python bindings.

Quality of Life & Infrastructure

  • Transparent Gravity Field Compression (#587): GravityFieldData now auto-detects gzip compression on field files, removing the redundant manual configuration flag.
  • Python Type Stubs (#588): Updated .pyi type hints for the 2.5.0 API surface, ensuring proper static analysis and autocompletion support in Python IDEs.

Pull requests

New Features

Improvements

Fixes

Full Changelog: 2.4.2...2.5.0