← all records

Plug in turbulence - TMX

pitch-370004 · in warm_bubble

  • No No-gos section. The pitch template asks for one — it is what keeps the appetite honest.

Progress 0/7 wk

Problem

The original approach question: interface with Kokkos/TMX vs port TMX to GT4py - is resolved. @jcanton has ported TMX to GT4py in PR#1359, but it ships as a standalone granule with its own state objects and savepoint tests, it is not wired into anything that runs. Our PhysicsDriver already runs muphys as a Component; Tmx needs the same treatment so we can aim for running warm bubble experiment in icon4py as one of our milestones.

Appetite

Solution

  • The Physics driver PR#1301 needs to be merged (working the 3rd round of review).

  • The Tmx port PR#1359 needs to be verified and reviewed.

  • Wrap the TMX granule as a second Component behind the existing driver protocol, using the same adaper shape muphys uses. New files only inside the tmx package, so re-merges of the still moving PR#1359 stay clean, plus a small opt-in change to the driver

  • Two static states (metrics + interpolation) for TMX are assembled by pure fetch from the field factories, exactly like DiffusionMetricState/Diffusion. The interpolation coefficients already exist; the seven metrics fields which are not used in other component should be added to the common MetricsFactory as proviers (formulas from mo_vertical_grid.f90), so they are veirified in the common metrics datatest and reusable by future physics.

  • The data flow will mirror Muphys:

    • a TmxState.gather gathers T/p/u/v/air_mass/cv_air from the prognostic.
    • a TmxComponent.__call__ wraps the the tmx.run(), which returns tendencies
    • a TmxState.scatter updates the tedencies to prognostics states
  • Testing:

    • The Tmx granule itself is already verified independently inside the PR #1359. We will run a full APE_aes with muphys + TMX completes, verify with exclaim_ape_aesPhys_v06

Rabbit holes

  • TMX interfaces with jsbach for exchanges with land. We are not touching that this cycle. We are implementing a simplified land instead.

No-gos

Progress

Reported at the review of 11.08.2026, in the deck's own words.

Physics driver with Muphys and TMX:

  • https://github.com/C2SM/icon4py/pull/1301 Merged - verified with v07 data
  • https://github.com/C2SM/icon4py/pull/1360 To be finished - verifying with v08

tmx port (claude):

  • ~15k lines in 48 hours
  • tests passing with good data (v08)

The bet was placed at the cycle-37 table and was not re-bet at cycle 38, but the work ran on into it and is still open. @havogt joined during cycle 38 and began carving #1359 into pieces that can be reviewed on their own; @OngChia is reviewing them as they arrive:

  • https://github.com/C2SM/icon4py/pull/1457 Merged 14.09.2026 - the package, its configuration and the static states
  • https://github.com/C2SM/icon4py/pull/1458 Open - the prescribed surface fluxes
  • https://github.com/C2SM/icon4py/pull/1475 Open - the diagnostics component

#1359 itself stays open as the trunk the pieces are cut from, and #1360 waits on it.