Skip to content

Interpolator with Mass Conservation Logic #326

@roxas6path

Description

@roxas6path

Add mass-conservation to Time Interpolator Runner and align I/O with stand-alone inference

1) Mass conservation in Time Interpolator Runner

Adds the necessary optional mass-conservation logic to the Time Interpolator Runner.


2) Approach to suit stand-alone inference - run independently from forecaster

Aiming to implement this in a way that works cleanly with prepML which is slightly different to the initial design that was implemented

  • a) Other models typically request data once for a single set of initial conditions.

  • b) The Time Interpolator requires multiple sets of initial conditions—the temporal boundaries for each interpolation window (e.g., t=0 and t=24 for the first 24-hour window, then t=24 and t=48 for the second).

  • c) Proposed method:

    • Have PrepML request all required input data up front and write it to local storage.
    • Have anemoi-inference make data-access calls only to this local dataset, rather than issuing repeated requests to MARS or a single batched MARS call.

Acceptance criteria

  • Interpolated outputs satisfy mass-conservation checks across each window.
  • Accumulated-from-start fields are handled correctly when present.
  • PrepML can prefetch and persists all required inputs for each interpolation window.
  • Backward-compatible configuration flags (opt-in) and clear documentation.
  • Add necessary prepml config updates so that variable naming is handled e.g. in training the input variables for accum are named tp_accum, cp_accum for example, whereas in inference they would be just 'tp' and 'cp'

Related PR(s)/Branches:
https://github.com/ecmwf/anemoi-inference/tree/feature/326-intrp-mass-conservation

Describe the solution you'd like

No response

Describe alternatives you've considered

No response

Additional context

No response

Organisation

No response

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

Status

On Pause

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions