Scenario kind pagesEdit on GitHubSource: docs/kinds/by-kind/lunar-station-coverage.md

lunar-station-coverage (scenario kind)

Scenario kind of the engine v0.38.0, family Lunar and cislunar. Advisory: analysis output from a research and engineering tool, not type-approved navigation equipment and not a safety-of-life service. Every label here is the engine's or the verification matrix's; a kind is MODELLED unless the matrix says otherwise (how a label is earned: the README's Evidence section).

What it does#

Modelled lunar reference-station coverage: a Monte Carlo sweep of the lunar differential-PNT model over a south-polar user grid and a day of epochs. A differential reference station at a known south-polar site corrects a stated constellation (illustrative Keplerian or a tabulated ephemeris) with a stated signal-in-space error, survey error, correction latency and link quantization; per point and over the region it reports the percentile corrected and uncorrected position error (3-D, horizontal, vertical), availability, coverage against a stated threshold, DO-229E protection levels, the coverage radius per azimuth and the correction-link budget at the station and at the worst point. Not a statement about the performance of any real system; not affiliated with or endorsed by any agency. MODELLED.

One run of scenarios/lunar-station-coverage.toml summarises as: lunar-station-coverage | 346 points x 144 epochs x 200 trials | availability 92.2 % | coverage 76.5 % (p95 <= 20 m) | corrected p95 3-D 15.592 m (uncorrected 1056.892 m) | HPL max 480.385 m | MODELLED; not a statement about any real system

Inputs#

From the schema (kshana kinds --json):

  • Required fields: none
  • Optional fields: n_sats, sma_km, eccentricity, inc_deg, argp_deg, ephemeris_path, mask_deg, station_lat_deg, station_lon_deg, station_height_m, survey_sigma_m, orbit_err_m, clock_err_m, sise_sigma_m, sise_orbit_variance_fraction, noise_m, latency_s, quantization_bits, grid_lat_max_deg, grid_lat_step_deg, points, t_start_s, t_span_s, t_step_s, n_trials, accuracy_threshold_m, percentile, alert_limit_m, residual_sigma_m, p_hmi, seed, terrain, orbit_err_growth_m_per_s, receiver, solution

The example scenarios/lunar-station-coverage.toml sets, among others:

Field Value Unit
accuracy_threshold_m 20 m
alert_limit_m 10 m
argp_deg 90 deg
clock_err_m 30 m
eccentricity 0.6 1
grid_lat_max_deg -80 deg
grid_lat_step_deg 1 deg
inc_deg 57.7 deg
kind lunar-station-coverage text
latency_s 10 s
mask_deg 5 deg
n_sats 8 count

Run it#

kshana scenarios/lunar-station-coverage.toml

3 bundled scenarios use this kind; the others are in scenarios/.

What it gives#

The scalar results of that run, with the units the engine states:

Result Value Unit
budget_at_station_and_at_edge.epoch_s 0 s
budget_at_station_and_at_edge.station.ageing_clock_class rafs text
budget_at_station_and_at_edge.station.ageing_clock_time_error_s 3.1623e-11 s
budget_at_station_and_at_edge.station.ageing_orbit_rate_m_per_s 0.003083 m/s
budget_at_station_and_at_edge.station.latency_clock_position_sigma_m 0.030329 m
budget_at_station_and_at_edge.station.latency_clock_range_sigma_m 0.00948 m
budget_at_station_and_at_edge.station.latency_orbit_position_sigma_m 0.106357 m
budget_at_station_and_at_edge.station.latency_orbit_range_sigma_m 0.03083 m
budget_at_station_and_at_edge.station.latency_position_sigma_m 0.110597 m
budget_at_station_and_at_edge.station.latency_range_sigma_m 0.032254 m

Result label (the engine's): MODELLED

The chart the engine writes for scenarios/lunar-station-coverage.toml, kind lunar-station-coverage

Evidence#

MODELLED: the verification matrix rows that name this kind.

  • MODELLED Monte Carlo sweep of the lunar differential-PNT model over a south-polar user grid and a day of epochs (the lunar-station-coverage kind): for a differential reference station at a known south-polar site, per point and over the region, the Tests: lunar_station_coverage_reference.rs.

The rows the run itself exercised, with the oracle the matrix gives each (the public sources are named there):

  • MODELLED Deterministic, scenario-hashed, SBOM + cross-platform golden gates. Oracle (ExternalDataset): SBOM conformance to the official CycloneDX 1.5 JSON Schema (+ valid SPDX identifiers) — an external published standard, zero validation errors over the full dependency graph; the FoM-determinism / byte-reproducibility part remains a pinned self-consistency check, so the row stays MODELLED
  • MODELLED NovaMoon-class differential reference station: common-mode cancellation + baseline-growing residual + DGNSS protection levels. Oracle (InternalConsistency): Differential error-cancellation identity + reuse of the DO-229E SBAS PL machinery; the single-difference + WLS solve is additionally cross-checked against RTKLIB's lsq()/matinv() (Takasu, BSD-2-Clause, compiled C) — independent solver code, but the same first-order LOS-difference algebra, so still InternalConsistency
  • MODELLED The three terms a differential correction picks up between the epoch it is computed at and the epoch it is used at, each previously left as unmodelled headroom:. Oracle (InternalConsistency): Closed-form identities and self-consistency: the uniform-quantizer step²/12 variance, the exact (GᵀG)⁻¹GᵀRG(GᵀG)⁻¹ covariance propagation collapsing to σ·PDOP for equal σ, the survey term's 1:1 transfer as a consequence of û_user ≈ û_ref, and switching-off quadrature closure. The PDOP cross-check against orbit::dop shares the [−û, 1] normal matrix, so it is a consistency check and is labelled as one rather than an in
  • MODELLED Monte Carlo sweep of the lunar differential-PNT model over a south-polar user grid and a day of epochs (the lunar-station-coverage kind): for a differential r. Oracle (InternalConsistency): Arithmetic re-computed by an independent numpy script on exported cases (scripts/gen_lunar_station_ref.py, numpy 2.5.4; pre-registered in tests/fixtures/lunar_station/PREREGISTRATION.md, committed alone in 9caedf97 before the first run): on 20 cases with every error term on, the visible sets and status are identical, the raw range errors agree to 1.4e-14 m, the position-error vectors and magnitudes to 1.4e-9 m agains

Limitations#

What the run's own report says is not modelled or not validated:

  • MODELLED (result label)
  • MODELLED. (kind catalogue (kshana kinds --json))
  • HONESTY: MODELLED. Under the stated assumptions below the model gives these figures. Not a statement about the performance of any real system; not affiliated with or endorsed by any agency; no TRL or heritage claim. Omitted: terrain and horizon masking at the pole (the first limitation), multipath, receiver hardware. (scenario file comment, lines 15 to 18)
  • Reproducibility & software assurance is MODELLED, not validated: a sub-claim is externally checked, but the whole capability composes modelled pieces, so the capability stays Modelled. (verification matrix (docs/MODELLED-RATIONALE.md))
  • Lunar differential PNT is MODELLED, not validated: checked against its own closed-form / analytic identity — catches transcription and coefficient errors, but is not an external oracle. (verification matrix (docs/MODELLED-RATIONALE.md))
  • Lunar differential PNT — correction-link residual budget is MODELLED, not validated: checked against its own closed-form / analytic identity — catches transcription and coefficient errors, but is not an external oracle. (verification matrix (docs/MODELLED-RATIONALE.md))
  • Lunar reference-station coverage and accuracy map is MODELLED, not validated: checked against its own closed-form / analytic identity — catches transcription and coefficient errors, but is not an external oracle. (verification matrix (docs/MODELLED-RATIONALE.md))

See also#