ArWen 2.3.1
ArWen 2.3.1
The complete nesting release.
2.3.0 was tagged but never published: the standalone RW-WPS preprocessing wheel would not build, so nothing reached PyPI. Tags here are forward-only, so the number moved. Everything 2.3.0 carried ships here, plus that fix.
New:
- Two-way feedback nests. A child domain feeds its solution back into its parent, and the parent run carries it.
- A nest can stream its tiles. A parent that cannot hold its child on the card runs the child tile by tile instead of refusing.
- Per-domain
[tiles]control. Any[[domain]]block can carry its owntiles = { ... }table, which replaces the tree-wide table for that grid. - Streamed parent with resident child runs from a plain config through
gpuwm run. Two runs of the same config produced identical bytes on an RTX 5090. - Two-way feedback with a tile-streamed child runs from a plain config through
gpuwm run. Two runs produced identical bytes on an RTX 5090, matching the streamed-parent shape and the all-resident run. - Chain runs: a finished run's wrfout files can start a new higher-resolution child, including a tile-streamed one, with
gpuwm downscale --tiles on. - wrfout files carry the full surface identity, so any ArWen output can initialize a child.
- Streamed runs choose their own tile size against the card they meet, and the run receipt records every grid's decision.
Fixed:
- The standalone RW-WPS preprocessing wheel builds again. It was unbuildable at 2.3.0. Build tooling only: no product source changed and the wheel's behaviour is unchanged.
- Tile streaming now starts on Windows. It could not start at all before.
- A streamed run is bit-identical to the resident run, plots included. Streamed runs used to read their boundary data one timestep late, so upgrade before trusting a streamed result from an earlier version.
- Store-direct streamed runs, the road the largest domains take, carried the same one-step boundary error. The clock is now bound explicitly and checked on every launch.
- Streamed runs publish the OLR the tiles computed. Routes that write frames from the domain state, the offline child included, wrote zeros.
- The ERA5 config route reaches the forecast on every path.
- Nested ERA5 runs apply the terrain soil-temperature correction on child domains.
- A streamed tree prices its children before it tiles the parent. A streamed parent used to claim the whole card and leave its child with nothing to plan.
- A streamed grid names itself in the run receipt even when streaming is declared per domain. It used to stream in silence.
gpuwm doctornow gives correct CUDA toolkit advice and current NVIDIA wheel names when CuPy cannot find CUDA headers.- wrf-rust 0.2.35 through 0.2.x is accepted (0.2.38 verified), so installing gpuwm no longer downgrades a working newer core. The hard
==0.2.35pin is gone.
Known issues:
- Two-way feedback (
feedback = 1) is experimental and is not certified against stock WRF yet. It runs throughgpuwm runonly. gpuwm go --io-mode historywrites no restart, sogpuwm downscalerefuses to chain from agoarchive. Chain fromgpuwm runwithrestart_interval_sset on the parent.- Storm-following (moving) nests run resident. A streamed child refuses relocation with a message naming the grid.
- A coupling edge with both ends streamed is refused. One end of an edge streams, never both.
Changelog: https://github.com/FahrenheitResearch/arwen/blob/main/CHANGELOG.md