ROMS-JEDI Implementation
From WikiROMS
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.