ArWen

Fahrenheit Research·FahrenheitResearch.ArWen

ArWen: GPU-native WRF-ARW-class regional weather model, verified against WRF v4.6.1

ArWen is an independent, GPU-native implementation of a WRF-ARW-class regional atmospheric model. It is not affiliated with or endorsed by NCAR or UCAR. The name is a wordmark for "the ARW solver, GPU-native"; the Python package is currently named gpuwm. Safety. ArWen is a research and educational tool. It is never a substitute for official forecasts and warnings from your national meteorological service. Do not use it to make safety decisions. Regional numerical weather prediction at convective scale has mostly required institutional clusters, which means most of the world runs on global-model guidance at 10-25 km. ArWen's aim is to put a verified, kilometer-scale limited-area model on a single consumer GPU: pick a point, size a nest ladder to your card, pull public analysis data, and run a 1 km (or 500 m) simulation of your own area on hardware you own -- especially in places where no national convection-permitting model exists.

winget install --id FahrenheitResearch.ArWen --exact --source winget

Latest 2.7.5·September 16, 2026

Release Notes

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 closed circulation, and records what it declined. A move that would leave too little of the nest overlapping is made as large as the overlap floor allows instead of ending the run, and the receipt names the bound that cut it. The cyclone quick start derives its movement maximums from the nest it proposes, so they are always a move that nest can make.
  • A following nest no longer refuses its first move when its parent spans the antimeridian: source pixels are binned at their canonical column, and the stencil averages reduce in a fixed order so two builds of the same ground agree to the bit. A statics corridor sealed before this fix is refused at load and names the re-preparation.
  • The terminal's CDS key panel saves a key again, an ERA5 fetch that cannot reach the CDS client says which file it looked for and what cdsapi reported, and the keyless ARCO provider works again.
  • A forecast stopped mid stage exits 130, so the desktop reads it as stopped and the run can still be downscaled after the app is reopened. Runs stopped under 2.7.4 stay failed. A shared GPU is priced against this run's reservation instead of refused for being shared.
  • A conformant IEEE packed GRIB2 message decodes instead of being refused, a sharp dry slot no longer refuses a real data initialization (vapour taken below zero is floored at WRF's own qv_min_value and receipted, for the parent and every spawned child), radial velocity is dealiased by default at every radar door, and --no-dealias opts out on the nowcast doors and the radar-grid tools, and a spawned child carries its own aerosol receipt.
  • Frames at forecast hour 1000 and beyond are filed correctly, and a research recipe may name any product the renderer's catalog lists. enprod --engine auto refuses rather than drawing weather fields with matplotlib when the rust engine is missing. --series renders a whole timeline into one renderer store, so windowed products can be differenced across frames. simulated_ir_satellite left the general and hurricane presets and carries its reason: no forward radiative transfer operator exists on the history import route.
  • A remote forecast started from a configuration already on the node serves its frames, stores, maps and gallery. A node whose card memory could not be measured is priced against its most conservative capacity and launched, and inputs too large for the staging manifest travel by verified transfer. 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: gpuwm cycle shows no picture while it runs; the standalone rw-wps bundle does not carry gdt101_remap, and gpuwm doctor names the gap; the desktop's weather map cannot draw ICON global fields; the local DA nowcast score masks a 9 km rim and scores one member; an ARCO window sized for a 16 GiB card refuses in initialization, and the 8 GiB sizing runs end to end. 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

Installer type: zip

x64—71AB87F3328C65C165537B7BDDEE6431639169E8B5F8E1641FA06216A1674CB6

Details

Homepage
https://github.com/FahrenheitResearch/arwen
License
Apache-2.0
Publisher
Fahrenheit Research
Support
https://github.com/FahrenheitResearch/arwen/issues
Copyright
Copyright © Fahrenheit Research
Moniker
arwen

Older versions (19)

2.7.4
x64—E8F0CEBAC3D02041DE31352563FCAF14D17574BFCD012057C08BD3315CEDA570
2.7.3
x64—BCFD9F3C584A4A8F582F78CE654B5FB9B420DBD1A971778CCE1DB2274DA7DAD4
2.7.2
x64—F7DCB9419FB3ADF32C82FA3D4029D8D240D1B909E33056F70BD4683BD0B79160
2.7.1
x64—F26642619BE93C25DCDF0CEE458DD88F2DE292D2F6DD06205D03D8DFDE3424B5
2.7.0
x64—800CC9049AC84A75E77F71A3119E84083FCABD16D931321695408BA981ECBB73
2.6.5
x64—71FC3FA60F747B1124CFCB6593B1FB1C8951498E0C88729DB64D484258BE6C98
2.6.4
x64—5574D78788A5FE75CE072238848B83CAAE499BAED1F11C2F2E1E76835D230517
2.6.3
x64—E290D6D192178AB49BE2EB64900760ABFE15AFF5100146E24CBFBD40E57AEBC5
2.6.1
x64—F98CE8D3F04FEAB3E657AF202EFA4535A599CF5B389FF66BAD50794F39DFE607
2.6.0
x64—435EEAF4A73443F50E1A31EB2E8F735AB8F8461BE20299C399AD42336AF897E9
2.5.8
x64—55D421A06EFF01C92E5B9E8568B5E6EA30C53EDB4AC78C4AB7175D9B0F034345
2.5.7
x64—D05297BBE62FF39F8C2674D19917E06B676A0E69B4A2D742AC7E087F4064F14B
2.5.6
x64—96670F8B4DA307D24A493C998F5789C4DE6F3ACFF26B1A5E642233239B3FBED9
2.5.4
x64—103E0BB0187C66A5817BF76497FA160B35E56BFF89E31B35D7006B2A4333037E
2.5.3
x64—C52C3301644A24B38FD8E98BDBFEB3B6890CBA161E3F6725FA6DE1B50868295C
2.5.2
x64—5C94407F9B57605F4E7DC5874B0DFECC98E7FA0A12C313588132D75404D93B01
2.5.1
x64—632298CC2321B39FE39FE6F5768D9BA394AAC76219A0428C4AF704FB2E1ECBED
2.5.0
x64—1836DAB0EE192FED4CDD563D83AF0EBA26B0CAC694E8BA1F6E5B9BA6538F38B4
1.3.1
x64—85919DD669A28C1D46480EA3A7318260106C29A095DB47EB981AB5819C6A6AED