Aquí hi ha 38 versions d’ArWen, des de 31 de juliol del 2026 fins a l’actual, 2.9.8. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.
| Versió | Data | Mida | Fitxers |
|---|---|---|---|
| 2.9.8Darrera versió | 26 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióThe desktop stays ArWen Desktop 1.0.10, from the 2.9.0 release.
Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
Fixed
- A cycle younger than an archive holds (GDEX 48 h, NCEI 0.5 degree 72 h) is fetched from the next source instead of failing on the archive.
- Ensemble members that share a download folder no longer rewrite each other's composed files (gem-gdps, ecmwf-open-data-0p1, GEFS).
- Moving nest-downs finer than 4 km drop the parent's MM5-only surface-layer options with the parent's surface layer.
- GOES-17 ABI windows (full disk and PACUS) fetch.
- The radar-tendency receipt records a slot with no covered point.
- rw_mpas_static builds global statics about twice as fast, with identical output. |
| 2.9.7 | 25 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióNew
- Run controls: per-nest history intervals, a quick-look stream between full frames (quicklook = { every_s, history_vars }), an LES closure below 250 m, the storm nest size and an inner nest.
- Moving nest-downs: gpuwm downscale --follow storm|parent|fixed|target and --warm-from.
- Every run and ensemble member writes the any-point column store (rw-store v2), so soundings can be drawn at any point and hour after the run.
- IFS HRES open data at 0.1 degree (ecmwf-open-data-0p1) at any posted cycle and lead.
- RRFS ensemble members start with their same-cycle deterministic companion, which supplies the land state and the column above the member's 250 hPa top.
- HRRR v4 climate statistics (output_diagnostics, diag_int, wind_int) and the HRRR initial-history reflectivity.
- A sub-hourly history subset beside hourly full frames ([output] full_history_interval_s).
- Children finer than 4 km (gpuwm downscale --point, --source hex-global) default to the HRRR-shape suite; --physics-profile ID or parent chooses.
- A hydrometeor handed to a child (another model's analysis, a downscale, the specified ring) arrives with a number that matches its mass.
- Cyclone runs: a rain swath product, and moving-nest accumulations kept in one fixed frame across moves.
- 5 km CONUS forecasts stream on a 32 GB card.
- CONUS hydro from EPA NHDPlus V2.1 with pip install "gpuwm[hydro-conus]".
- Remote resumes find prepared bundles and checkpoints across chain names.
- Branched ensembles (gpuwm ensemble --branch-from) share each card among several members (--members-per-card auto) and draw their maps on every core; branched members write column stores, and ensemble maps carry their map transform for any-point soundings.
Fixed
- gpuwm go with the default products on grids whose spacing is not a whole kilometre.
- Maps: isobar labels and H/L marks are drawn over wind barbs; the sounding location inset has world coastlines; the ensemble paintball map has a member legend; the meteogram's end barbs stay inside the panel.
- --cyclone-products works with ensembles and with tiles; gzipped b-decks, track times in UTC, and Earth-2 storm: auto picks the named storm's low.
- The 30 m terrain overlay takes a following nest's all-ocean first footprint; the corridor terrain mosaic and its resample run on every core.
- Morrison runs a small domain in one launch; the start state, the regional hex static and polygon meshes build on every core; nested adaptive runs land on output times with fewer steps; rw_mpas_stream encodes on every core.
- rw_wrfbatch no longer overflows its stack importing a 1 km hex region frame.
- mp=28 downloads the pinned WIF aerosol climatology or refuses by name; the synthetic profile is used only when named. --recipe hrrr and hrrr_v4 are accepted, and --recipe takes --forecast-start-hour.
- Ensemble preparation: one download per object and an atomic HRRR bridge gate.
- RUC: the soil-moisture floor after the 0 m anchor, and partial sea-ice albedo and emissivity seeds.
- MPAS-route exports read reflectivity from the diag stream.
- A streamed moving nest's checkpoint keeps its accumulation archive.
- gpuwm run --wrfinput and --met-em stream a forecast the card cannot hold resident instead of refusing it.
- GFS archive cycles with no index read their level ladder from the object; HRRR coastal matching works at an open window edge; hydro parameters handle catchments leaving the window; two --prepare-only launches in one second get two run folders.
- The 1 km nest of an HRRR 3-1 tree and ICON global source normalization initialise on every core. |
| 2.9.6 | 24 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.9.6. The desktop stays ArWen Desktop 1.0.10, from the 2.9.0 release.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.9.6".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
New
- Soundings at any point after a run: gpuwm soundings RUN --columns DIR writes a column store of every column at each history time, and a sounding drawn from a stored column matches one drawn from the history file.
- Soundings say what they show: the point, valid time, forecast hour and member at the top left, and the model and its start in bold at the top right (title, brand and init settings, or GPUWM_SOUNDINGS_SETTINGS). rw_hex_points takes --brand.
- Single-domain runs apply [perturbation] warm bubbles.
- gpuwm hydro ahead CONFIG builds a domain's hydro fabric before the launch that uses it.
Fixed
- gpuwm go no longer waits about 35 minutes on a RAP or HRRR native cycle that has already posted.
- HRRR and RAP smoke starts before 2021-12-21 14Z read MASSDEN in its real units (ug m-3).
- Morrison microphysics (mp=10) steps about 11% faster, with identical output.
- The end-of-run redraw of a fire (SFIRE) forecast no longer fails on the native fire panels, and those panels keep their folders.
- A WRF-input --restart started from another directory is no longer refused as a different run.
- Preparation has no single-core stages between fetch and forecast, and a forecast from a prepared bundle pre-warms its kernels.
- rw_soundings reads only the profile columns it needs (much faster, a quarter of the memory) and no longer hangs at exit.
- A fetch that streams many files at once no longer uses up the account's file watchers (other programs then failed with "too many open files").
- Maps: threshold colorbars (snowfall, liquid equivalent) give every band the same length with a tick at each boundary; a map with nothing to draw says why; rain, snow, freezing rain and ice pellet flags are drawn as two categories with crisp edges; dimensionless fields carry no unit label; the map frame is the same width on every side. |
| 2.9.5 | 23 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.9.5 is a hotfix of 2.9.4. The desktop stays ArWen Desktop 1.0.10, from the 2.9.0 release.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.9.5".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
Changed
- Coupled hydro is opt-in: a run has no hydro unless it asks with --hydro on (or a [hydro] table with enabled = true).
Fixed
- install.sh installs rustup with the required Rust when the system Rust is older than 1.94.
- The mixed-layer ocean: water rising through the bottom of the column carries the bottom layer's own properties, so coastal sea surface temperatures no longer drift.
- Hydro start-up: the spin-up replay runs on the GPU in one launch instead of thousands of host steps, its ERA5 source downloads beside the fabric build, and the kernel pre-warm compiles the hydro units and the forecast's own variants ahead of the first step. |
| 2.9.4 | 22 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.9.4 is a release on the 2.9 line. The desktop stays ArWen Desktop 1.0.10, from the 2.9.0 release.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.9.4".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
New
- The packaged HRRR recipe follows operational HRRR v4 physics: 5th-order vertical advection, the HRRR sixth-order filter and upper-wind limiter, microphysics zero-out, fractional sea ice, smoothed boundary terrain, RUC sea ice, HAILCAST and hourly maximum diagnostics.
- gpuwm race and gpuwm standby start the HRRR recipe the moment NOAA posts its analysis and publish each forecast hour's products as it closes.
- Storm-following 1 km nests on the HRRR recipe (gpuwm go --storm-nests N), spawned on updraft helicity and moved with the storm.
- HRRR-Smoke for the HRRR recipe with --smoke: RAVE fire emissions, HRRR and RAP smoke for the start and boundaries, across several cards with --devices.
- Coupled NextGen hydro runs by default wherever a hydrofabric covers the domain; --hydro off turns it off.
- Coupled atmosphere, ocean wave and storm surge runs (gpuwm ocean run) with GPU spectral waves and GPU shallow-water surge.
- A GPU mixed-layer ocean for multi-day marine runs, initialised from RTOFS/HYCOM, and prognostic sea ice on the GPU, both on by default.
- Live aerosol optics into RRTMG and RRTMGP on the GPU (aer_ra_feedback=1), with AOD at 550 nm written; composition sources from MERRA-2, CAMS and GEOS-FP.
- Solar eclipse shading on the GPU, on by default.
- Hail size from the microphysics and HAILCAST on the GPU, on by default at 4 km and finer, with gpuwm obs hail verify against MESH and SPC reports.
- New default products: integrated vapour transport, integrated water vapour, freezing level, atmospheric-river outlines, visibility and fog (with ensemble fog probability), snowfall, snow depth and snow-to-liquid ratio, heat index, WBGT, HDWI, Haines, lightning threat and 2 m vapour pressure deficit.
- Hub-height wind, shear, turbulence intensity, ramps and table-driven turbine power (gpuwm render --products hub_*).
- Solar products: GHI, DNI, DHI, plane-of-array, PV power, clear-sky and ramps (gpuwm solar products).
- Fire danger indices with carried state: the Canadian FWI system, KBDI and NFDRS 2016.
- LANDFIRE fuels and 3DEP terrain for coupled fire runs (gpuwm fire-static), and fire ignition from incident points, perimeters and FIRMS detections (gpuwm fire-ignition).
- New sources: archived GFS from GDEX and NCEI, dated operational GEFS and the GEFSv12 reforecast, and historical ECMWF ENS members.
- Polar stereographic domains that enclose either pole, chosen automatically by the domain wizard.
- Storm tracks fetched automatically from IBTrACS, HURDAT2, ATCF and JTWC; gpuwm cyclone-setup --storm auto|ID|NAME selects a storm without a track file; gpuwm tc-tracks --best-track auto scores tracks.
- gpuwm go --cyclone-products drives the every-step tropical cyclone accumulator on a moving nest.
- Medicane and polar-low detection and tracking on the GPU.
- GLSEA and ERA5-Land lake temperatures on lake columns when the lake model is on.
- gpuwm setup --with-geog stages a permissively licensed default geography set, including SoilGrids soil texture.
- gpuwm mesh --card rtx-pro-6000 sizes meshes for the RTX PRO 6000.
- gpuwm ensemble writes a run timeline and a per-stage timing table in ensemble-run.json.
- gpuwm render expands glob patterns in its inputs.
Changed
- A much smaller source tree: the vendored Rust crates share one offline registry and one wrf-core is vendored instead of two.
- Simulated radar from mixing ratios matches wrf-python's CALCDBZ when the file has no REFL_10CM.
- Faster first forecast step on large domains, and faster McICA radiation and acoustic dycore kernels.
- Preparation decodes JPEG2000 GRIB2 fields in parallel, so a full-CONUS HRRR run reaches its first step sooner.
|
| 2.9.3 | 20 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.9.3 is a release on the 2.9 line. The desktop stays ArWen Desktop 1.0.10, from the 2.9.0 release.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.9.3".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
New
- A whole-step driver for nested domains and ensembles: nested 24 h case A runs in 111 s on an RTX 5090 (144 s instead of 171 s on an RTX 4090) and nested 24 h case B in 85 s instead of 112 s (RTX 4090); the HRRR-shape 24 h run with products finishes 7 percent sooner (RTX 5090).
- gpuwm ensemble fills a WoFS-shape ensemble to 36 members from any analysis: the source's own members, then time-lagged cycles, then perturbation fill, with every member's provenance written beside its output.
- An ensemble sounding window: the mean, any member, or all members with the P10-P90 band, from plain ensemble output.
- Coupled NextGen hydro is available with --hydro SETTINGS.toml and a prepared hydrofabric; a forecast without one records the gap in its receipt.
- A new README.
- Input files already downloaded and verified on the machine are used instead of being fetched again.
- gpuwm fetch --source earth2 --model fcn3 runs an NVIDIA Earth-2 model through Earth2Studio from pinned weights, and a forecast starts from its output with --source earth2; FourCastNet 3, SFNO, Pangu, Aurora, FengWu, GraphCast and AIFS output is read the same way.
- Forecast output exports to Earth2Studio tensors, its diagnostic models and GRIB2 fields (docs/public/EXPORT-EARTH2.md).
- gpuwm tc-tracks writes tropical cyclone tracks from completed forecast and ensemble output.
- gpuwm earth2 runs an Earth-2 model and an ArWen storm nest from its output in one command (--model, --storm, --nest, --ensemble, --diagnose), with restricted-licence models refused until --accept-licence names the licence.
Fixed
- Moving nests choose same-class land and radiation donors on CUDA by default and keep resident land, held physics rates and radiation carry on the GPU.
- The cyclone preset follows the MSLP minimum, and its movement allowance follows tracked speed and the move interval.
- Adaptive timesteps land on moving-nest and track deadlines, so a 15-minute consultation is not silently skipped.
- Moving-nest wall receipts include the required post-move health validation.
- Ensemble member preparations are admitted against host memory, not only CPU count.
- Host memory under a container limit counts the page cache the kernel can reclaim, so a warm cache no longer refuses a CPU preparation.
- On Windows, a receipt being polled by a reader no longer blocks the writer's replace.
- The geography root given to gpuwm domain survives into gpuwm check and gpuwm go on Windows.
- SoilGrids tiles written with user-defined GeoKeys, as ISRIC's service has written them since 2026-10-15, read again under their declared projection, so [static.highres] fields = "auto" preparations no longer fail.
- gpuwm go with ERA5 and other runtime-route sources, and gpuwm run, write the step log progress.jsonl with a record for every step.
- Hex global forecasts finish their final state digest instead of stopping on a little-endian field read from NetCDF.
- The CONUS HRRR recipe's model top lies inside the source's vertical levels, and a model top above the source's levels is refused when the run is planned instead of after preparation.
- gpuwm check prices the memory gpuwm go holds for its chained forcing. |
| 2.9.2 | 18 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.9.2 is a release on the 2.9 line. The desktop stays ArWen Desktop 1.0.10, from the 2.9.0 release.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.9.2".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
New
- A gpuwm-hex run can be the initial and boundary source of an ArWen domain.
- Observation readers: Himawari AHI, GK-2A AMI, GOES-18 full disk and CONUS, with one geostationary fetcher.
- MADIS public streams (aircraft, sondes, mesonets, live feed) in the observation doors.
- A GLM flash-extent-density reader.
- European radar: live and archive feed listings (FMI, DMI), dual-PRF velocity correction and DWD split volumes.
- Radar readers for JMA, IRIS RAW, UF, CfRadial and DORADE, with open-archive fetch by table.
- The run timeline records the measured cores of every stage, and a single-core gate fails a stage that holds one core while the card or other cores wait.
Fixed
- Every fix in 2.9.1.
- Thompson microphysics (mp_physics = 8) runs straight after pip install gpuwm: the first run downloads and checks its two large lookup tables.
- MPAS mesh generation no longer triangulates on a single thread.
- Later forcing times in preparation are built side by side.
- The hex vertical grid writes its output in parallel.
- Lower GPU memory for WSM6, the MPAS column seam, the batched shortwave chain and New Tiedtke in the MPAS column batch.
- A missing static dataset is refused once, naming every dataset the native static builder opens.
- US 00Z soundings from MADIS are dated to their real release time. |
| 2.9.0 | 15 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.9.0 makes correct mode the default, prepares GFS starts the way WPS and real.exe do, builds the MPAS static that MPAS-A v8.4.2 itself builds (lakes are water again), matches eight everyday WRF schemes to WRF v4.6.1 word for word, adds WRF microphysics, cumulus, radiation and lightning options, and runs a whole forecast suite from one file. ArWen Desktop 1.0.10 ships beside it.
- Windows desktop: extract and open ArWen.exe. Setup installs and checks the matching runtime, tables and geography.
- Linux desktop: follow the included installation guide. The graphical application requires x86-64 Linux with glibc 2.39 or newer.
- Integration kit, desktop source, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
Correct mode is the default
Two water-budget defects that WRF and MPAS carry are fixed in every default run: WSM6 and WDM6 booked rain falling below ground in a sloped layer at the flat layer mean, and New Tiedtke added moist-mass tendencies to dry-mass mixing ratios. Classic Thompson also books the cloud water that settles out of the lowest level in a new total, CLOUDNC. On a 6 h 3 km WSM6 case the corrected and uncorrected runs differ only in surface rain and canopy water in the first hour, then drift as from any tiny perturbation; 6 h domain rain stays within 1%. physics.mode = "exact" computes byte for byte what the engine computes without the corrections, and strict WRF mode (GPUWM_WRF_EXACT=1) forces it. Every forecast receipt names the mode and the corrections that reached each domain.
New
- gpuwm suite runs a whole forecast suite from one file: plan, run, status, halt, resume and rehearse, surviving a killed scheduler without running a cycle twice.
- gpuwm domain --recipe hrrr_v4_gsd41 --region NAME --spacing-km N lays out the full HRRR-style recipe for any region in the shipped table, with no per-country code.
- WRF physics: Purdue Lin, WSM3, WSM5, Ferrier-Aligo, WSM7 and the revised WSM6 microphysics; Grell 3D and New SAS cumulus; New Goddard radiation, icloud = 2, aerosol options 1 and 2; WRF's lightning package; MYNN TKE advection. Each new microphysics and cumulus scheme matches WRF v4.6.1 word for word on its committed columns.
- Mixed-physics ensembles: members may mix microphysics, boundary layer, land surface and radiation.
- Stochastic physics (SPPT, SKEBS, SPP, initial wind perturbations) runs with loud warnings and a receipt; with every option off the output is byte-identical.
- The platform wheels carry all 48 tools again, simulated radar, ML export and the globe packer included, and gpuwm fetch-bridges --partial installs only the tools you name.
- rw_mpas_static is one binary with its bounded, words, gwd-replace, gwd-review and verify tools, and gpuwm fetch-geog stages every dataset the native static path reads.
- Engine pieces for gpuwm-hex 0.4.0: the generic MPAS column-physics entry, New Tiedtke at each cell's own grid spacing, the ICON global source and the RRFS v2 preset found through an installed gpuwm-hex.
Changed
- Every default MPAS static changes. rw_mpas_static writes the 79-variable static MPAS-A v8.4.2 builds from an empty namelist, with MODIS land use in which a lake is water and native gravity-wave-drag statistics. On a 3 km regional mesh over the Great Lakes, 15,412 lake cells had been stored as land; the new static has none. A cached static rebuilds once.
- GFS starts rebuild once. RH conversion, lake skin temperature and ice, snow and the real.exe surface fields now follow WPS and real.exe. Against WPS 4.6.0 and real.exe 4.7.1 on a 3 km CONUS case, skin temperature RMS is 0.029 K (2.8.9: 0.252 K). The fetch takes a pressure level above the model top, so an older GFS subset is fetched again, and gfs_grib2_bridge must be rebuilt.
- Four WRF 4.7 and 4.8 correctness fixes are on by default (the solar equation of time, YSU's capped entrainment, Noah-MP night snow ageing, the urban rain-evaporat |
| 2.8.9 | 11 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.8.9 runs NCAR's WRF CONUS benchmarks straight from their folders, continues a WRF run from its restart file, adds WRF's original Tiedtke cumulus (cu_physics = 6) and WRF v4.4's Thompson, reads NetCDF-4 files many times faster, ships an RRFS v2 preset, and carries the 2.8.8 correctness work: diffusion, damping, the boundary and surface layers, Thompson, RUC and the microphysics heating clamp now compute as WRF does in the default build.
2.8.8 was not released. Everything it would have shipped is in 2.8.9 and listed here.
- Windows desktop: extract and open ArWen.exe. Setup installs and checks the matching runtime, tables and geography.
- Linux desktop: follow the included installation guide. The graphical application requires x86-64 Linux with glibc 2.39 or newer.
- Integration kit, desktop source, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
The CONUS benchmark in one command
Unpack NCAR's v4.4_bench_conus12km tarball and run both legs from the folder as shipped, then NCAR's own comparison script:
gpuwm run v4.4_bench_conus12km --outdir woof-12h && gpuwm run --restart-from v4.4_bench_conus12km/wrfrst_d01_2019-11-26_23:00:00.gnu --outdir woof-restart
python v4.4_bench_conus12km/diffwrf.py woof-restart/wrfout/wrfout_d01_2019-11-27_00_00_00 v4.4_bench_conus12km/wrfout_d01_2019-11-27_00:00:00.gnu.restart
The 2.5 km benchmark runs the same way from v4.4_bench_conus2.5km. --benchmark skips render and post-run verification and prints WRF-style timings (startup, read, init, first step, steps, write), also written to benchmark-timing.json. On one RTX PRO 6000 Blackwell the 12 km restart leg takes about 49 s end to end and the 12 h leg about 100 s; the 2.5 km restart leg, with its 11.6 GB restart, takes about 424 s, about what NCAR's ifort build takes on 1,800 cores. At 00Z, wind, temperature, moisture, surface and rain differences from NCAR's output sit inside NCAR's own ifort-against-gnu spread.
New
- gpuwm run --restart-from a wrfrst_d01 file continues a WRF 4.x run from its restart. A WRF run folder named as the configuration runs too, and so does restart = .true.. NCAR's v4.4 benchmark folders import as shipped (physics_suite, a root parent start of 0, radiation cadence in whole steps). At the restart instant WOOF and WRF 4.6.1 agree on every compared field. Physics cadences are checked before any field is read, so a wrong cadence is refused in seconds instead of after the read.
- cu_physics = 6, WRF's original Tiedtke and the cumulus of WRF's CONUS suite, runs on the GPU in one whole-domain launch. Its columns match WRF v4.6.1's Fortran word for word in default and strict arithmetic.
- Classic Thompson (mp_physics = 8) runs WRF v4.4's generation for inputs WRF v4.4 wrote, chosen from the file's producer stamp; thompson_version or --thompson-version chooses explicitly, and other inputs keep the v4.6.1 generation. On both benchmark domains its columns match WRF v4.4 word for word.
- A fixed-step WRF folder runs WRF's acoustic substep count by default (time_step_sound, or WRF's own rule when it is 0); the receipt states the count that ran.
- Preset rrfs-v2-hex-tempo: NOAA's RRFS v2 configuration with TEMPO microphysics on the MPAS hex dycore (conus12km), with five declared divergences; its 6 h observation scores match NOAA's own run.
- mp_physics = 30 (WRF's FAST_SBM): HRRR, RAP and GFS starts fill its bins mass-exactly, winter runs no longer stop at the first snowfall, nested trees validate and checkpoint, and its column kernels run 5x faster with the same bytes. A run on RTE+RRTMGP is refused before step 0, naming legacy RRTMG.
- gpuwm obs scorecard scores finished runs against observations: station residuals pooled across leads within each case, FSS averaged across leads, and two arms compared by resampling independent case blocks. gpuwm scoreboard --request runs the Rust nightly scorer, which matches the forecast to each stati |
| 2.8.7 | 7 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.8.7 brings GRIB2 export back as WOOF's own clean-room post-processing, opt-in smoke, dust and air quality, coupled SFIRE fire runs, and the operational HRRR physics generation by default for HRRR configurations, with its Thompson tables published as release assets.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.8.7".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
New
- GRIB2 export is back, rebuilt clean-room under Apache-2.0 on WOOF's own post-processing (woof-post/v1): gpuwm export-grib2, gpuwm go --grib2 and gpuwm render --grib2-out write shelter, surface, pressure-level, stability, cloud, gust, visibility and simulated IR fields, and every message names WOOF as its generating process. Post-processing runs on the GPU when one is present and on the CPU otherwise.
- Smoke, dust and air quality, opt-in: wildfire smoke from NOAA's RAVE fire product with plume rise and HRRR-Smoke's emission timing, GOCART dust, sea salt and carbon aerosol, and CAMS composition boundaries. A run started from HRRR takes HRRR-Smoke's own 3-D smoke as its start state and boundary.
- Coupled WRF v4.7.1 SFIRE on a refined GPU fire grid, with fuel moisture, spotting, heat and moisture feedback and checkpoint continuation; &fire namelists import.
- HRRR configurations run the operational branch's Thompson generation and GSL surface layer by default. Its four lookup tables (330 MiB) are published with the release and fetched and verified automatically, so no Fortran compiler is needed.
- Radar latent heating for the first part of a forecast ([radar_heating]), and StormScope, WOOF, HRRR and MRMS nowcast comparison sheets (rw_nowcast_frames).
- High-resolution urban land cover supplies class-weighted urban fractions to the single-layer urban canopy.
- The data-assimilation line: fork Thompson and GSL surface layer at the HRRR door, mean-preserving species perturbation, balanced member perturbations, a Rust radar superob, and faster member jobs and analyses with identical bytes.
Fixed
- The shipped HRRR recipes run from their installed path: gpuwm go on any of them stopped before its first stage. They now write their WPS namelist from the recipe's own grid and fetch the HRRR CONUS static set (1.1 GB) first; a fresh install ran a recipe through preparation and a one-hour GPU forecast.
- HRRR runs no longer stop at preparation on cycles where NOAA publishes the analysed aerosol fields with masked points; configurations that explicitly ask for those fields are refused by name on such cycles.
- Aerosol-aware Thompson (mp_physics = 28) matches WRF v4.6.1 bit for bit on all 22 oracle columns.
- 2 m dewpoint and relative humidity products read WRF's Q2 as a mixing ratio; rendered and ensemble 2 m dewpoint read 0.1 to 0.25 K moist before.
- A forecast started from a separate analysis (--initial-inputs) begins its first boundary interval from its own start state, as WRF does. On two 3 km cases the hour-1 2 m temperature error in the outer 30 km fell from 1.00 to 0.70 K and from 1.16 to 0.73 K, with no change in stability.
- Stopping gpuwm go no longer leaves a forecast supervisor holding a card; every stage exits with its parent on Linux.
- gpuwm go --prepare-only stops after preparation on every route, --dry-run only prints the plan, and --outdir gets a stamped run folder.
- Data-assimilation cases take their surface networks and radar sites from the domain instead of a fixed regional list, and a cycle with point observations and a gated velocity-dispersion zone no longer refuses its withheld re-solve.
- A history that keeps grid-relative winds keeps their rotation, so station scoring scores wind again.
- Ensemble product maps draw through WOOF's own Rust renderer again; a check had refused this install's own renderer build.
- Idealized runs with radiative open boundaries advect geopotential on their outer rows exactly as compil |
| 2.8.6 | 6 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.8.6 adds the operational RAP/HRRR physics forms behind the HRRR importer and recipes, default observation verification of finished runs, nested and streamed ensembles, and a much faster start.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.8.6".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
New
- The HRRR namelist importer and the HRRR recipes select the operational RAP/HRRR WRF branch forms: sixth-order filter, microphysics zero-out and upper wind limiter (diff_6th_form, mp_zero_out, upper_wind_limiter_form), fifth-order vertical advection (v_sca_adv_order, v_mom_adv_order), Thompson microphysics (thompson_version = "wrf_39_noaa"), the GSD v4.1 MYNN boundary layer and surface layer (bl_mynn_version = "gsd_41", mynn_sfclay_variant = "gsl_wrf39"), the RUC land-surface forms, sun-angle land albedo (alb_sol = 1), aerosol optics 3 and shortwave interpolation 1. Every general default stays the WRF v4.6.1 form, and configurations that do not come through those doors emit the same bytes as before.
- Where the operational branch carries a known defect, the default keeps the corrected form: MYNN cloud tendencies and the melting-snow fall speed stay on WRF v4.6.1's, and the branch's own expressions are available only by explicit selection.
- HRRR configurations use the pinned operational CONUS static file on HRRR's grid, and a single-domain namelist whose adaptive clock is pinned (20/20/20) imports as the fixed step it integrates, with the six acoustic substeps WRF derives for it.
- A finished forecast is verified against observations by default: station dots and scorecards, and MRMS reflectivity and hourly rain panels. The run waits at most 2 seconds for it; downloads and scoring continue in the background, gpuwm verify-visuals RUN_DIRECTORY runs it on demand, and GPUWM_VERIFY_VISUALS=0 turns it off. A verification failure never changes a forecast's result.
- Packed ensembles carry a parent and its nest together, ensemble products can be reduced as members finish, and an interrupted streamed nested forecast or ensemble continues from its last checkpoint.
- gpuwm fetch --source 20crv3-cf starts a forecast from NOAA's 20th Century Reanalysis v3 (1836 to 2015).
- [physics_params] applies a named set of physics parameter values, recorded in the run's identity.
- Multi-card forecasts step their slabs at once under free-threaded Python 3.14.
Fixed
- 2 m dewpoint on HRRR-configuration runs: prescribed monthly leaf area and albedo with the operational RUC forms bring the afternoon bias from about +0.5 to +0.8 K down to HRRR's own on two full-grid cycles, with 2 m temperature error unchanged. Surface shortwave excess against HRRR fell from about +31 to +4 W/m2 on a full-grid cycle.
- Isobaric heights no longer read high (5.3 m at 500 hPa on a 3 km frame).
- A nest keeps its freshly measured CFL when an output alarm lands on a full step, instead of continuing on stale step memory. Generated adaptive nests state a maximum step growth of 5 percent, and gpuwm check names any adaptive nest set above it: a 1 km and 500 m nested forecast failed at WRF's nest value of 51 percent and completed at 5 percent with no measured cost.
- A nested health failure is retried at most twice from a verified checkpoint with a lowered step ceiling, and every retry is written to the run receipt.
- An HRRR-native start no longer refuses when the source's top level sits a fraction of a millipascal above the model top.
- A completed forecast keeps its exit status and final-state digest when history frames are deleted during the run.
- A physics template's own parameters win over its component options; the GSD v4.1 MYNN suite had been running the component's mixing length and scalar mixing instead of its own.
- The GPU memory watcher no longer runs nvidia-smi on the forecast's own thread: a nested forecast on a busy multi-card host wen |
| 2.8.5 | 4 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.8.5 adds HRRR and RAP native inputs and the HRRR physics options, runs ensembles from real member sources, draws dual-polarization simulated radar, and reduces RUC's near-surface moist bias.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.8.5".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
New
- hrrr-native and rap-native prepare HRRR's and RAP's native hybrid-level analyses through the shared source tables, and gpuwm prep --initial-inputs JSON starts a mapped domain from a separately declared analysis while every lateral frame comes from the boundary source.
- use_rap_aero_icbc = true takes aerosol number initial and boundary values from the analyzed input. MYNN supports WRF mixing length 2 and scalar_pblmix = 1. RUC supports mosaic land use and soil (mosaic_lu, mosaic_soil) and WRF's CLM lake model (sf_lake_physics = 1). WRF's off defaults are unchanged.
- gpuwm ensemble CONFIG --members N (also gpuwm go and gpuwm run) runs N members, each from its own source trajectory: the source's operational ensemble by default (gefs for gfs, aigefs for aigfs, ecmwf-ens for ecmwf-open-data), earlier cycles of one model with --recipe time-lagged, or a listed set of models and cycles with --trajectories FILE. A source with no operational ensemble exits 2 before any download and names those two options. The run draws ensemble mean, spread, minimum and maximum, threshold probabilities, paintball and postage-stamp maps while it runs. --dry-run prints the member plan and fetches nothing. Ctrl-C stops the run at the next model step.
- Members on Thompson, YSU, MM5 surface layer, Noah and legacy RRTMG with a fixed clock advance as one batch per card, with every product file byte-identical to the members run one at a time. On an RTX 5090, four time-lagged members of a 150x120 3 km one-hour case forecast in 22.0 s batched against 39.5 s one at a time. Other members run one after another and the run records why.
- gpuwm fetch --source ecmwf-ens fetches ECMWF open-data ENS members p01 to p50, and --source rrfs-ens fetches the five public RRFS ensemble members.
- Simulated radar draws ZDR, CC and KDP PPIs when the volume carries them. Radar colours follow the AWIPS reflectivity table (top 85 dBZ) and a green-red velocity table on simulated radar and on the composite, 1 km, ensemble and observed reflectivity maps. [simulated_radar] color_tables = "classic", gpuwm render --radar-colors classic or RUSTWX_RADAR_COLORS=classic brings back the earlier colours.
Fixed
- RUC soil water no longer refills a dry top soil level from below at the WRF v4.6.1 rate, which made evaporation run high and the near-surface air moist. The new default ruc_soilprop = "wrf_45" uses the WRF v4.0 to v4.5 form, also the operational RAP and HRRR form; "wrf_461" keeps the earlier behaviour. In one cycle (2026-10-02 21Z, full HRRR configuration), 2 m dewpoint bias against 2,287 / 2,255 stations went from +1.16 / +1.59 K to +0.92 / +1.22 K at f01 / f02, and 2 m temperature bias went from -0.51 / -0.56 to -0.40 / -0.42 K. Answers change for every RUC run.
- Legacy RRTMG longwave applies each stratospheric optical-depth correction once; parallel band calculations previously raced and could change upper-level heating. Answers change.
- MYNN initializes turbulent moments from water vapor, as WRF's driver does, instead of including cloud condensate. Answers change for cold-start cloudy columns.
- RUC runs its water branch on lake cells when the lake model is off, instead of leaving them unadvanced. Answers change for RUC runs with lake cells.
- Split-domain and tiled forecasts initialize gwd_opt and topo_wind with each tile's own orographic statistics and true neighboring terrain.
- Forecasts on card sets that do not start at card 0 no longer fail at the first history write, and forecasts run one after another in one process release their microphysics |
| 2.8.4 | 3 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.8.4 adds simulated radar to forecasts, ports WRF's older implicit vertical-advection variant, makes legacy RRTMG shortwave follow WRF on low-top domains, and separates WRF comparison from observation validation throughout the documentation.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.8.4".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
New
- [simulated_radar] writes native radar volumes and PPI loops while a forecast runs. Sites, scan ladders, timing, fields and formats are configurable. Level II and CfRadial 1 are the defaults; CfRadial 2 and ODIM are optional. Before fetching, a forecast checks the radar writer and the scan's memory and adds listed sites' radar output to its disk check; ensemble and local-cycling members refuse the table by name. gpuwm simulated-radar replays saved full-column histories into radar afterwards, and the manifest records every artifact's path, hash, scan time and source revision. Off by default.
- gpuwm simulated-radar --describe reports the installed radar support, and --estimate reports scan samples, memory and an output-size bound before any history is read.
- zadvect_implicit_variant = "wrf_legacy" selects WRF's older implicit vertical-advection split and scalar mass weighting, on resident grids and on [devices] tiles. The default stays "wrf_471"; the older variant changes forecast answers.
Fixed
- Legacy RRTMG shortwave follows WRF on columns with no layer above the troposphere switch (a model top below about 190 hPa, as on shallow or idealized domains): the solar source of bands 16, 17, 27, 28 and 29 is zero there, as WRF leaves it. The batched path read leftover GPU memory for bands 16 and 27, which gave NaN or impossible surface fluxes. Answers change only on such columns.
- The documentation distinguishes code verification, solution verification and validation against observations. WRF comparisons name their reference version, tested build and limits. Physics profiles use comparison names. Old profile IDs and labels are still accepted wherever an ID is entered, and a preparation sealed under an old ID still matches and extends. Suites with no current matched WRF run, the defaults included, report supported-not-wrf-verified, and a prepared forecast prints one line saying so; the run continues.
Local data assimilation stays experimental and its ordinary desktop entry point stays hidden. Advanced users enable it with gpuwm tui --enable-local-da.
Known limits: the web GUI is a preview and the desktop app remains the full way to run ArWen; a single-domain preparation still refuses a [perturbation] block; WRF's gwd_opt = 2 is not ported and is refused.
The verification records identify completed artifact and startup checks, the short GPU forecast, and retained component evidence. They do not establish general forecast skill or whole-model parity.
Installation and usage | Full changelog |
| 2.8.3 | 2 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.8.3 is a feature and fix release that splits one forecast across several cards, exports runs as machine-learning datasets, adds WRF's sub-grid terrain drag and coordinate-surface diffusion, applies WRF's moisture correction to the pressure terms by default in every moist forecast, and fixes six places where the dynamical core differed from compiled WRF v4.7.1.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.8.3".
- Integration kit, verification records, and checksums.
- Node GPU gate: Stage 1 and both GPU-shard results, with the tested source revision and card identity.
New
- One forecast can run split across several cards: [devices] in a single-domain or tree config, or gpuwm go --devices N, splits it, and each card's memory is checked before the run starts. Off by default. In a tree, domains names the grids that split (every grid by default), a split nest takes its parent's forcing each parent step, and two-way feedback reaches a split parent. gpuwm sim --devices N or --devices-table sets the split for a prepared forecast without changing its prepared configuration. gpuwm check CONFIG --devices N prices every card, every grid and the pinned host memory, and exits 2 when a selected card has no declared or measured memory budget. History frames leave the card while the model keeps stepping. In the release's two-card test, the output was byte-identical to the one-card run's. A split parent over a resident nest, moving nests and late-starting split grids are refused by name, and a split grid refuses Noah mosaic (sf_surface_mosaic = 1) and slope radiation (slope_rad = 1) before anything is allocated; resident grids keep both.
- topo_wind (with the YSU boundary layer, not under BEP or BEP+BEM) and gwd_opt = 1 or 3 (with any boundary layer scheme) add WRF v4.7.1's sub-grid terrain drag on the card: the topographic wind correction, and the KIM or GSL orographic drag. The static builder computes the orographic statistics from WPS geography, and WRF namelists that set either key import. The orographic statistics come out bit-identical on Linux and Windows. A streamed [tiles] domain stops at its first drag call and asks to run resident. Off by default.
- diff_opt = 1, WRF's horizontal diffusion along model coordinate surfaces, runs with km_opt = 2 or 4 and either mix_full_fields setting, and restarts and streams. Off by default (diff_opt = 2).
- gpuwm ml-export turns a run's history files (a regional run's, a hex run's converted frames, a global run's tapes, or the run page's ZIP of them) into a machine-learning dataset: one Zarr store per domain on WeatherBench 2's 13 pressure levels (ERA5's 37 or the model's own as options), with ERA5 and WeatherBench 2 names and units, earth-relative winds, ERA5's below-ground fill flagged by a below_ground mask, levels above the model top left out and listed, an optional regular latitude-longitude grid, and a ZIP that opens in place. The stores open with xarray.open_zarr under zarr-python 2.18 and 3. See docs/ml-export.md.
- More forecasts start while their source is still posting, with output unchanged: gpuwm run-plan now starts GFS and native hrrr single domains and trees from the first posted hours, as gpuwm go does, and both commands start a single hrrr-prs, rap, rrfs, icon-eu or gem-gdps domain the same way. A [tiles] root, as gpuwm cyclone-setup writes, waits at each seam instead of for the whole cycle. A forecast that fails before a later lead times out keeps its own error, with the timeout reported beside it.
- GPUWM_FETCH_POLICY=aws fetches each source that has an AWS host in the route table from that host only, with no fall-through to NOMADS; a source with no AWS host keeps its usual host. latest resolves to the newest cycle whose first hours are on AWS (--whole-cycle keeps the whole-cycle rule), and forecasts still start from their first posted hours. Off by default: unset, fetching is unchanged. gpuwm fetch works with hosts that refuse HEAD requests, asking with |
| 2.8.1 | 1 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.8.1 is a feature and fix release that adds WRF's urban physics, starts forecasts while their source data is still posting, and runs physics faster with byte-identical output.
- Install or upgrade: pip install --upgrade "gpuwm[all-cu12]==2.8.1".
- Integration kit, verification records, and checksums.
New
- sf_urban_physics = 1, 2 or 3 runs WRF's single-layer urban canopy (under Noah or Noah-MP), its multi-layer BEP model (with YSU or MYJ; under YSU the surface drag outside the city is applied once, where WRF applies it twice), or BEP with its building energy model. The high-resolution land cover keeps its urban classes (Local Climate Zones or NLCD), and under the single-layer canopy a grid whose first level sits inside the canopy is refused when the config loads. Off by default.
- sf_surface_mosaic = 1 runs Noah's mosaic land-use tiles in each cell, matching WRF v4.7.1 apart from three WRF defects it does not copy; mosaic_urban_canopy = "every_tile" also runs the urban canopy in the town tiles of mostly rural cells. Off by default.
- The UW moist-turbulence boundary layer (bl_pbl_physics = 9) runs on the card and imports from WRF namelists.
- [shared] zadvect_implicit = 1 runs WRF's implicit-explicit vertical advection with its w_crit_cfl, matching WRF v4.7.1 on column checks apart from two corrected boundary terms that keep a steep ridge from going NaN. Off by default; answers change.
- [shared] adaptive_nest_lattice = true picks the adaptive root step with the fewest nest cell-steps: 6% faster on a three-domain 250 m tree; answers change. Off by default.
- A domain's terrain can stay unsmoothed or take any WPS GEOGRID.TBL smoother (gpuwm domain --terrain-smoothing), and smooth_precision = "wps-float32" makes the default smoothing match geogrid.exe exactly.
- WRF namelists with history_begin, history_end, smooth_cg_topo, topo_shading or slope_rad import and run, and an import names every unsupported key at once.
- Physics runs faster with byte-identical output. Per call: legacy RRTMG 7x, RUC 7 to 22x, Noah-MP 5.8x, MYNN 4.5x, NSSL 1.9 to 3.1x, P3 1.5 to 2.2x, RTE-RRTMGP 1.6x, Thompson 1.3 to 1.6x, Morrison 1.2 to 1.5x, and Milbrandt-Yau, KF, New Tiedtke, Shin-Hong and GF 1.1 to 1.5x.
- Source decoding uses every core: a 48 h HRRR decode on 24 cores took 140 s instead of 480 s, with prepared arrays unchanged. --preprocess-workers sets the count.
- More forecasts start before all their inputs are ready, with identical output: gpuwm go on a GFS single domain forecasts from a cycle's first posted hours, a GFS tree prepares as its leads post, and a single native hrrr domain and trees from native hrrr, hrrr-prs, other mapped sources and GFS, storm-following ones included, prepare the start and nests first and then one boundary interval at a time, the forecast waiting for any interval not yet ready.
- gpuwm fetch takes each lead as soon as a host has it and exits 75 for a lead past its late time. latest needs only a cycle's first leads (--whole-cycle keeps the old rule), --readiness says whether a run can start, gpuwm go --cycle names the cycle, and gpuwm sources shows each source's posting shape and lateness budget.
- gpuwm run --preprocess-backend pins where a config run's root prepares, so runs compared on a busy card share one preparation.
Fixed
- A forecast too big for the card is refused before anything is allocated, naming the memory needed and free, by single-domain gpuwm run, gpuwm downscale, the prepared and tree runners and the cache, wrfinput and idealized loaders as by gpuwm go. A gpuwm run tree with no [tiles] is checked before downloading, and a late or mid-run nest before it is built, instead of ending in a CUDA out-of-memory error. --no-memory-gate skips the check.
- Memory estimates are corrected: headroom is counted once with a measured 1.13x margin; a gpuwm run preparation on the card is priced at 1.25x its arrays, not 1.20x (a 12 km ERA5 run on an RTX 5070 Ti reserved 3.91 GB against 3.85 GB); New foreca |
| 2.8.0 | 29 de setembre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.8.0 is a feature and fix release with Desktop 1.0.8, and the first to ship the Weather Library, ArWen's graphical interface in your browser, beside the desktop app.
- Windows desktop: extract and open ArWen.exe. Setup installs and checks the matching runtime, tables and geography.
- Linux desktop: follow the included installation guide. The graphical application requires x86-64 Linux with glibc 2.39 or newer.
- Integration kit, desktop source, verification records, and checksums.
New
The Weather Library
- gpuwm gui opens the Weather Library in your browser: a page served from this computer with past storms, New forecast, My forecasts, Files, Machines, Settings and a map for each run. See the GUI guide.
- It listens on port 8766 or the next free one of ten (--port N picks another) and its link carries a token, so keep the link to yourself. --root DIR names your forecasts' folder, --no-open prints the link without opening a browser, and a --bind address other computers can reach needs --allow-remote.
- Forecasts started from the page run detached, so closing the tab, the browser or the server never stops one, and a reload, a restart or a forecast started in a terminal shows the same.
- ArWen Desktop keeps shipping with its features unchanged; new features arrive in the Weather Library.
- 17 cited storm events (11 tropical cyclones, 6 tornadoes), each with a best simulation for 8, 12, 16, 24 and 32 GB cards that passes the engine's fit check. Run the best simulation for this event starts the one for your card, Customise this run opens it in New forecast, and Find an event fills in the box, date and length.
- Until gpuwm fetch-geog --datasets wrf has set up the geography data, Start and Run the best simulation for this event refuse with that command and write nothing.
- New forecast starts from any past date and hour. A start a source's archive or publisher does not hold is refused with the reason before anything runs, and one the publisher skipped is refused, not queued. It sizes the run for your card, prices each choice of vertical levels for that grid, and has a Physics step: one table per part of the model, each scheme with its cost, checked by the engine at the run's grid, place and time.
- A run's map places each picture on the grid it was drawn on, storm-following nests included, over coastlines, borders, states, lakes and US counties served from this computer. A run across the 180th meridian is framed on the degrees it covers.
- Watching a run shows each grid's pictures as they are drawn and which grid sets the pace. While a forecast prepares, a single-domain HRRR one included, its page shows the download, the step, the grid being built, any kernel compile and, for a forecast starting beside its preparation, how many boundary times are ready, whether it was started from the page, gpuwm run-plan or gpuwm go, and gpuwm go prints the reading of the starting data and each grid's start state as steps in its terminal.
- Every button shows its exact gpuwm command, and every command the page runs goes into the run's commands.log. A refused fit, a failed forecast and a stopped one each say why in a plain sentence.
- Downscale on a finished or stopped forecast's map: click a centre or draw a box, choose how fine, how long and for which card, Review the planned grid and its card memory, and Start it as a new forecast.
- A Machines page lists this computer and any SSH host you add with each one's card and state, draws any forecast's pictures on any of them, and starts and stops a cloud machine. A remote run whose updates stopped offers Resume updates. gpuwm machines does the same in a terminal.
- A busy card offers Queue it beside Start now. Queued forecasts wait in order, survive a restart and start by themselves when the card is free, or once a check confirms their start is published. Without CuPy Start is off, and gpuwm gui --owner-file PATH shares the card with other programs.
- Scripts can ask the page the same questions: |
| 2.7.7 | 25 de setembre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.7.7 is a fix release with Desktop 1.0.7.
- Windows desktop: extract and open ArWen.exe. Setup installs and checks the matching runtime, tables and geography.
- Linux desktop: follow the included installation guide. The graphical application requires x86-64 Linux with glibc 2.39 or newer.
- Integration kit, desktop source, verification records, and checksums.
Fixed
- A single-domain forecast from a configuration file, including every single-domain forecast started from the desktop, wrote all its frames and then stopped with RealCaseRunSummary.__init__() got an unexpected keyword argument 'moisture_floor_receipts' before drawing a picture. It finishes and draws its pictures again. 2.7.5 and 2.7.6 were affected; nested forecasts were not.
- A GFS 0.25 degree start no longer refuses every object of a cycle whose soil moisture decodes one packing step (0.00038) above 1.0 on a saturated cell. The value is clamped to 1.0, and a wider excursion still refuses.
- gpuwm domain's check no longer refuses ERA5 typhoon and cyclone boxes over small islands, where ERA5 leaves the sea surface temperature missing. A missing value over open water still refuses.
Desktop 1.0.7
- Runs on ArWen 2.7.7 and requires terminal 2.7.7 and engine 2.7.7. Desktop 1.0.6 refuses a 2.7.7 engine, so desktop users get the fix by installing Desktop 1.0.7. |
| 2.7.6 | 25 de setembre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.7.6 is a feature and fix release with Desktop 1.0.6.
- Windows desktop: extract and open ArWen.exe. Setup installs and checks the matching runtime, tables and geography.
- Linux desktop: follow the included installation guide. The graphical application requires x86-64 Linux with glibc 2.39 or newer.
- Integration kit, desktop source, verification records, and checksums.
New
- Omega is diagnosed one column per thread in WRF's own operation order, so a whole step is 5.1 to 7.0 percent cheaper on an RTX 5070 Ti (1.07, 2.02 and 5.33 ms per step at 250x200x49, 320x256x49 and 480x384x49 under Morrison). Because the summation order changed, results move slightly: one Omega call by at most 6.0e-7 of its maximum, the dynamic fields by 1.7e-4 to 7.2e-4 of theirs after 60 steps, and of the moisture fields only Morrison's cloud droplet number, by 2.5e-6 of its maximum. Proposed and measured by weiserhase in issue #5.
- --source hrrr now defaults to RTE+RRTMGP radiation (thompson-mp8-ysu-mm5-noah-rte-rrtmgp-v1) in place of the legacy RRTMG pair, so every route, door and catalog case shares one radiation default. The legacy suite stays selectable everywhere as --physics-profile thompson-mp8-ysu-mm5-noah-rrtmg-legacy-v1, and a proposal that sets ra_rrtmg_variant composes instead of being refused.
- The new radiation default fits more domain on the same card: a 6 hour 12/3 km HRRR ladder on a 16 GiB card sizes to 268x216 with a 536x432 nest (13.76 GiB peak) where the legacy suite fits 184x146 and 368x288 (13.74 GiB), 2.15 times the root cells. Both radiation engines still cap a longwave column at 128 radiation layers.
- The nowcast door can run the fine nest: --nest-half-width-km (or --nest-nx and --nest-ny) turns it on, the other nest options pass through to the cycle driver, and the receipt reports what was asked for under sizing.nested_free_forecast.
- The nowcast receipt says where the forecast is: outputs.forecast_frames names the frame folder and which legs are the free forecast, and the nowcast pages show the gpuwm render --engine rust line that draws one. Each frame is a one-level composite snapshot; full fields come from the prepared forecast.
- The fine nest's forecast can be drawn: the cycle writes a wrfout per leg beside the child's .npz, and gpuwm render --engine rust draws its composite reflectivity into a d02-1km folder.
- gpuwm render --section-top-km N sets how tall a vertical cut is drawn, 1 to 40 km, on every render route. Every cut had been fitted to 14 km, which stays the default, and render-summary.json records section_tops_km.
- gpuwm render draws twelve column products from a wrfout: the 0, -10 and -20 C isotherm heights, the supercooled liquid water path over the whole column and the 0 to 3 and 3 to 6 km layers, each hydrometeor's column maximum, and simulated_ir_satellite, whose stored field nothing had written.
- Preparation no longer stops when the configured vertical coordinate cannot order the terrain: it derives the largest etac WRF's hybrid coordinate supports for the highest ground any domain or following nest can reach, prints the choice, records it in the receipt and applies it to every domain. Terrain no positive etac can order is still refused.
- tools/build_stretched_eta_ladder.py --dt with --price-band reports a ladder's vertical Courant number and the step that holds it, and the DA cycle's preflight names the updraft at which limiting starts. On one storm, 200 m layers under a step chosen for 680 m layers ran the limiter at 1.41 on 606 cells and halved the peak updraft from 33.9 to 18.5 m/s. Both read the full-level layer a parcel crosses, so on the shipped 49-level ladder the thinnest convective layer reads 630.30 m instead of 614.90 m, and its Courant number at 15 s under 33.9 m/s reads 0.8068 instead of 0.8270.
- gpuwm downscale tells you at the door when a child at or below 250 m spacing is not set up for LES (it inherits its parent's ladder, runs a 1-D boundary-layer scheme with no 3-D clos |
| 2.7.5 | 16 de setembre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.7.5 is a feature release with Desktop 1.0.5.
- Windows desktop: extract and open ArWen.exe. Setup installs and checks the matching runtime, tables and geography.
- Linux desktop: follow the included installation guide. The graphical application requires x86-64 Linux with glibc 2.39 or newer.
- Integration kit, desktop source, verification records, and checksums.
New:
- ICON global forcing. --source icon-global runs DWD's 13 km global ICON like any other source, from gpuwm domain, fetch, prep and go: eighteen pressure levels, surface and near-surface state, the TERRA soil column, sea ice and snow, three-hourly to f180 from the 00 and 12 UTC cycles and to f120 from 06 and 18 UTC. The icosahedral remapper gdt101_remap joins the bridge bundle and reads any source on WMO grid template 101, so a new producer on that grid is a table row rather than new code. Data: Deutscher Wetterdienst, CC BY 4.0.
- Local DA scores itself. Every local DA run grades its own forecast against the MRMS composite with no flag: neighbourhood FSS at 15, 30, 45 and 60 minutes, at 20, 30 and 40 dBZ, beside the radar persistence baseline and the difference, in nowcast-score.json beside each window. A lead whose valid time has not arrived stays pending with its reason instead of a zero, and gpuwm local-da --score PLAN fills it in later.
- gpuwm local-da --continuous WINDOWS cycles a regional analysis window after window: each window restarts from the last analysis, assimilates its observations, runs the short forecast and renders it. --status says where it is, --stop is durable, --launch resumes the saved plan, and boundary forcing renews itself from the same source cycle when a window runs past it.
- Cyclone quick forecasts start at any lead of the cycle (gpuwm cyclone-setup --start-hour), so a storm that exists only late in a run can be forecast, and --nest-budget-gib grows the following nest to the largest size that fits the memory named, so a large card runs a large nest. A budget the preset's own nest does not fit inside is refused, and the refusal says whether the budget or the card is the bound. The desktop's quick forecast form carries both choices and shows the nest the door chose.
- Offline downscaling changes the child's microphysics scheme the way live nesting does, for the initial state and every boundary frame, for every ported scheme. A nest edge that changes scheme runs off a streamed parent, and two way feedback runs across it. Both are on by default.
- gpuwm enprod files its panels in the same product tree as every other product, on both render engines, with a render summary. --domain dNN works on the rust engine, --dpi 300 renders 2400x1800, and --field takes any field the engine lists. The terminal plot catalog says, per preset, which products this install will not draw and why.
- Remote runs retrieve their whole committed output set and resume if interrupted (gpuwm remote sync-outputs), print what the node's renderer serves (remote list-products), name the card they use (--device), and answer a retried launch with the job already created instead of a second forecast on the same card. remote status says which route a job planned and names what could not start or be read.
- Faster on an RTX 5070 Ti: MYNN at its measured optimum column chunk (GPUWM_MYNN_COLUMN_CHUNK overrides it), the shortwave chain keeping its workspace instead of rebuilding it, and the RUC land surface reading a whole call's inputs in one device transfer instead of 568. A 1,500 step nested pair went from 2,877 s to 2,390 s with every history frame byte identical.
- Forecast receipts split GPU memory into this process, other processes and the card, with the seconds a co-tenant was present, so a run that grew is told from a card that filled up underneath it.
Fixed:
- The manylinux wheel's bridge binaries install executable under pip, and the installed cycle bridge keeps site-packages on its path.
- A following nest holds where it is when its search box carries no clo |
| 2.7.4 | 13 de setembre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.7.4 is a corrective release with Desktop 1.0.4.
- Windows desktop: extract and open ArWen.exe. Setup installs and checks the matching runtime, tables and geography.
- Linux desktop: follow the included installation guide. The graphical application requires x86-64 Linux with glibc 2.39 or newer.
- Integration kit, desktop source, verification records, and checksums.
This release includes these changes:
- Cyclone tracking uses shared source preparation and catalog capabilities. Source coverage, available times and required fields still apply.
- The cyclone center picker displays the selected model's pressure and wind map, with visible loading, failure details and retry. Layers offers barb size/spacing, line weight, overlay visibility and Reset controls.
- Downscaled forecasts can be downscaled again, and child settings use the shared physics editor. Failed forecasts show their recorded reason in My forecasts, including saved runs reopened later.
- WRF and metgrid initialization preserve supported analyzed fields and expose the existing vertical-grid and shared-GPU controls consistently.
- WRF inputs decode character time records, retain supported cold Noah-MP state and interpret moist boundary theta correctly. Soil-water recovery uses original metgrid layers and their producing Vtable to convert amounts before interpolation; original files remain unchanged.
- Model maps preserve selected ensemble members and statistical products through acquisition, storage and rendering. Component-based source feeds use normalized ingestion automatically.
- Global AIFS/IFS previews preserve the full longitude span, and corrected normalized stores replace earlier single-column cached crops using verified source data.
- Downloads preserve complete cached objects, retry transient IFS endpoint failures and select complete forcing windows. Windows long paths and transient reader locks work through acquisition and preparation.
- Competing WRF/metgrid launches receive separate output attempts, including existing user-created empty folders. Worker ownership and recovered soil payloads participate in restart/output identity.
- Windows status publication and analysis flushes handle the reproduced filesystem failures. Restart and episode-output recovery preserve input and output identities.
- Preparation and remote memory estimates are advisory. Remote resume honors explicit input and product overrides.
- Physics corrections include the checked WDM6 substep counter and the reviewed Morrison, Thompson and MYNN repairs. The verification records state each check's scope and limitations.
- Native Rust rendering receives shared heavy diagnostic inputs from WRF output, and output discovery reaches committed episode frames.
- Offline child preparation corrects bounded interpolation roundoff from nonnegative parent mass fields and invokes the native NSSL initializer when target number moments are missing.
- The carried-physics artifacts identify exact changes for downstream consumers.
Local data assimilation remains experimental. Its ordinary Desktop entry point is hidden; advanced users can enable it by starting the TUI with --enable-local-da. Backend capabilities remain available. Continuous local cycling is outside this release's qualification.
Offline downscaling supports retaining the parent microphysics scheme for the admitted Kessler, WSM6, Thompson, Milbrandt-Yau, Morrison, NSSL, Thompson aerosol-aware, P3 and microphysics-off paths. Changing schemes offline is limited to an NSSL child from WSM6, Thompson, Morrison or Thompson aerosol-aware parent state. WDM6 offline downscaling and other offline scheme changes are not supported in 2.7.4; broader shared transition routing is deferred to 2.7.5. The online nesting transition catalog is broader and should not be read as an offline capability claim.
Arbitrary WRF warm-restart restoration, live nested vertical refinement, some mixed-scheme/streamed nesting combinations and active black-carbon input in |
| 2.7.3 | 12 de setembre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.7.3
- Windows desktop: extract the ZIP and open ArWen.exe. Graphical setup installs the matching Python, CUDA dependencies, physics tables and geography, then checks the GPU.
- Linux desktop: manual Python setup on x86-64 Linux with glibc 2.39 or newer. Follow the included installation guide.
- Integration kit, desktop source, verification records, and checksums.
Windows local forecasting requires a compatible NVIDIA GPU and driver. First setup downloads several gigabytes; allow at least 25 GB free disk space, plus weather inputs and forecast output. Setup progress and errors remain visible in the application.
The separate engine distributions and native bundles below also serve the verified publishing and manual installation paths. Most users should choose a desktop download above.
New
- Downscale a finished forecast that kept restart checkpoints to a finer child from My forecasts; the child is listed and opened in the run browser like any other forecast, with live progress.
- Draw the finer forecast on the run's map: the box you drag becomes the downscaled child's centre and size, Review prices it on this computer's card and shows the engine's exact outline, and a downscaled run can be downscaled again as many times as wanted.
- Choose in Settings where forecasts are written and where the runtime and geography install, each with Apply and Open folder; first run offers the install location before the download starts.
- downscale-plan.json carries the child's outline, its grid id and a streaming block that says whether the child runs resident or streamed and on what budget.
- Save a forecast configuration as a named setup and start it again at a new time, from the Saved setups tab or with gpuwm companion-setups save and start.
- Milbrandt-Yau (mp_physics = 9) runs under RTE+RRTMGP with its own effective radii, nests under or over other schemes, works with radar assimilation, offline children and checkpoints, and renders its precipitation products.
- WDM6 (mp_physics = 16) and aerosol-aware Thompson (mp_physics = 28) run on the laterally forced routes and across mixed nest edges; the mp=28 aerosol dataset is checked at every door before anything is fetched.
- A forecast requested from a map point is sized to a domain rather than to the card; a layout that would cross a pole shrinks instead of being refused, and the bound is stated once in the plan summary.
- --card on gpuwm domain, gpuwm downscale, gpuwm cyclone-setup and the starter template accepts any card spelling: a tier, a size written into the name, or a model with a recorded size.
- [tiles] max_redundancy sets or lifts the tile planner's halo-work limit.
- gpuwm check exits 6 when the run door's [tiles] walk refuses the plan, with that refusal as its last line.
- Every memory refusal from domain fitting names the term that bound it.
- gpuwm cyclone-setup writes arwen.cyclone-setup.v2 documents with --accept-fit FIT_ID; the desktop reads v1 and v2.
Fixed
- A nested forecast with [tiles] left on auto, the cyclone quick start included, runs resident when the whole tree fits the card instead of being refused by the tile planner's shared floor. Plan review and the run door price one admission from one estimate, so a tree the review admits is not refused again at run start, and a refusal that remains names what refused, the budget it was weighed against and the way out.
- A downscaled forecast draws its pictures. The child's frames are rendered into png/<domain>/<product>/<valid-day>/ through the same render stage and product catalog a forecast takes, the first while the child is still running, and gpuwm downscale --render-products LIST|all|none chooses the set. A child that does not pass publishes no picture.
- A downscaled child that plan review admitted no longer refuses at run start with a tile-planner sentence: the child's streaming decision is taken before preprocessing, on a card measured cold, from the same estimator the review used, and with [tiles] on auto |
| 2.7.2 | 10 de setembre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.7.2
- Windows desktop: extract the ZIP and open ArWen.exe. Graphical setup installs the matching Python, CUDA dependencies, physics tables and geography, then checks the GPU.
- Linux desktop: manual Python setup on x86-64 Linux with glibc 2.39 or newer. Follow the included installation guide.
- Integration kit, desktop source, verification records, and checksums.
Windows local forecasting requires a compatible NVIDIA GPU and driver. First setup downloads several gigabytes; allow at least 25 GB free disk space, plus weather inputs and forecast output. Setup progress and errors remain visible in the application.
The separate engine distributions and native bundles below also serve the verified publishing and manual installation paths. Most users should choose a desktop download above.
Fixed
- My forecasts lists an accepted forecast immediately and follows it through acquisition, preparation, simulation, rendering and its final state.
- Saved runs whose receipts cannot be validated are listed with the reason instead of disappearing.
- A worker's plain working-directory spelling is no longer read as a different directory.
- Windows desktop: the ArWen terminal is reachable from the desktop. Show progress in TUI, Connections in TUI and Credentials & connection settings open the terminal window of the same controller and forecast.
- Ctrl+Q hides that terminal window again without stopping anything.
- Opening ArWen while a forecast still runs in the background reopens the running controller's workspace instead of starting a second controller.
Installation and usage | Changelog |
| 2.7.1 | 10 de setembre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.7.1
- Windows desktop: extract the ZIP and open ArWen.exe. Graphical setup installs the matching Python, CUDA dependencies, physics tables and geography, then checks the GPU.
- Linux desktop: manual Python setup on x86-64 Linux with glibc 2.39 or newer. Follow the included installation guide.
- Integration kit, desktop source, verification records, and checksums.
Windows local forecasting requires a compatible NVIDIA GPU and driver. First setup downloads several gigabytes; allow at least 25 GB free disk space, plus weather inputs and forecast output. Setup progress and errors remain visible in the application.
This maintenance release improves desktop runtime selection, startup reporting, controller timeouts, pending-request handling and compact-cache eviction behavior. Local progress waits for the worker startup handshake. Forecast-area geometry errors retain their specific explanation.
The separate engine distributions and native bundles below also serve the verified publishing and manual installation paths. Most users should choose a desktop download above.
Installation and usage | Changelog |
| 2.7.0 | 10 de setembre del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.7.0
Native Windows and Linux applications, a Rust terminal workspace, and the ArWen
forecast engine. This release includes ERA5 member selection, cyclone-follow
setup, reviewed forecast planning, native weather maps, and UTC playback.
Downloads
- Windows GUI and TUI — 45.3 MB
- Linux GUI and TUI — 42.4 MB
- Integration kit: developer guide, tested client examples, catalogs, and client design notes.
- Download checksums
Extract the complete desktop archive and follow its INSTALL.md. The desktop
downloads use a separate Python 3.11+ environment. For a client controlling a
remote forecast computer, install:
python -m pip install 'gpuwm[render]==2.7.0'
Select that environment with the desktop launcher's --python argument. The
Linux desktop requires x86-64 Linux with glibc 2.39 or newer and working OpenGL
under X11 or Wayland. The engine-only Linux wheel supports glibc 2.28 or newer.
GPU execution also needs a compatible NVIDIA GPU/driver and the corresponding
CUDA extra on the forecast computer; see the
new installation guide.
Compatibility and qualification
Version 2.7 writes checkpoint format 6. Format-5 checkpoints, including earlier
2.7 previews, must be completed with their originating version or restarted
from the original configuration and inputs. Retained limits include some
Noah-MP memory-estimation refusals, cold playback delays, incomplete preview
provider coverage, and the documented completion-transition and dateline issues.
Read the release notes,
qualification,
and review history
for the tested scope and retained limitations. The six exact Python distributions
are attached as well as being prepared for PyPI; publication is complete when
the publish workflow records its successful final receipt. |
| 2.6.5 | 2 de setembre del 2026 | — | 64 bits ZIP Notes de la versióFixed:
- gpuwm fetch-geog, gpuwm doctor and gpuwm mesh now agree on where the
soil datasets live. A complete geography download read as five datasets
short and the mesh door refused the static half of the pair.
- gpuwm mesh reports whether the pair it built will run. The verdict was
reading a receipt key the static engine does not write, so every build
ended "not measured". |
| 2.6.4 | 2 de setembre del 2026 | — | 64 bits ZIP Notes de la versióA third cumulus scheme, and two fixes that were live in 2.6.3: nest
relocation leaked the physics driver, and the prepared cache refused
every tree written before 2.6.1.
New:
- cu_physics = 16 selects New Tiedtke, the WRF v4.6.1 module_cu_ntiedtke
scheme ported to CUDA. All 21 stages and the assembled pipeline reproduce
the byte-frozen Fortran bitwise over an 18-case, 6-spacing oracle corpus
that ships with the wheel. It requires a PBL scheme and cudt_minutes = 0
and refuses by name otherwise; its state rides across a restart; chunking
is proven not to imprint (nine of nine output files byte-identical at two
chunk widths on a real two-domain case). ntiedtke_tiedtke_closure
(default off) runs its kernels with classic Tiedtke's deep closure.
docs/cumulus-new-tiedtke.md records the scheme's grid-thickness deep
first guess and what it does to a tropical-cyclone core.
- Per-level diabatic heating is written for every configuration
(H_DIABATIC, RTHRATLW, RTHRATSW). The three were computed each step
and discarded; writing them changes no forecast value.
Fixed:
- Nest relocation freed neither the dropped physics driver nor its cumulus
adapter: the two held each other in a reference cycle, so every relocation
left the whole driver graph resident on the card (measured per relocation:
Grell-Freitas 35 MiB, New Tiedtke 61 MiB, Kain-Fritsch 1.3 MiB). The
adapter now releases its driver at relocation and the receipt carries
cumulus_workspace_bytes. Output is byte-identical before and after.
- Prepared trees written before run.p3_backend joined the run config were
refused with these identity fields differ: run.p3_backend. The field
joins the tolerant identity table: it is scoped to mp_physics = 50, so a
tree written before it existed could not have selected a backend, and a
tree that carries a value is still compared strictly.
Credit:
- Roch contributed the New Tiedtke port, its oracle corpus and suites, and
both fixes. |
| 2.6.3 | 2 de setembre del 2026 | — | 64 bits ZIP Notes de la versióA fix release about what a fresh install does: aerosol-aware
forecasts run from a wheel install, upgrading gpuwm changes what runs,
and the Rust observation engine reads the grids the ingest path writes.
New:
- gpuwm doctor measures the install root against Windows' 260-character
path ceiling, where a deep root on a box without long paths enabled
makes every kernel source read fail as a missing file. Windows only,
skipped by name elsewhere.
- The MPAS column-batch physics seam transports aerosol-aware Thompson
(mp_physics = 28): WRF's eleven scalars, graupel receipts, the surface
aerosol emission pair on the restart payload, and the scheme's own
aerosol initialization at the seam's first microphysics call on the
caller's state, so a batch that brings no aerosol data is a valid batch.
Fixed:
- 2.6.2 was tagged but never published: a test in the suite rewrote
os.name process-wide, so every path operation raised on Linux and
the release job died. 2.6.3 is that release plus the fix, and no
2.6.2 artifacts reached PyPI.
- gpuwm fetch-tables stages CCN_ACTIVATE.BIN into the table root, so
mp_physics = 28 runs from a wheel install. The command used to report
the root complete and byte-valid while every aerosol-aware forecast
died at its first microphysics step. It carries the classic set's pin.
- gpuwm fetch-tables --wif no longer lets the optional dataset leg
cancel the mandatory one. Only --wif-only skips the coefficient
tables, the exit code is the worst of the legs that ran, and a summary
names each leg staged or refused.
- gpuwm fetch-tables --wif resolves QNWFA_QNIFA_SIGMA_MONTHLY.dat
from the versioned release-assets base, honoring
GPUWM_BRIDGE_ASSET_URL_BASE, where it used to answer 404. A refusal
names the file, the URL and two ways to supply it.
- A bridge staged in ~/.gpuwm/bridges by an earlier release no longer
reaches a door: every ladder checks it against this install's pins and
re-fetches by default. Offline it refuses with the file, its revision
and the replacing command; overrides, in-tree builds and wheel-shipped
binaries are never judged.
- The Rust observation engine rw_obsgrid reads the windowed radar-grid
layout natively. 2.6.1 made that layout what the ingest path writes
while the engine still implemented the whole-domain one, so every
freshly built grid was refused at the schema check. Older files stay
readable.
- gpuwm doctor reports a skewed gpuwm-data companion as a blocking
row carrying the exact pip line, rather than dying in an uncaught
ImportError. The base-dependency line no longer prints ok over the
pinned companion.
- The companion version lock compares PEP 440 public versions, so a
wheel built with a local label accepts the gpuwm-data it was cut
against, with a typeable remedy. A genuine release
mismatch is still refused.
- The GPU preprocessing remedy names the certified CUDA pair instead of
an uncertified extra. It states that such a box has no
certified pair today and that the CPU backend runs there.
- A config's relative file references resolve from the config's own
directory as well as the working directory, so a config that ships
beside its data loads from anywhere. A value that already resolves is
left byte for byte alone, so run fingerprints do not move.
- A host-only run no longer aborts at its first step boundary when CuPy
is installed and every device is masked. The pool trim is an
optimisation, so an unreachable pool now skips it instead of raising.
- Morrison deposition-freezing nucleation is bounded by the vapour excess
over ice saturation. The unbounded term drove qv negative below about
159 K, beyond a regional lid; it also engages between about 190 and
213 K, which a cold tropopause under the default 50 hPa lid reaches.
That divergence from WRF is declared and measured; no parity pin moved.
- The WPS_GEOG mirror carries the Noah-MP soilgrids archive, so a
mesh-door gpuwm fetch-geog no longer falls from the default source to
a 404. The publisher refuses to stage a pin table it canno |
| 2.6.1 | 1 de setembre del 2026 | — | 64 bits ZIP Notes de la versióContinuous assimilation gets a door, agents get a protocol, and the
sub-kilometre unlock is finished.
New:
- gpuwm cycle: continuous radar assimilation as a door. A cycle clock
schedules analyses, a ledger records every cycle's inputs and verdicts,
a supervisor drives the fetch, assimilation and forecast legs, and
anchored child domains follow the feature being cycled.
- An MCP server: arwen-mcp serves the CLI doors as tools over stdio, so
an LLM agent can plan, price, fetch, prep, forecast and render. Every
tool runs the real command line or reads a receipt a door already
wrote; refusals arrive as the CLI's own sentences. Long work runs as
detached jobs that survive a server restart, one GPU job at a time per
card. pip install gpuwm[mcp].
- The MPAS column-batch seam carries P3: microphysics_scheme = "p3"
transports the scheme's eight species through both phases beside the
unchanged WSM6 default, and a restored P3 seam continues
bit-identically.
- Sub-kilometre static builds: below a 1,310 m source-pixel diagonal the
static builder now derives categorical fields by supersampling, keyed
to each mesh's measured minimum edge, where it used to refuse.
Demonstrated end to end with a 937.5 m mesh generated, built, and run.
- Level-2 regional spectral numerics: an optional [spectral_numerics]
table runs scale-selective hyperdiffusion and divergent-mode damping in
off (bitwise inert, the default), shadow (receipts only), and
apply modes, with per-step receipts bound into the run capsule and a
gpuwm spectral-op evidence door. A research instrument, not endorsed
physics.
- Nowcast skill is scored against an operational baseline, with structure
metrics beside the existing point verification.
- Windowed all-radar ingest: assimilation cost follows the sites in the
active window, not the domain, and successive nest windows hand their
interior over during the overlap instead of restarting cold.
- Nineteen measured sizing configurations for ensemble, reanalysis and
AI-model sources the configuration set had not covered.
Fixed:
- gpuwm prep no longer grows its host memory with the length of the
forcing window: the mapped engine decodes one valid time and drops it
before asking for the next, and the identity pass admits objects under
a bounded byte budget. An ICON-EU preparation peaks at 2.32 GiB at
both a 3 h and a 6 h window, frames byte-identical; compressed
field-per-file sources still pay a modest wall premium for the
per-time discipline, and that remainder is named work.
- gpuwm check on a nested tree with [tiles] prices the mixed road
the run door actually takes (child streamed, parent resident) instead
of refusing trees that fit; the report names each domain's road and
--json publishes it.
- A [tiles] configuration the loader refuses reaches the terminal as a
refusal with its remedy intact, on every door, instead of a traceback.
- A restored MPAS column-batch seam no longer refuses its first
radiation-not-due step: the restart payload carries radiation carrier
provenance, and the seam's device round-trip gate runs at every cut.
- P3 no longer computes NaN supersaturation ratios on its first step:
the cold-start saturation mixing ratios are floored, default-on in all
three arms, inert from step 2 onward, with the one step-1 delta
documented.
- mp=50 composes with RTE+RRTMGP radiation: the adapter couples P3's own
two-radius cloud optics, matching the scheme's own inventory, and the
refusal that outlived the gap is retired.
- A wrong-version P3 lookup table is refused as a version mismatch
instead of being reported as byte corruption, and gpuwm doctor
checks the table.
- Velocity dealiasing uses each radial's own Nyquist velocity; the
reader detected per-radial disagreement and then dealiased against one
scalar anyway.
- A radar with no innovations no longer reports the whole network's
residual as its own, and the continuous nowcast daemon no longer
crashes at the first observation stage of every cycle.
- Data assimilation reads P3's own |
| 2.6.0 | 31 d’agost del 2026 | — | 64 bits ZIP Notes de la versióOne ice category, measured against WRF's own Fortran.
New:
- P3 microphysics (mp_physics = 50): one ice category carrying a predicted
rime mass fraction and rime density, on the card by default. p3_backend
selects cuda, fused, or the reference CPU transcription; the two
device arms are byte-identical on every fixture.
- The port is measured against unmodified WRF Fortran (module_mp_p3.F,
v4.5.2, -O0) over twelve fixtures: 4 of 12 bit-identical, five more within
2-7 ULP. The executable oracle ships in the tree. Maturity stays
implemented-unverified; the open items are named in the registry row.
- P3 is reachable through every seam: namelist import, the stock-WRF
initialization inventory, real-data starts with analyzed hydrometeors,
nest births, a wrfinput handoff, and legacy RRTMG's one-category-ice case.
- P3 nest edges run in both directions against every ported partner, a
defined and documented extension where WRF forbids mixed selectors: the
merge conserves mass, the split conserves rime mass and volume, and P3's
own bounds hold by construction.
- The native-HRRR route admits P3 through a registered template, and the
admission list is derived from the ported set instead of maintained by
hand.
- The offline downscale reads an mp=50 parent.
- Milbrandt-Yau (mp=9) starts from its analyzed hydrometeors instead of
condensate-free.
- A cu_physics=3 import names its scheme generation (WRF v4.6.1
Grell-Freitas, not v4.8.0's Grell-Freitas-Li); the two namelists are
byte-indistinguishable and the substitution used to be silent.
- Mesh generation is faster on both arms, --triangulation incremental
serves never-built hi-res construction, and sub-kilometre meshes now
generate instead of being refused.
- CF time units that declare a real UTC offset decode to the instant they
name, in both Rust readers.
- A mutation-testing leg joins the battery: deliberately broken Rust must be
noticed by a test. Its first run over the estate surfaced six real
defects, all fixed.
Fixed:
- The mesh steepest-gradient gate could step over a refinement transition
narrower than its sample lattice and admitted a spec at 7.3x its ceiling;
probes now cover declared variation and partial coverage refuses.
- gpuwm downscale of an mp=10 parent died at its first radiation call on
rounding-scale negative moments.
- A supercooled liquid-only cloud radiated as clear sky under
ra_lw_physics=1; cloud-fraction species flags now resolve per scheme.
- Rendering a Rust-written classic history tape no longer dies at the Times
variable.
- A prepared domain tree written by an earlier version binds again after
upgrade.
- Writers landing on tracked files stop translating newlines.
- rw_mpas_mesh --dry-run prints its JSON record alone again. |
| 2.5.8 | 28 d’agost del 2026 | — | 64 bits ZIP Notes de la versióThe land surface follows the soil profile it was handed.
New:
- The RUC land surface is parametric over WRF's admitted soil-level counts,
6 and 9, host and device, oracle-matched to WRF 4.7.1 ZS/DZS at both.
Six levels carries no bit-exactness claim: there is no six-level Fortran
oracle, and the warn says so.
- A real mp_physics=28 run initializes from WRF's global monthly
water/ice-friendly aerosol climatology, staged with gpuwm fetch-tables --wif. The synthetic profile stays as a named fallback, and the run report
names it.
- bl_mynn_mixscalars is admitted at 0 and 1. At 1, MYNN-EDMF mixes nc, ni,
nwfa and nifa, on CPU and on device.
- rw_mpas_mesh --cull-parent cuts a limited-area mesh out of a global grid
or static, byte-matching the native cull. A region is a JSON row, not a
code path.
- rw_mpas_convert --window mesh frames a render from the mesh's own refined
region, so a fine core anywhere renders at its own resolution, and
--compose draws a coarse run and its fine runs as one frame. Every
rw_wrfbatch PNG publishes its own projection and map rectangle.
- The mesh generator stops rebuilding one polygon on every evaluation:
322.4 s to 166.9 s on a 112,676-cell spec, byte-identical output.
- rw_mpas_lbc ships in the bridge bundle, so a lateral-boundary stream no
longer needs a source checkout.
- The MPAS seam document ships as package data, so a seam check reads it from
site-packages.
Fixed:
- RUC ground heat flux was about five times too large at six soil levels:
the finalize step used the nine-level spacing.
- A 2.5.7 checkpoint resumes under 2.5.8. The new aerosol settings are
scoped to mp_physics=28, so they no longer move the restart identity of
runs that never read them, and a stray value under another scheme is
refused by name.
- A cell with no valid albedo pixel no longer costs a whole static; it takes
the mean of its neighbours.
- The frozen focus-window digest was red on Linux and green on Windows from
identical source. The cause is the C library, at most 4 ULP of latitude, so
the digest is a per-platform row and an unmeasured platform refuses.
- One published page told readers to run gpuwm import. The door is
gpuwm import-namelist. |
| 2.5.7 | 26 d’agost del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.5.7
A default lid above the anvils, and a moving nest that resumes.
Fixed:
- The default model top moves from 100 hPa to 50 hPa (p_top 5000 Pa, the
WRF Registry default), taking the damp_opt=3 sponge base from ~11 km
to ~15.6 km AGL. The 100 hPa lid damped anvil-layer updrafts and
smeared convective structure on a bare default run; measured on a
3 km HRRR A/B vs MRMS, the 50 hPa lid restores updraft tops and core
counts at equal-or-better FSS and no VRAM or wall cost. Emissions are
bounded per source: a source whose certified ladder stops at 100 hPa
(GFS pgrb2, 20CRv3 NetCDF) keeps its covered top.
- A tree with [relocation.containment] can be resumed: the checkpoint
records the parent slides in the move chain, the slid parent is put
back with its own initializer, and a restore is no longer judged by
the per-move steering cap.
- A resumed or branched run of a moving nest keeps the precipitation
totals a move shifted into the domain edge; the restore migration
zeroes only what no relocation carries.
The moving-nest restart fixes were contributed by Roch. |
| 2.5.6 | 25 d’agost del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.5.6
2.5.5 was tagged but never published: the public snapshot commit lost four
vendored Rust build files to the build-directory ignore rule, so the release
cut could not build the bridges and nothing reached PyPI. The tag stays where
it is, because tags here are forward-only. Everything 2.5.5 carried ships
here.
A run that narrates its own life, and radiation that fits the card.
New:
- Nest lifecycle in the per-step stream (schema gpuwm.step-log/v3):
nest_spawned, nest_retired, nest_rearmed, nest_moved, containment_moved
and track_fix, each with the domain, its step count, the valid time and
the position. v1 and v2 streams replay unchanged.
- The delivered render layout gains an episode segment
(out/domain/episode-NNN/product/valid-day), so two lives of one nest
publishing the same valid time no longer overwrite each other.
Non-episodic runs keep their exact paths.
- gpuwm branch: a what-if door that seeds a new run from an existing
checkpoint, with --set overrides. A pinned setting is refused by name
with the changeable list in the sentence.
- The MPAS seam publishes refl10cm and q2 in the default history stream,
computed inside the history step's own microphysics call, and the
rw-mpas converter maps REFL_10CM and Q2. Reflectivity products read the
model's own field instead of a hydrometeor fallback.
Fixed:
- The vortex track CSV is tail-safe while the run writes it: every row
reaches the OS at its newline, and the header is readable before the
first fix.
- The legacy-RRTMG batch chunk width sizes itself to the device it runs
on instead of paying the largest card's workspace everywhere. Results
are byte-identical at any width. Measured 2026-08-24 on an RTX 5070 Ti
(gpuwm-hex x1.40962): peak process memory 6,724.0 to 5,604.0 MiB.
- Grell-Freitas column arrays leave the fully-resident kernel frame on
the MPAS column-batch path, shrinking the port's fixed device
reservation.
- Offline downscaling from a WSM6 parent works; the transport table
refused a scheme its own contract admits. |
| 2.5.4 | 25 d’agost del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.5.4
Two-way nests and nest slots that open and close on the storm.
New:
- Two-way nest feedback. feedback = 1 runs WRF's feedback transaction with
WRF's parent smoothers, pinned bitwise to the Fortran, on both the native
and prepared-tree runners. Off by default; feedback = 0 runs are
byte-identical to 2.5.3.
- Pressure spawn and retire triggers. A dormant nest slot opens when a low
deepens and retires when it fills. configs/cyclone_nest_slots_12km.toml
ships three slots with rearm.
- Storm-following upgrades. The tracker centres on the 850 hPa height
minimum inside a 50 km disc and refines through a finer nest; a
containment nest slides the mover's parent while the mover stays
earth-fixed.
- Statics corridors. --statics-corridor seals child-resolution statics at
preparation time, so a prepared bundle hosts a moving nest with no
runtime geography.
- A track file. [relocation.track] writes the vortex track from the same
fix that steers the nest. output_level picks the reported surfaces
without touching what steers, and the eight-surface cap is gone.
- Tracker defaults: level_hpa 850, radius_km 50. Sea-level tracking is
level_hpa = 0; the threshold bands are disjoint, so a config that means
one and reads as the other refuses at load.
- --cycle latest resolves for every registered source from its own
registry row. A reanalysis has a latest like anything else.
- A prepared-tree run with a live follower checkpoints and resumes,
including across a move, byte-identical.
Fixed:
- A moved nest keeps its surface-radiation carriers; the shipped radiation
defaults no longer refuse at the first move.
- Spawn receipts append per boundary instead of rewriting the ledger.
- run-plan --estimate on a missing config path refuses by name instead of
a traceback.
- A resumed run publishes real outgoing longwave instead of zeros.
- A forecast whose nest moved can be resumed; the move chain replays on
restore.
- Sizing and pace estimates work on an install with no GPU runtime.
Two-way feedback, the storm-following upgrades, the track file and the OLR
restart carry were contributed by Roch. |
| 2.5.3 | 24 d’agost del 2026 | — | 64 bits ZIP Notes de la versióSmall cards and living nests.
New:
- Living nests. Nests spawn on storm triggers, follow their storm, retire,
and rearm during a run, on the GPU, with rendered products per episode.
- Restart. Runs checkpoint and restore with bit-identical continuation,
proven across multi-segment splits.
- Expected pace before you commit. run-plan and check state the expected
seconds per step and wall clock for your domain on your card, from
measured rates, and name the domain size that would run resident.
- Latest-cycle fetches ask NOMADS first and route around lagging mirrors
automatically. Receipts name the host that served every file.
- WPS intermediates from ECMWF open data and AIFS. Ordinal soil layers
decode through the standard tables, so both sources are table work.
- Per-file download progress with real byte counts.
Fixed:
- VRAM sizing now prices the whole run, including the radiation working
set that fires after the first minutes. A card that passes the check
finishes the run.
- Streamed initialization no longer keeps a resident copy of the domain,
which paged 10 GB cards into unusability.
- check accepts every streamed domain that go can run. The alloc gate is
tile-aware.
- A stale or spent VRAM budget refuses up front with every term named,
instead of failing after the download and preparation.
- First-step status reports what the engine is actually doing.
- Fetch receipts claim every file they write, and an interrupted forced
refetch can no longer leave a stale receipt beside rejected data.
- A run that failed past the fetch comes back without re-downloading. The
fetch verifies and skips what is already on disk and the receipt says
which files it skipped, preparation is reused when nothing feeding it
moved, and superseded forecast output is moved aside rather than deleted.
- The standalone RW-WPS wheel ships the nest lifecycle module.
- The ERA5 model-level route is documented alongside every other source.
- A projected or Gaussian grid refuses by name instead of minting a
mis-georeferenced lat-lon intermediate. Uniform lat-lon output is
unchanged. |
| 2.5.2 | 21 d’agost del 2026 | — | 64 bits ZIP Notes de la versióNew
- Radiation is about 1.9x faster at the default column chunk, and the
allocation estimate drops roughly 1.5 GB. Output is byte-identical on
both cards it was measured on. Contributed by Roch.
- The chunk ladder flattened with the radiation workspace. gpuwm check
against a 19.5 GiB budget now names one halving of the configured chunk
where the same case used to have to walk back two.
- gpuwm fetch --source era5 writes era5-cds-retrieve.py beside the
request document and prints the one command that runs it. The script
resolves every path from its own location, so it produces the same
files from any working directory and under any interpreter, including
a WSL python3 reached from Windows.
- gpuwm fetch --source era5 --validate reports the delivered grid shape,
spacing and corners, and fails a file whose grid falls short of the
requested --area, naming the edge and the shortfall.
- gpuwm doctor checks that the directory holding the gpuwm console
script is on PATH and prints the exact line that fixes it.
Fixed
- gpuwm downscale runs a full-physics child without
--child-surface-from. The child's land identity and soil warm start
are taken from the parent's own history frame. Previously the flag was
mandatory and pointed at a file no command could produce for a
config-driven parent, so a full-physics child of a [case_data] run
was unreachable. The flag stays as the higher-fidelity route.
- gpuwm downscale --point writes the derived child config to
<out>/child.toml, inside the run it describes.
- Static fields no longer depend on which source window a build read. On
a geography source that wraps in x, two builds covering the same ground
sampled the source at coordinates differing in their last bits, so a
moving nest whose statics corridor crossed the wrap seam refused every
relocation and wrote no frames after the first move. Measured after the
fix: 3,519,936 cells compared per move, zero mismatches, two moves
completed, 26 frames. |
| 2.5.1 | 21 d’agost del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.5.1
New
- 22 example configurations across 11 sources, two each: ecmwf-open-data,
era5, era5-l137, gdas, gem-gdps, gfs, hrrr, hrrr-prs, icon-eu, rap, rrfs.
Sized for a 10 GiB budget. The forecasts ran on a 16 GiB card, so none is
proven on a 10 GiB card.
- Two of those are workarounds, not fixes. gdas needs
gpuwm fetch --mode full-file --cadence 1. ecmwf-open-data has no
one-command chain and runs as separate fetch, prep and sim stages.
- gpuwm sources lists every registered source and what this release does
with each. gpuwm sources ID prints one row.
- Run-plan intents come from the source registry, not a hardcoded list.
Eleven of the eighteen runnable rows carry one.
- gpuwm run-plan --physics-profiles answers which physics suites run on a
given source.
- [output] chooses which variables wrfout carries: full (default),
minimal, severe, or your own lists, per domain. Measured: 35% off a
3 km parent's frames, 81% off a 1 km child's.
- gpuwm render --streamlines and --barbs choose how wind is drawn.
- gpuwm speedrun runs a named course and emits a signed record.
- era5-l137 is a registered source: ERA5 on its native 137 model levels.
- Registry rows carry a display name and their credential prerequisites.
Existence only; a key's value is never read.
Fixed
- VRAM sizing charged the CUDA context and kernel backing store twice. A
10 GiB card was refused the smallest domain the hrrr ladder can express,
and a 550x550x49 full-physics run was refused on a 15.24 GiB card. Both
are admitted now.
- The card that is present is the card that is priced. The wizard measured
one card and priced its kernel store against another.
- On Windows, free VRAM was read from an instrument that counts memory the
driver would evict. Budgets use the machine-wide figure.
- The Linux memory envelope charged nothing for pool retention and sat below
the measured peak of every instrumented forecast.
- A GRIB2 source with no hybrid vertical coordinate reads again. The
Section-4 pv octets are required of hybrid-level records only.
- The standalone RW-WPS preprocessing wheel builds again. Reading a config
no longer imports the forecast output writer.
- A nest that starts later than the experiment runs to completion.
- A run that reaches its stop tick reports success instead of exhausting its
restarts. A large run finishing normally is no longer killed by the
watchdog.
- A restore the worker refused is no longer relaunched.
- gpuwm check sizes the selected boundary layer scheme against its kernel
column bound. A 130 level configuration used to pass and die on the first
physics call.
- The health gate's potential temperature ceiling follows the configured
model lid.
- Grell-Freitas cumulus receives boundary layer forcing from every PBL
scheme, not only YSU. Measured with YSU at 12 km, domain total convective
rainfall moves 12.8%. No shipped profile selects Grell-Freitas, so a
default run is unchanged.
- A 2-D variable added to your own file is drawable by name.
- gpuwm doctor checks staged Rust artifacts against this release's pins.
python -m gpuwm.doctor prints its report instead of exiting silently.
- A cargo build that cannot finish refuses by name. gpuwm check --json
always writes JSON, so a build error no longer reaches a calling program
as a parse error.
- The no-fetch-route refusal pointed at gpuwm sources, which did not exist.
- The mapped preparation route prints its forecast command with all three
digests filled in.
- A delivered render tree contains only products.
- A prepared tree built on one platform validates on the other.
- No shipped file carries a developer's absolute paths.
- The generated CLI reference covers every installed console script.
Upgrading
pip install --upgrade gpuwm pulls the matching gpuwm-data. Tile caches
prepared by 2.4.x need one re-preparation; the refusal names the field. |
| 2.5.0 | 19 d’agost del 2026 | — | 64 bits ZIP Notes de la versióArWen 2.5.0
The arbitrary-inputs release. Initialize from 15 weather models through one table-driven engine, mix fields between them, and run the whole data path on Rust. Every route below was proven with a real GPU simulation before shipping.
Install: pip install gpuwm (pulls the new gpuwm-data companion automatically). Python 3.11 to 3.14.
New
- 15 models as initialization sources: GFS, GDAS, HRRR (native and pressure-level), ERA5, 20CRv3 (member archive and public ensemble mean), ICON-EU, AIFS, GEM, ECMWF IFS open data, RAP, GEFS, AIGFS, AIGEFS, RRFS. Adding a model is table work, not code.
- Arbitrary sources: the mapped route runs any GRIB2/NetCDF dataset from a user-authored mapping JSON. No adapter code, no rebuild.
- gpuwm fetch --source downloads bytes for every routed model, parallel by default. Sources without public bytes refuse by name and point at --source-root.
- Cross-model composition on shared grids: borrow fields between sources, declared explicitly. The AI models run with GDAS soil this way out of the box.
- Ensemble members are first-class: GEFS and AIGEFS member selection, plus mean, spread, and paintball panels through the Rust ensemble renderer.
- Rust data path end to end: GRIB decode, the mapping engine, terrain and static fields, NetCDF writing, and rendering. The engine reads grids the 2.4 line refused outright, Lambert-projected models like RAP and RRFS included.
- Spectral verification: gpuwm spectral scores any run against a reference by wavelength band, with coherence, phase error, preregistered gates, and self-hashed receipts.
- Run-stamped outputs: every run claims its own run-<launch>Z_i<init>Z/ folder, downloads stay cached across runs, latest-run.txt names the newest.
- The domain wizard accepts every registered source and refuses out-of-coverage domains at plan time with the source's actual window.
- Downscaling has a verified command-by-command walkthrough (docs/public/DOWNSCALE.md), and tile streaming announces itself in the go banner and files renders per valid day.
- Time-to-first-plot instrumentation on by default, with a published scaling law for prep cost.
- gpuwm doctor covers all 31 registered routes, one line each, and prints what changed since the version it last saw. --source accepts any registry id.
- Downloads count their bytes as they arrive, gpuwm setup included. No more silent minutes.
- New pages: a glossary mapping ArWen vocabulary to its WPS analogues, and a walkthrough of everything a box without a GPU can run.
- A scientific manual for researchers ships with the release, receipts cited throughout, plus a short paper-style summary.
Fixed
- Moving nests reset physics accumulators at every relocation in 2.4.1, wiping convective rain each move. State now moves with the nest, on by default.
- Sub-kilometer nests were floored at 1-minute radiation calls, costing most of the wall clock on fine nests. Nests now inherit the root cadence, and an explicit radt still wins.
- Quickstart output could not be downscaled and nothing said so. It can now, and dry-run warns about anything runtime would refuse.
- Config errors were reported as VRAM refusals. They now name the config problem.
- Watching progress.json could kill a run on Windows. Runs survive readers.
- 2.4.x archives downscale again. 2.4.1 tile caches need one re-preparation, and the refusal names the field.
- GPU installs on driver-only boxes looped forever on a wrong remedy. pip install 'gpuwm[gpu-cu13]' now works first try, toolkit included.
- The HRRR route runs gpuwm prep then gpuwm sim with no extra flags, and cache restore no longer crashes on solved soil.
- Refusals arrive as sentences with remedies, not tracebacks: source coverage, missing data package, short forcing series. When a refusal prints a command, typing it verbatim runs.
- The memory gate priced Windows cards with a guess and refused runs that fit. The envelope is now measured on real hardware, the wizard and the checker use one formula, and profile a |
| 1.3.1 | 31 de juliol del 2026 | — | 64 bits ZIP Notes de la versióFour commands take a fresh machine to a rendered forecast: pip install gpuwm[gpu,render], gpuwm setup, gpuwm domain, gpuwm go.
Physics combination admission follows WRF v4.6.1's own compatibility
verdicts, the run-time parameter ledger is closed out with every
unimplemented parameter refusing by name, polar stereographic and
Mercator projections run end to end, and mixed microphysics across a
nest edge runs under a named transition policy.
The four-command chain
- Both forecast runners live in the installed package. python -m gpuwm.prepared_single_domain_forecast and python -m gpuwm.prepared_domain_tree_forecast work from any directory, with
console scripts gpuwm-prepared-forecast and
gpuwm-prepared-tree-forecast; the tools/ scripts a checkout
carries delegate to the same module objects, so no second copy
exists to drift. Every command the CLI prints is one a pip install
can execute. In 1.3.0 the chain's last two stages were spelled as
relative script paths only a git checkout has.
- gpuwm go <config> runs the whole single-domain GFS chain as six
stages in one invocation -- authority, fetch, manifest, prepare,
forecast, render -- and prints a heartbeat every 20 seconds with
the stage's elapsed time and, where the stage publishes one, its
model seconds. Rendering is the sixth stage rather than a command
to paste; a missing render extra is named instead of skipped.
- A refused stage speaks in sentences. A reused output directory is
refused up front with the directory named, why it is create-only,
and both ways out; in 1.3.0 this surfaced as a raw
FileExistsError traceback from a flag the caller never typed.
- gpuwm go drives one domain from GFS. A multi-domain tree is
refused up front and the refusal names
python -m gpuwm.prepared_domain_tree_forecast.
The wizard composes with go
- gpuwm domain at a bare prompt asks its questions and emits a
config gpuwm go accepts: one 12 km domain on the model-validated
morrison-mp10-ysu-mm5-noah-kf-rte-rrtmgp-v1 profile, with both
supplied defaults stated in the session. This changes the
bare-session emission -- in 1.3.0 it was a four-domain ladder on
the product default suite, a shape the single-domain chain refuses
twice over. Pass --ladder for nests and --physics-profile for
another suite; a session with any explicit flag keeps the flag
path's own defaults.
- The closing next-steps block branches on source: a GFS emission
ends at gpuwm go, an ERA5 emission keeps gpuwm run, and HRRR
and multi-domain trees get their route named. In 1.3.0 the block
ended at gpuwm run for every source, and gpuwm run refuses GFS
configs by design.
- A domain sized to fill the card prints an advisory when its fetch
box exceeds 90 degrees of longitude, naming --vram-gib for a
smaller first run. Sizing itself is unchanged, and continental
domains under the threshold pass without comment.
WRF v4.6.1 combination admission
The combination authority is a 2,400-cell transcription of WRF
v4.6.1's own PBL, surface-layer, and land-surface admission: 1,080
cells legal, 360 legal with WRF's silent reconfiguration named, 600
fatal, 360 not expressible in WRF. Three pairings 1.3.0 refused are
admitted because WRF admits them -- PBL off with the MYNN surface
layer, and MYNN PBL with either MM5 surface layer, each across the
four routed land models -- and refusals cite the matrix cell that
produced them. An edge policy is not a loophole: a PBL/surface-layer
pairing the matrix calls fatal refuses whatever the nest declares.
Run-time parameters
The declared WRF namelist parameter set stands at 158: 104
implemented, and each of the 54 others refuses by name with the
blocking dependency cited. Five parameters whose runtime branches
already existed are wired end to end: isfflx, o3input,
use_mp_re, seaice_albedo_default (replacing a live-path
literal), and rdmaxalb.
Projections
Polar stereographic and Mercator domains run end to end -- wizard
emission, WPS namelist, static-field preparation, map factors, and
earth-relative wind rotat |