Skip to content

ArWen 2.3.1

Choose a tag to compare

@FahrenheitResearch FahrenheitResearch released this 14 Aug 18:35
· 8 commits to main since this release

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 own tiles = { ... } 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 doctor now 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.35 pin is gone.

Known issues:

  • Two-way feedback (feedback = 1) is experimental and is not certified against stock WRF yet. It runs through gpuwm run only.
  • gpuwm go --io-mode history writes no restart, so gpuwm downscale refuses to chain from a go archive. Chain from gpuwm run with restart_interval_s set 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