Kshana run report
Constellation design at scale: Walker DELTA and Walker STAR patterns in the i: T/P/F convention (nodes spread over 360 or 180 deg, in-plane spacing 360*P/T, inter-plane phase offset 360*F/T), explicit element lists and multi-shell designs, several constellations in one run, around the Earth, the Moon, Mars or any other planet, Pluto or major moon using the constants in the body module (the same ones the solar-system and body-pnt kinds use).
constellation-design: 102 satellites (GPS, Galileo, BeiDou, GLONASS) around the Earth; availability 100.00% (PDOP <= 6 at 10 deg mask), worst site 100.00%, median PDOP 0.95, mean 31.0 in view; 648 grid points x 95 epochs (MODELLED)
Honesty label (result `label`): MODELLED - two-body Keplerian orbits (optional secular J2) around a spherical body, geometric visibility above an elevation mask, all-in-view dilution of precision with one receiver clock per constellation unless clock = "common"; no signal power, health or terrain. The Walker geometry and the published presets are checked against the Galileo OS SDD, the GLONASS ICD and the GPS SPS Performance Standard slot tables, and the GPS baseline global DOP statistics against SPS PS Appendix B (see docs/VERIFICATION-MATRIX.md)
Capabilities used: 2 VALIDATED, 2 MODELLED, 0 PARTNER (relied on, not provided); see section 5.
Every field the scenario file sets, flattened to its path. Units come from the result's units block (the field-units schema, docs/field-units-schema.json) where it describes the field, otherwise from the field-name suffix; a unit neither states is shown as not stated.
| Parameter | Value | Unit | Unit source |
|---|---|---|---|
body | earth | text | a text input carries no unit |
clock | per-constellation | text | a text input carries no unit |
constellation[0].name | GPS | text | a text input carries no unit |
constellation[0].preset | gps-baseline | text | a text input carries no unit |
constellation[1].name | Galileo | text | a text input carries no unit |
constellation[1].preset | galileo | text | a text input carries no unit |
constellation[2].name | BeiDou | text | a text input carries no unit |
constellation[2].preset | beidou | text | a text input carries no unit |
constellation[3].name | GLONASS | text | a text input carries no unit |
constellation[3].preset | glonass | text | a text input carries no unit |
duration_s | 86164 | s | field-units schema: input entry `inputs.duration_s`, matched by field name |
grid_step_deg | 10 | deg | field-units schema: input entry `inputs.grid_step_deg`, matched by field name |
kind | constellation-design | text | a text input carries no unit |
mask_deg | 10 | deg | field-units schema: input entry `inputs.mask_deg`, matched by field name |
max_tracks | 102 | not stated | no units entry and no unit suffix |
pdop_threshold | 6 | 1 | field-units schema: input entry `inputs.pdop_threshold`, matched by field name |
step_s | 900 | s | field-units schema: input entry `inputs.step_s`, matched by field name |
track_points | 25 | not stated | no units entry and no unit suffix |
| Result | Value | Unit |
|---|---|---|
body.mu_km3_s2 | 3.9860e5 | km^3/s^2 |
body.name | Earth | text |
body.radius_km | 6378.137 | km |
body.rotation_rate_deg_s | 0.004178 | deg/s |
global.availability_pct | 100 | % |
global.fix_pct | 100 | % |
global.gdop.max | 2.2236 | 1 |
global.gdop.mean | 1.122 | 1 |
global.gdop.median | 1.115 | 1 |
global.gdop.p90 | 1.255 | 1 |
global.gdop.p95 | 1.305 | 1 |
global.gdop.p99 | 1.41 | 1 |
global.hdop.max | 0.7172 | 1 |
global.hdop.mean | 0.4811 | 1 |
global.hdop.median | 0.48 | 1 |
global.hdop.p90 | 0.54 | 1 |
global.hdop.p95 | 0.555 | 1 |
global.hdop.p99 | 0.59 | 1 |
global.mean_visible | 31.0336 | count |
global.min_visible | 22 | count |
global.pdop.max | 1.8017 | 1 |
global.pdop.mean | 0.9554 | 1 |
global.pdop.median | 0.95 | 1 |
global.pdop.p90 | 1.065 | 1 |
global.pdop.p95 | 1.105 | 1 |
global.pdop.p99 | 1.19 | 1 |
global.vdop.max | 1.6915 | 1 |
global.vdop.mean | 0.8242 | 1 |
global.vdop.median | 0.815 | 1 |
global.vdop.p90 | 0.94 | 1 |
global.vdop.p95 | 0.98 | 1 |
global.vdop.p99 | 1.07 | 1 |
global.worst_site_availability_pct | 100 | % |
inputs.clock | per-constellation | text |
inputs.duration_s | 86164 | s |
inputs.epochs | 95 | count |
inputs.grid_step_deg | 10 | deg |
inputs.j2 | false | flag |
inputs.lat_max_deg | 90 | deg |
inputs.lat_min_deg | -90 | deg |
inputs.lon_max_deg | 180 | deg |
inputs.lon_min_deg | -180 | deg |
inputs.mask_deg | 10 | deg |
inputs.pdop_threshold | 6 | 1 |
inputs.step_s | 900 | s |
total_satellites | 102 | count |
tracks.shown | 102 | count |
tracks.stride | 1 | count |
tracks.total | 102 | count |
work.dop_solutions | 61560 | count |
work.epochs | 95 | count |
work.grid_points | 648 | count |
work.pair_tests_after_prefilter | 4386780 | count |
work.pair_tests_brute_force | 6279120 | count |
work.prefilter_ratio | 0.6986 | 1 |
work.satellites | 102 | count |
work.visible_pairs | 1947600 | count |
| Column | Count | Min | Max | First | Last | Unit |
|---|---|---|---|---|---|---|
constellations[].mean_visible | 4 | 7.0636 | 9.3496 | 7.1744 | 7.0636 | count |
constellations[].satellites | 4 | 24 | 30 | 24 | 24 | count |
constellations[].shells[].altitude_km | 1 | 23221.664 | 23221.664 | 23221.664 | 23221.664 | km |
constellations[].shells[].in_plane_spacing_deg | 1 | 45 | 45 | 45 | 45 | deg |
constellations[].shells[].inclination_deg | 1 | 56 | 56 | 56 | 56 | deg |
constellations[].shells[].period_min | 1 | 844.681373 | 844.681373 | 844.681373 | 844.681373 | min |
constellations[].shells[].phase_offset_deg | 1 | 15 | 15 | 15 | 15 | deg |
constellations[].shells[].phasing | 1 | 1 | 1 | 1 | 1 | count |
constellations[].shells[].planes | 1 | 3 | 3 | 3 | 3 | count |
constellations[].shells[].raan_spacing_deg | 1 | 120 | 120 | 120 | 120 | deg |
constellations[].shells[].total | 1 | 24 | 24 | 24 | 24 | count |
grid.availability_pct[][] | 648 | 100 | 100 | 100 | 100 | % |
grid.fix_pct[][] | 648 | 100 | 100 | 100 | 100 | % |
grid.lat_deg[] | 18 | -85 | 85 | -85 | 85 | deg |
grid.lon_deg[] | 36 | -175 | 175 | -175 | 175 | deg |
grid.max_pdop[][] | 648 | 0.9087 | 1.8017 | 1.4132 | 1.2951 | 1 |
grid.max_visible[][] | 648 | 31 | 41 | 38 | 37 | count |
grid.mean_gdop[][] | 648 | 0.9465 | 1.2871 | 1.2722 | 1.2302 | 1 |
grid.mean_hdop[][] | 648 | 0.425 | 0.5308 | 0.4277 | 0.4267 | 1 |
grid.mean_pdop[][] | 648 | 0.831 | 1.0853 | 1.0735 | 1.0682 | 1 |
grid.mean_vdop[][] | 648 | 0.7029 | 0.9969 | 0.9844 | 0.9791 | 1 |
grid.mean_visible[][] | 648 | 27.2105 | 36.5368 | 34.1263 | 34.1895 | count |
grid.min_visible[][] | 648 | 22 | 33 | 30 | 31 | count |
tracks.satellites[].lat_deg[] | 2550 | -64.799 | 64.799 | -44.918 | -64.618 | deg |
tracks.satellites[].lon_deg[] | 2550 | -179.968 | 180 | 52.368 | 33.913 | deg |
tracks.times_s[] | 25 | 0 | 86164 | 0 | 86164 | s |
--animate svg; it shows the finished picture under reduced motion and in print).The interactive player is written by kshana scenarios/constellation-multi-gnss-coverage.toml --animate html.
| Export | Applies | Files or reason |
|---|---|---|
| czml https://github.com/AnalyticalGraphicsInc/czml-writer/wiki/CZML-Structure | no | not exported in this release: `constellation-design` places its satellites in a body-fixed frame relative to an epoch it never names, so a time-tagged export would have to invent the calendar date |
| kml https://www.ogc.org/standard/kml/ | no | not exported in this release: `constellation-design` places its satellites in a body-fixed frame relative to an epoch it never names, so a time-tagged export would have to invent the calendar date |
| geojson https://www.rfc-editor.org/rfc/rfc7946 | no | not exported in this release: `constellation-design` places its satellites in a body-fixed frame relative to an epoch it never names, so a time-tagged export would have to invent the calendar date |
| stk https://help.agi.com/stk/#stk/importfiles-02.htm | no | not exported in this release: `constellation-design` places its satellites in a body-fixed frame relative to an epoch it never names, so a time-tagged export would have to invent the calendar date |
| sigmf https://github.com/sigmf/SigMF/blob/main/sigmf-spec.md | no | SigMF holds complex baseband samples, which only the `spectrum` kind synthesises |
| Start (s) | End (s) | Event | Source |
|---|---|---|---|
| 0 | 86164 | run span | scenario `duration_s` |
Each row is a verification-matrix row this run's kinds exercise, with the label and the oracle the matrix gives it (src/verification.rs, docs/VERIFICATION-MATRIX.md). A label grades the capability as the matrix records it; it does not grade this scenario's configuration, and a VALIDATED row does not make the run's inputs measured. A PARTNER row is a discipline the run relies on that Kshana does not provide.
| Capability (matrix requirement) | Label | Used by | Source: oracle | Test evidence |
|---|---|---|---|---|
| Reproducibility & software assurance Deterministic, scenario-hashed, SBOM + cross-platform golden gates | MODELLED exercised | every run | 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 (ExternalDataset) | tests/golden.rs, tests/determinism.rs, tests/cross_platform_golden.rs; tests/reproducibility_software_assurance_reference.rs (the generated SBOM validates with zero errors against the official CycloneDX 1.5 JSON Schema over the full 66-component shipped graph: default + python + wasm features, dev-dependencies excluded) |
| Walker constellation geometry and the published nominal slots of GPS, Galileo and GLONASS The `constellation-design` kind's generators: Walker delta and star patterns in the T/P/F convention (node spacing 360/P or 180/P, in-plane spacing 360·P/T, inter-plane phase offset 360·F/T), and the GPS baseline and expandable 24-slot, Galileo and GLONASS presets built from their published nominal elements, placed in an Earth-fixed frame by the Greenwich hour angle their documents state | VALIDATED exercised | constellation-design | Published agency documents: Galileo Open Service Service Definition Document issue 1.1 (European GNSS Service Centre) Tables 1 and 23, the reference constellation at 2016-11-21 00:00 UTC; GLONASS Interface Control Document edition 5.1 (2008) section 5.2, the slot formula for node longitude and argument of latitude; GPS Standard Positioning Service Performance Standard 5th edition (April 2020) Tables 3.2-1, 3.2-2 and 3.2-3, including the groundtrack equatorial crossing column, which is an independent statement of the Earth-fixed geometry the preset must reproduce. Validates the generators and the transcription; the BeiDou medium-orbit phase and inclined-geosynchronous nodes are not published and are not covered (ExternalDataset) | constellation::tests::walker_24_3_1_reproduces_galileo_os_sdd_table_23 (all 24 RAAN and mean-anomaly rows to 1e-9 deg); constellation::tests::glonass_icd_slot_formula_is_a_walker_24_3_1 (the ICD slot formula and a Walker 24/3/1 are the same 24 node and argument-of-latitude pairs); constellation::tests::gps_presets_reproduce_the_published_equatorial_crossings (the groundtrack equatorial crossing of all 36 GPS locations from RAAN, argument of latitude and the 100.765 deg hour angle: 35 within 0.0108 deg against a 0.015 deg rounding bar, and E3F within 0.06 deg because the table's own E3F row is inconsistent with its RAAN and argument of latitude by about 0.06 deg; the secular nodal regression within 5 % of the table's -0.0402 deg/day); constellation::tests::walker_geometry_identities_are_exact (the three spacing identities for delta and star patterns up to 1 584 satellites, to 1e-9 deg) |
| Global dilution of precision of the GPS baseline constellation The `constellation-design` coverage engine on the GPS baseline 24-slot preset under the GPS Standard Positioning Service Performance Standard (SPS PS) Appendix B conditions (one sidereal day, 287 five-minute steps, a 4 x 4 deg global grid weighted by the cosine of latitude, all in view, 5 deg mask, one receiver clock): the global HDOP distribution, the PDOP median and the PDOP-at-most-6 availability, globally and at the worst site | VALIDATED exercised | constellation-design | GPS SPS PS 5th edition (April 2020) Appendix B sections B.3.2.2 and B.3.2.3, the published global-average HDOP distribution of the fully occupied baseline 24-slot constellation (median 0.94, 90 % 1.16, 95 % 1.25, 98 % 1.37, mean 0.96), Table 3.8-1 (PDOP availability) and Table B.3-1 (ensemble PDOP of a degraded constellation, used only as an upper bound), plus a hand-derived closed form for one epoch. The VDOP and PDOP distributions of the full constellation are published only as a figure, so PDOP is pinned one-sided; the worst time-space point (HDOP 2.40 and VDOP 5.22 here, 2.49 and 5.43 published) depends on the grid and is reported, not pinned (ExternalDataset) | constellation::tests::gps_baseline_global_dop_matches_the_sps_performance_standard (HDOP median 0.940, 90 % 1.165, 95 % 1.255, 98 % 1.370, mean 0.965 against 0.94, 1.16, 1.25, 1.37 and 0.96, bar 0.03 on each fixed before the first run; PDOP median 1.795 at or below Table B.3-1's 1.815 for a degraded 20-24 satellite mix; availability 100 % global and at the worst site against Table 3.8-1's 98 % and 88 %); constellation::tests::single_epoch_dop_matches_the_hand_computation (zenith plus three satellites at 30 deg elevation: HDOP 4/3, VDOP 2.3094, PDOP 8/3, TDOP 1.5275, GDOP 3.0732 to 1e-9, and equal to orbit::dop with a common clock) |
| Coverage and dilution-of-precision maps for arbitrary multi-constellation designs at scale, around any central body The `constellation-design` kind beyond the two pinned cases: explicit and multi-shell designs, several constellations per run with one receiver clock per constellation, the Earth, the Moon and Mars from the body constants, the BeiDou preset (medium-orbit phase and 118 deg E inclined-geosynchronous crossing modelled), per-cell satellites in view, GDOP, PDOP, HDOP, VDOP and availability, downsampled ground tracks, and a sub-satellite-latitude visibility prefilter that runs a 5 000-satellite design on a 10 deg grid in a fraction of a second | MODELLED exercised | constellation-design | Internal consistency: the brute-force elevation scan, the hand-computed and orbit::dop reductions, and the closed-form Walker and geosynchronous geometry. Two-body orbits with an optional secular J2, a spherical body with the local vertical along the radius, geometric visibility only (no signal power, satellite health, terrain or third-body perturbation), and the relative phase between systems taken from different reference epochs, so it is not a snapshot of any date (InternalConsistency) | constellation::tests (prefilter_matches_brute_force_exactly — every map and counter equals a scan with the direct elevation test; five_thousand_satellites_on_a_coarse_grid — 5 000 satellites, prints the run time and the pair tests kept; a_clock_per_constellation_needs_one_more_satellite; beidou_geo_and_igso_geometry; lunar_shell_runs_around_the_moon; presets_are_earth_only_and_errors_are_clear; preset_counts) |
Each item is quoted from where it is stated: the result document, the kind catalogue, the scenario file, or the verification matrix's reason a MODELLED row stays modelled.
| Statement | Source |
|---|---|
| MODELLED - two-body Keplerian orbits (optional secular J2) around a spherical body, geometric visibility above an elevation mask, all-in-view dilution of precision with one receiver clock per constellation unless clock = "common"; no signal power, health or terrain. The Walker geometry and the published presets are checked against the Galileo OS SDD, the GLONASS ICD and the GPS SPS Performance Standard slot tables, and the GPS baseline global DOP statistics against SPS PS Appendix B (see docs/VERIFICATION-MATRIX.md) | result `label` |
| MODELLED: two-body orbits with optional secular J2, a spherical body, geometric visibility only (no signal power, health or terrain), and the relative phase between different systems, which is not a snapshot of any real date. | kind catalogue (`kshana kinds --json`) |
| What the run answers: how many satellites are in view, the position, horizontal, vertical and geometric DOP per 10 deg cell, and the share of time the position DOP (PDOP) is at or below 6 above a 10 deg mask. MODELLED: two-body orbits, a spherical Earth, geometry only. | scenario file comment, lines 22 to 24 |
| 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) |
| Coverage and dilution-of-precision maps for arbitrary multi-constellation designs at scale, around any central body 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) |
| Command to reproduce | kshana scenarios/constellation-multi-gnss-coverage.toml |
|---|---|
| Working directory | Run the command from the directory the original run was started in: the scenario path, and any relative data path inside the scenario, resolve against it. Check the scenario file against scenario_sha256 first. |
| Engine version | 0.29.0 |
| Source commit | not recorded: this engine was built without the KSHANA_GIT_COMMIT environment variable; the engine version identifies the release |
| Scenario file | constellation-multi-gnss-coverage.toml |
| Scenario file SHA-256 (Secure Hash Algorithm 256-bit) | ab1e8d8d48fdfba293faeacac0ec15cbd0ef8a0a7658663055c5a3e7eb7233f0 |
| Result scenario_hash | the result document states none |
| Result document SHA-256 | eeef71ba3e7d90972fc407a77908c7d415dcace26715e3370816fa292c1212a1 (constellation-multi-gnss-coverage.result.json) |
| Seed | Neither the scenario nor the result carries a seed. The result is fixed by the scenario file and the engine build alone; the determinism test re-runs every bundled scenario and requires byte-identical output. |
| Platform | macos / aarch64 (unix) |
| Determinism | Same scenario bytes, seed and engine build give a byte-identical result document and report; this report carries no timestamp. Floating-point results are pinned per platform; another operating system or architecture may differ in the last digits. |
To print this page to a Portable Document Format (PDF) file, use the browser's print dialog and choose “Save as PDF”; the print stylesheet fits A4 and US Letter paper, repeats table headers across pages and starts the inputs, results, labels and reproducibility sections on a new page. The engine writes no PDF itself. report.json carries the same content as this page.