NUOPC Cap: Difference between revisions
Created page with "<div class="title">NUOPC Cap</div> __TOC__ ==Overview== This document describes the ROMS ESMF/NUOPC <span class="red">cap</span>, which is a light wei..." (change visibility) |
No edit summary (change visibility) |
||
Line 1: | Line 1: | ||
<div class="title">NUOPC Cap</div> | <div class="title">ROMS Native ESMF/NUOPC Cap</div> | ||
__TOC__ | __TOC__ | ||
Revision as of 22:26, 27 April 2022
Overview
This document describes the ROMS ESMF/NUOPC cap, which is a light weight software layer that is required when the ROMS ocean model is used in National Unified Operation Prediction Capability (NUOPC) coupled systems. Detailed information about ESMF/NUOPC and how it is implemented in ROMS can be found on the Earth System Modeling Framework WikiROMS page.
A NUOPC cap is a Fortran module that serves as the interface to a model when it's used in a NUOPC-based coupled system. The term cap is used because it is a light weight software layer that sits on top of model code, making calls into it and exposing model data structures in a standard way.
Capabilities
The ROMS cap module contains a set of subroutines that are required by NUOPC. These subroutines are called by the NUOPC infrastructure according to a predefined calling sequence. Some subroutines are called during initialization of the coupled system, some during the run of the coupled system, and some during finalization of the coupled system.
The initialization sequence is the most complex and is governed by the NUOPC technical rules. Details about the initialization sequence can be found in the NUOPC Reference Manual. The ROMS cap requires ESMF version 8 or higher.
ROMS_SetServices | Entry point to the ROMS cap and the only public routine. It sets the ROMS component chared-object entry points for using NUOPC generic methods for initialize, run, and finalize. |
ROMS_SetInitializeP1 | ROMS component phase 1 initialization which sets import and export fields long and short names into its respective state. |
ROMS_SetInitializeP2 | ROMS component phase 2 initialization which initializes the ROMS component (ROMS_initialize), sets component grid (ROMS_SetGridArrays), and adds fields into import and export into respective states. |
ROMS_DataInit | Exports ROMS component fields during initialization or restart. |
ROMS_SetClock | Sets ROMS component date calendar, start and stop times, and coupling interval. At initialization, the variable tdays" is the initial time measured in fractional days since the reference time. |
ROMS_SetRunClock | Sets ROMS run clock manually to avoid getting zero time stamps at the first regridding call. |
ROMS_CheckImport | Checks if ROMS component import field is at the correct time. |
ROMS_SetGridArrays | Sets ROMS component staggered, horizontal grid arrays, grid area, and land/sea mask if any. |
ROMS_SetStates | Adds ROMS component export and import fields into its respective state. |
ROMS_ModelAdvance | Advances ROMS component for a coupling interval. It calls import and export routines. |
ROMS_SetFinalize | Finalizes ROMS component execution. |
ROMS_Import | Imports fields into ROMS. The fields are loaded into the snapshot storage arrays to allow time interpolation elsewhere. |
ROMS_Export | Exports ROMS fields to other gridded components. |