Future directions for JEDI model interfaces
Special Topic JEDI Weekly Meeting
Francois Hebert
Apr 2 2026
Define “shared components” as
e.g., SABER, VADER, hybrid-TLM, interpolations
(Just for this presentation)
Recurring requests for simplicity in different areas:
forecast model
model interface
OOPS
forecast model
model interface
OOPS
model specific code
but many similar algorithms across model interfaces
large API or “interaction surface”
shared interface
smaller API or “interaction surface”
forecast model
model interface
OOPS
less specific code
shared implementation of similar algorithms
shared interface
forecast model
model interface
OOPS
the “model interface”, from OOPS’s point of view
shared interface
forecast model
model interface
OOPS
the “model interface”, from developer point of view
Request: factor similar algorithms to reduce model-specific code.
Recurring requests for simplicity in different areas:
model interface
OOPS
owns data
transforms data
model interface
OOPS
shared components
transforms data
access to data?
owns data
model interface
OOPS
shared components
transforms data
atlas::FieldSet
owns copy of data
synchronizes data representations
transforms copy of data
owns data
model interface
OOPS
shared components
transforms data
atlas::FieldSet
owns copy of data
synchronizes data representations
owns data
transforms copy of data
Problematic software architecture
Request: simplify data ownership and interfaces
New approach, to simplify both aspects:
Synergy: if shared layer stores model data in Atlas structures, the API for shared components is easily implemented.
shared interface
model interface
OOPS
shared components
owns data
the “model interface” from OOPS’s point of view
transforms on State, Increment data
formalized API for transforms on atlas::Fieldset data
New library “mist” in support of JEDI model interfaces
See https://github.com/JCSDA-internal/oops/pull/3247
In mist::api, the current API for Atlas structures is formalized
Virtual base classes encode API required by shared components,
Equivalent to current API, but formalizing it enables future cleaning.
API will be required to continue using shared components
In mist::utils … utilities to simplify model-interface implementation
Of note,
Helpful building-blocks for an Atlas-based model interface implementation.
In mist::base, a set of base classes implementing parts of the OOPS model interface
Useful start point for new model interfaces: implement I/O to unlock pseudo-model DA.
Should I use the mist library in my model interface?
Opt-out: accept loss of shared components
Opt-in:
How do I use the mist library in my model interface?
Options:
Example interface implementations
NetCDF pseudo-model using mist utilities
In this approach,
File-based DA experiments in O(900) lines of code
See https://github.com/JCSDA-internal/oops/pull/3248
NetCDF pseudo-model using mist base classes
In this approach,
File-based DA experiments in O(200) lines of code
See https://github.com/JCSDA-internal/oops/pull/3249
MPAS using base classes
(Still being tested, not yet ready for sharing broadly)
New MPAS interface: 120km 3DVar increment from sondes + BUMP
Aside on surprise MPAS interface…
Today, JEDI model interfaces can essentially be generated on demand.
Not trying to undermine anyone here!
One human, one week, one agentic assistant (~$20)
Examples show
Caveat
Introduced mist library to simplify JEDI interfaces