JEDI 2026.1
A major coordinated release spanning six core repositories — oops, ufo, crtm, ioda, saber, and vader — plus model interfaces for nine Earth system components, and a new space weather interface. Twenty headline features contributed by partner agencies worldwide.
Headline Features
For years, variables representing the same physical quantity carried different names in different parts of JEDI, making it error-prone to connect model components from different agencies. A coordinated sprint across all partner institutions migrated every model variable to CCPP Standard Names — a community-agreed vocabulary used across the US weather modeling community.
Humidity, wind, and moisture variables now have consistent, unambiguous identifiers throughout the framework. This also included a unit change for water vapor mixing ratio that had silently differed between components. Observation-space and model-space variable lists are now formally separated, so each can evolve independently.
JEDI previously maintained a custom type-safe configuration framework that auto-generated schemas and enforced defaults. While well-intentioned, it added significant compilation overhead, made the codebase harder to navigate, and — critically — allowed silent default values to hide real bugs. One such default had masked a covariance inflation bug for years.
The framework was removed over multiple releases, simplifying JEDI's configuration to a direct YAML-to-code mapping that is faster to compile, easier to understand, and more transparent about what values are actually being used.
IODA's previous storage model required loading an entire observation dataset into memory before any processing could begin. The replacement — the ObsDataFrame — uses a column-oriented layout that allows data to be read and distributed in parallel across compute nodes.
The result is substantially lower memory usage, faster data ingestion, and a cleaner path to handling the observation volumes expected from next-generation satellite missions. Reading, distributing, and writing observations are all now parallelized end-to-end. A standalone tool for offline observation filtering was also added.
SABER's covariance infrastructure was restructured so that individual components — correlation models, ensemble terms, spectral operators — can be assembled like building blocks rather than hard-coded into a single monolithic structure. Hybrid covariances (blending static and ensemble terms) are now handled by a dedicated, self-contained component.
New spectral covariance blocks were added specifically for regional atmospheric models. These extend the spectral B-matrix approach used operationally at Météo-France (for ARPÈGE, AROME, and ALADIN) to any regional domain, including an operator that bridges horizontal spectral transforms with a terrain-following vertical coordinate. Unequal computing resource allocation across ensemble covariance components is now supported.
A general-purpose diffusion operator was added that can serve as a spatial correlation model, a localization tool, or a smoother, depending on context. Horizontal correlation structure is calibrated offline from randomized samples; vertical correlation is computed quickly at run time.
A key limitation of earlier diffusion-based approaches was that vertical smoothing with large length scales required hundreds of solver iterations. This release adds an implicit formulation that always converges in just two to four iterations regardless of the chosen scale — removing a practical barrier to using diffusion-based covariances in operational configurations.
The Hybrid Tangent Linear Model (HTLM) is a technique developed at the Met Office that improves the accuracy of a simplified linear forecast model by learning correction coefficients from an ensemble of nonlinear runs. This release brings substantial performance and accuracy improvements.
Memory use was cut by more than half for typical configurations. The underlying solver was realigned with the published algorithm for better numerical consistency. A new adaptive regularization scheme automatically prevents ill-conditioning on a point-by-point basis. The method now supports different resolutions for the control trajectory and the ensemble, and has been demonstrated in ocean 4D-Var.
JEDI now supports the Ensemble Adjustment Kalman Filter (EAKF), a sequential data assimilation algorithm in which observations are processed one at a time. This is a fundamentally different approach to ensemble assimilation than the local ensemble methods already in JEDI, and is well suited to sparse observation networks.
The implementation follows the scalable formulation of Anderson & Collins (2007), with a flexible localization interface that evaluates observation-to-observation and observation-to-model-grid distances. An initial demonstration is available for the ocean component.
Correctly implemented tangent linear and adjoint models are foundational to variational data assimilation, but rigorous testing at operational resolution was previously impractical within JEDI's existing tools. The new TLMToolbox application addresses this directly.
It can run a tangent linear forecast without requiring a second nonlinear run, write diagnostic fields on either the linear or nonlinear model grid, and perform full-window adjoint tests at operational resolution. A long-standing silent error in the adjoint tests embedded in the variational solver was also corrected. An older, more limited diagnostics application was retired.
Observation error covariances in atmospheric DA are traditionally assumed to be uncorrelated between observations. This release substantially expands what JEDI can represent. A new diffusion-based operator assigns spatially varying correlated errors to observations, capturing the true structure of instrument noise and representativeness error more faithfully.
The architecture was also cleaned up: observation error handling was unified across all JEDI components, localization in ensemble solvers was corrected to properly account for correlated errors (previously a silent inaccuracy), and cross-variable correlated observation errors are now supported in the local ensemble transform filter. New correlation shapes including Gaussian and Markov formulations are available.
Support for RTTOV v14 — the latest version of the widely used radiative transfer model for satellite radiance simulation — was added alongside the existing v12 support. The version used is selected automatically at build time based on what is available in the user's environment.
Several scientifically significant capabilities accompany this update: satellite surface emissivity can now be taken from the CAMEL atlas rather than a fixed background, improving retrievals over land for hyperspectral instruments; these atlas emissivities are used as a more physically meaningful first guess in 1D-Var retrievals; and a new operator handles instruments that report principal-component-reconstructed radiances rather than channel-by-channel brightness temperatures. Microwave scattering simulations were also improved.
JEDI can now run a variational analysis that simultaneously updates both atmospheric and ocean state variables within a single assimilation cycle. This is a significant step toward fully coupled Earth system data assimilation, where observations that contain information about multiple components — such as satellite radiances sensitive to sea surface temperature — can update both the atmosphere and ocean at once.
The first working demonstration assimilates microwave radiances through a coupled FV3-SOCA system where the analysis updates ocean temperature fields alongside the atmospheric state. Background error covariances remain block-diagonal at this stage; cross-domain correlations are a planned future step.
Balance operators — which relate increments in different model variables to each other in physically consistent ways — can now be defined as PyTorch neural networks and applied within JEDI without requiring a Python environment at runtime. Exported model weights are loaded directly via the C++ libtorch library.
This opens the door to data-driven variable transforms that capture complex, non-triangular relationships between fields that are difficult to express analytically. Demonstrations include sea-ice balance for the ocean component, with training integrated into the testing workflow. An ensemble increment quality-control step using physical bounds and stability constraints was also added.
The LETKF/GETKF family of ensemble solvers received several substantial additions. Perturbed analysis variants are now available. Cross-validation support was added, enabling out-of-sample quality estimates during the analysis. The Fortran core of the GETKF solver was rewritten in C++, making it more maintainable and easier to extend.
A practical stability fix was also made: the inflation step applied after the analysis was rewritten in incremental form, correcting bit-level differences that had been amplifying during cycling runs — a subtle but important fix for operational use.
Traditional DA cycles use a fixed assimilation window that resets at each analysis time. JEDI now supports a sliding window that can shift its boundaries between outer minimization loops, allowing new observations to be incorporated continuously as the analysis progresses.
Both the trailing and leading edges of the window can be shifted. Static, ensemble, and hybrid background error formulations are all supported within the sliding window. This lays the groundwork for continuous or near-real-time assimilation workflows that reduce latency between observation availability and analysis update.
The ocean data assimilation interface (SOCA) was largely rewritten in modern C++, replacing a substantial amount of legacy Fortran. The result is a leaner codebase that runs 14% faster and uses 35% less memory on a realistic 1/4°+1/2° coupled ocean configuration.
Background error covariance components for the ocean were also rebuilt as modular SABER blocks, with a ~10× speedup in the multiply operation. A silent bug in the sea-ice analysis was corrected: CICE6 history files store ice volumes rather than thicknesses, and SOCA had been incorrectly interpreting these values, leading to analysis increments that were physically inconsistent in regions of partial ice cover.
The fv3-jedi model interface previously required linking the full FV3 atmospheric dynamical core even when only the I/O and grid infrastructure were needed. This dependency was broken, allowing other atmospheric models that share FV3's grid conventions — such as NASA's GEOS — to use the same interface without compiling in the full forecast model.
I/O was modernized to FMS2 and restructured for significantly faster output on structured grids. Variable remapping after horizontal interpolation was added so that resolution changes correctly account for the model orography. An internal Poisson solver was bundled directly into the repository, removing an external library dependency.
The GSI background error covariance model, developed at NOAA and widely trusted in operational systems, was previously usable in JEDI only on the global grids it was originally designed for. It is now available for regional FV3 and MPAS configurations as well.
This makes it straightforward to run JEDI-based regional DA experiments using the same background error statistics as the operational GSI system — an important capability for partners migrating from GSI to JEDI, as it allows one variable to change at a time. The GSI covariance is also available as a static term within hybrid ensemble-variational systems.
JEDI's automated testing infrastructure was migrated from a legacy cloud-based runner to GitHub Actions, making it fully maintainable by the community in-repository. Build caching across repositories significantly reduces test turnaround times.
Importantly, full integration tests for all partner institutions — including the UK Met Office's operational model interfaces — are now run automatically on every pull request rather than after merging. This means incompatibilities between partner code and the shared framework are caught immediately rather than discovered after the fact.
JEDI's timing instrumentation was upgraded from a flat list of counters to a hierarchical tree, making it much easier to identify where time is being spent in complex multi-component runs. Read and write times for field data are now included in the timing output.
A critical bug was also fixed: output files were being opened in a legacy format that silently truncated data once file size exceeded 2 GB — a limit easily reached at high resolution. Files are now written in a 64-bit offset format with no effective size limit. Parallel field I/O distributes data across compute nodes for both reading and writing, removing a bottleneck that previously forced all field data through a single process.
JEDI's scope expanded into space weather with a new interface for the Python International Reference Ionosphere (PyIRI) model. This brings ionospheric data assimilation under the same framework used for tropospheric and oceanic systems, enabling consistent treatment of observations, error statistics, and ensemble methods across the full atmosphere-ionosphere column.
Starting from scratch in April 2024, the team delivered a complete working system by late 2025: ensemble generation, horizontal interpolation on a geomagnetic grid, coordinate transforms between geographic and geomagnetic frames, and the first operational assimilation of ionosonde observations. The interface tracks all major JEDI framework updates and is ready for ensemble Kalman filter experiments.
Notable Additions by Repository
- Ensemble state containers refactored for cleaner memory management
- Cost function terms cleaned up: DFI penalty and legacy hacks removed
- Observation forward operator can now read directly from pre-computed GeoVaLs files
- Interpolation extended to more atlas grid types; reproducible across different MPI layouts
- Multithreaded field operations framework for faster ensemble processing
- State interpolation application between different model grids
- Variational solver always saves observation diagnostics (background departure, innovations)
- Communication redistribution utilities for flexible domain decomposition
- Structured grid NetCDF writer with user-selectable float or double precision
- Variable bias correction extended to work record-by-record, not just channel-by-channel
- QC flag system migrated to a more flexible diagnostic-flag architecture
- Radar reflectivity and Doppler wind operators rewritten in C++
- GOES-GLM lightning flash rate operator
- GNSS radio occultation refractivity 1D-Var retrieval with Met Office coefficients
- Aerosol optical depth operator for dust from LFRic atmospheric composition model
- Pathsum vertical integration operator with configurable weighting profiles
- New quality control filters: geographical polygon masking, duplicate removal, ensemble statistics
- Bayesian background check with per-observation probability of gross error
- New diagnostic variables: cloud-top pressure, tropopause height, visibility
- ~30 numerical precision and floating-point robustness fixes across operators
- Updated to CRTM v3.1.1 and v3.1.2; legacy v2 interface retired
- RTTOV v14 added alongside v12 with automatic build-time version selection
- Surface emissivity from the CAMEL atlas for hyperspectral infrared instruments
- Atlas emissivities used as first guess in 1D-Var retrievals
- New operator for PC-reconstructed radiances (C-matrix spectral compression)
- Improved microwave scattering simulations (RTTOV-SCATT)
- Bug fix: unconverged 1D-Var profiles now produce clean missing-value output
- Data ingest for MTGIRS (Meteosat Third Generation sounder) and FCI (Meteosat-12)
- IMS snow cover, sea-ice thickness, and radar altimeter freeboard ingest
- Ionosonde and Total Electron Content variable definitions added
- Coordinate sanity checks added to all observation readers
- Flexible observation distribution across compute nodes; in-place redistribution
- Crash fix for empty observation spaces in halo distributions
- Datetime format standardized across all observation files
- BUMP correlation library: interpolation bugfixes, variance filtering improvements
- BUMP can now be excluded from builds where it is not needed
- QUENCH testing framework improved with better I/O and element-wise operations
- Spectral vertical covariances can be calibrated from a randomized pseudo-ensemble
- Spectral B resolution can be extended beyond the analysis grid
- OpenMP threading is now optional for environments that do not support it
- Growing library of adjoint-tested variable transforms (humidity, geopotential, pressure)
- OpenMP parallelism added across humidity, dry-air density, and pressure-level recipes
- Met Office Exner pressure function and dust transforms for LFRic
- Trajectory tracking ensures transforms use the correct background state
- New recipes for MPAS model variables
- Multithreaded recipe execution via the OOPS for_each framework
Contributing Organizations
| Organization | Key contributions this cycle |
|---|---|
| NASA GMAO | Coupled atmosphere-ocean DA; fv3-jedi I/O modernization and dycore decoupling; FMS2 migration; PyTorch balance operators; ocean Gaussian-grid interpolation; ML sea-ice emulator; TLMToolbox in atmospheric and ocean interfaces |
| UK Met Office | Hybrid TLM and adaptive regularization; parallel field I/O; GETKF C++ port; ensemble cross-validation; QC diagnostic-flag architecture; radar operators and density reduction; RTTOV emissivity atlas and reconstructed-radiance operator; Markov observation error model; Bi-Fourier covariance blocks; hierarchical timers; MTG instrument ingest; CI integration testing |
| Météo-France | SABER HybridBlockChain and ProcessPerts refactor; Bi-Fourier and Biperiodization spectral blocks; NICAS filter mode; BUMP library maintenance and bugfixes; spectral B resolution extension |
| NOAA / EMC | GSI background error covariances for regional FV3 and MPAS; fv3-jedi vertical remapping; GOES-GLM lightning operator; model variable naming sprint; GSL surface observations |
| JCSDA | Generic and implicit diffusion operators; sequential ensemble Kalman filter; SOCA C++ rewrite and direct netCDF I/O; observation error refactor with correlated R; model variable naming; multithreading infrastructure; CI/CD migration and build caching; pyiri-jedi space weather interface; IODA parallel storage architecture; HTLM improvements |
| ECMWF | Configuration system removal; ObsDataFrame concept and prototype; Ensemble Statistics filter; IODA parallel distributions and observation space extensions |
| UCAR / NCAR | GOES-GLM lightning operator; model variable naming sprint; radiative transfer Jacobian improvements |
| ROMS-JEDI / Rutgers | Diffusion operator testing and validation; Chebyshev multiscale extensions in progress |
| [To be confirmed] | Variable bias correction by record; GNSS-RO refractivity 1D-Var; aerosol optical depth operator; surface pressure operators; duplicate-thinning filter; IMS snow cover, sea-ice thickness and freeboard ingest; ionosonde and TEC variables; VADER Exner and dust transforms |
