Skip to content

ArWen 2.6.0

Choose a tag to compare

@FahrenheitResearch FahrenheitResearch released this 31 Aug 08:40
· 72 commits to main since this release

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.