Add optional forecast model processing - #680
Closed
FahrenheitResearch wants to merge 4 commits into
Closed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This branch adds an optional forecast-model workflow to Supercell Wx through a dedicated View > Forecast Models dock. Users can discover runs, download and process selected forecast hours, render direct and derived products as georeferenced overlays, and generate point soundings from stored model fields.
The host integration remains C++/Qt. Model acquisition, decoding, derivation, and rendering run in an optional child executable through a versioned JSON-lines protocol; no Rust ABI, Rust library, or Rust toolchain is added to a normal Supercell Wx build. If the helper is absent, existing radar and alert workflows continue normally.
Architecture and review path
flowchart LR subgraph SCWX["Supercell Wx - C++ / Qt"] Dock["Forecast Models dock"] Manager["ModelManager / QProcess"] Records["Typed host records"] Map["MapWidget / ModelLayer"] Sounding["Sounding viewer"] Dock --> Manager Manager --> Records Records --> Map Records --> Sounding end subgraph Helper["Optional child executable"] Bridge["Versioned JSONL bridge"] Pipeline["Discovery, download, decode, derive"] Renderers["Overlay and sounding renderers"] Bridge --> Pipeline Bridge --> Renderers end subgraph Data["Provider-owned data"] Sources["Remote model sources"] Cache["Raw GRIB cache"] Store["Decoded run store"] Artifacts["Georeferenced PNGs"] end Manager -->|"CLI arguments"| Bridge Bridge -->|"JSONL events"| Manager Manager -.->|"cancel / terminate"| Bridge Bridge -.->|"stderr / exit"| Manager Sources --> Pipeline Pipeline <--> Cache Pipeline --> Store Store --> Renderers Renderers --> Artifacts Artifacts --> Map Artifacts --> SoundingThe architecture document identifies the main review entry points, the typed provider boundary, failure isolation, and the relationship to ProductDatastore PR #643. It also compares the current optional-helper approach with a built-in C++ provider and a future provider-plugin interface. The proposed low-risk convergence step is to extract a
ModelProviderinterface fromModelManager; the current JSONL adapter can then be one implementation without coupling the dock or map layer to its storage format.Main changes
The probe delay was caused by a second, unnecessary all-hour availability pass after the requested hour had already been verified. On HRRR extended cycles that meant 49 serialized NOMADS requests; models with longer horizons could issue hundreds. The bounded path uses the same model-specific cycle and cadence registry for every supported model.
Validation
d6390a5326.Known limitations