Skip to content

v0.2.0 — time-varying flux & Float64

Choose a tag to compare

@cfranken cfranken released this 16 Jun 23:45
· 257 commits to main since this release

The time-varying-flux / Float64 release.

Highlights

  • Float64 cubed-sphere transport — F64 runs now work end-to-end on the cubed sphere. The reader keeps the on-disk Float32 mmap and converts per-window instead of materializing a whole-binary F64 copy (which OOM-killed long runs); ATMSNAP snapshots stay Float32 on disk regardless of compute precision.
  • Time-varying surface flux — dispatchable temporal schemes (stepwise / linear / conservative_mean); lmdz/CAMS defaults to the GC-faithful stepwise hold, driving the diurnal cycle instead of a monthly mean.
  • UTLS "fingering" cure — MERRA-2 wind-derived C180 source plus the GEOS geos_cm_closure = "omega_consistent" cm closure (tracer-validated to the MERRA-2 level).

Physics & preprocessing

  • precomputed_kz diffusion (uses the binary :kz TM5 bldiff payload).
  • cmfmc_matrix convection + collaborative-LU knobs (use_collab_lu, lmax_conv, n_merge); convection clipping mass blow-up fixed and n_merge = 2 enabled.
  • Full-window flux storage contract; adaptive per-window substep schedule baked into each binary to meet CFL.
  • F32 mass conservation: Kahan-compensated surface flux + diffusion anomaly subtraction.
  • Multi-binary clock-origin fix (removes the day-1 time-varying-flux replay / +1 Pg/month co2_natural surplus).

Performance

  • CPU-only sweep-sync gating (GPU launch-bound), ping-pong cubed-sphere sweeps, double-buffered async daily snapshot write, rolling NVMe input staging + O_DIRECT copy, and per-day mmap page-cache release (madvise). Full-year 4-tracer C180 in ~2.5 h on a single L40S.

Infrastructure & docs

  • Pinned ConservativeRegridding / GeometryOps compat; CI restored to green (Julia 1 + 1.10 + docs build).
  • Config schema and quickstart updated for the new options.

Notes

  • Float64 needs an A100-class GPU or the CPU backend; Float32 runs on the NVIDIA L40S.