Class EphemerisApp

Inheritance Relationships

Base Type

Class Documentation

class EphemerisApp : public lupnt::Application

Coordinator application for the ephemeris/almanac datasize-accuracy study (Example 9), hosted on a thin EphemerisManager agent (mirroring ex8’s SurfaceStationManager hosting a GroundOdtsApp).

Its single scheduled Step runs the whole body of the (former) monolithic EphemerisSimulation::Run(), in the exact same computation order so the numerics are preserved bit-for-bit (the study is fully deterministic — no RNG):

  1. propagate a lunar-satellite truth trajectory (Moon gravity + Earth/Sun),

  2. optionally convert it from the inertial propagate frame to the rotating output frame (e.g. MOON_CI -> MOON_PA),

  3. for each fit_window_minutes entry, sample num_windows windows, fit and quantize the LansEphemeris / LansAlmanac models, and size the broadcast bit budget.

The truth dynamics are built app-internally (exactly as the monolith did). Results are exposed through GetResults() (an EphemerisResults), identical to the monolith’s.

Public Functions

EphemerisApp() = default
explicit EphemerisApp(Config &config)

Construct from a YAML application: block (self-driving, hosted path).

explicit EphemerisApp(EphemerisSimulationConfig config)

Construct from an EphemerisSimulationConfig struct (unit tests / A-B checks).

virtual void Setup() override

Schedule the single one-shot Step (APPLICATION priority) on the owning simulation’s event queue.

virtual void Step(Real t) override

Run the whole datasize/accuracy sweep (lazily initializing on first call, so a programmatically-set config is honored). Idempotent: subsequent calls are no-ops.

inline virtual void Log(Real) override

Log this application’s current state/diagnostics to the DataLogger.

Base implementation only emits a debug message. Called once after Setup() and thereafter from Agent::Log(t) (which forwards to application_->Log(time) each time the owning agent logs). Derived classes (e.g. LanderNavApp::Log) override this to additionally log their Filter’s state/covariance and any error metrics.

Parameters:

t – Current simulation time [s, since simulation epoch]

inline const EphemerisSimulationConfig &GetConfig() const
inline const EphemerisResults &GetResults() const