ROMS-JEDI Implementation

From WikiROMS
Revision as of 20:19, 30 August 2023 by Robertson (talk | contribs)
(change visibility) (diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
ROMS-JEDI Implementation
ROMS-JEDI Menu
  1. Introduction  
  2. Compiling  
  3. Implementation  
  4. Observations  
  5. Unit Test Cases  


Most modern geophysical models can be connected to the JEDI framework, provided that the following predefined abstract C++/Fortran classes or building blocks are coded:

CLASS Description
ErrorCovarinace Background error covariance, training, and modeling (SABER: BUMP/NICAS)
Field/Fields Elemental operators to manipulate a field or a set of fields to the model state/increment vector and metadata
Geometry Application grid definition, including coordinates, metrics, parallel decomposition, and operators
GeometryIterator Methods to set/get state fields over specified grid points in LETKF applications
Increment Procedures to operate on the increment vector that extends/inherits from the Fields class
LinearModel Initializes, run, and finalizes Tangent Linear and Adjoint model dynamical/numerical kernels
LinearVariableChange Tangent/adjoint increment vector variables transformation from one field to another
Localization Model Ensemble Localization (SABER: BUMP/NICAS)
Model Initializes, run, and finalizes the Nonlinear model dynamical/numerical kernel
State Procedures to operate on the state vector that extends/inherits from the Fields class
Trajectory Methods to process the Nonlinear trajectory that linearizes the tangent linear and adjoint models
VariableChange Nonlinear state vector variables transformation from one field to another

Code Design

Below is a diagram showing the interoperability mechanism for the Geometry Class that allows Fortran to invoke C++ function and vice versa for C++ to invoke Fortran procedures.

romsjedi implementation schematic.png