NUOPC Layer
The National Unified Operational Prediction Capability (NUOPC) is a consortium of Navy, NOAA, and Air Force modelers and their research partners. It aims to advance the weather prediction modeling systems used by meteorologists, mission planners, and decision makers. NUOPC partners are working toward a common model architecture - a standard way of building models - in order to make it easier to collaboratively build modeling systems. To this end, they have developed a NUOPC Layer that defines conventions and templates for using the Earth System Modeling Framework (ESMF).
A prototype of the NUOPC Layer has been bundled as part of the ESMF releases since ESMF version 5.2.0r. A production release of the NUOPC Layer is scheduled for early FY13, although it is still very much a work in progress. Please contact us if you would like to participate in its development.
The NUOPC Layer implements a component based software architecture with the following key features:
-
Four basic building blocks.
There are four basic kinds of components:
-
Driver - Provides a harness for Models, Mediators, and Connectors, coordinating their initialization and driving them during the application time loop.
-
Model - Typically implements a specific physical domain, e.g. atmosphere, ocean.
-
Mediator - Used for custom coupling code (flux calculations, averaging, etc.) between possibly multiple Models.
-
Connector - Connects pairs of components, e.g. Model to/from Model, or Model to/from Mediator, and executes simple transforms (Regrid or Redist).
-
Many architectural options.
The four basic building blocks can be arranged in many different ways. This allows applications to implement a wide range of model architectures, including ensembles, component hierarchies, and simple connections.

Some possibilities are illustrated above. Image a shows a simple atmosphere and ocean connection, set up without a mediator. Image b is based on the Navy COAMPS modeling system. It shows a mediator used to couple together atmosphere, ice, ocean and wave models. It follows a typical hub and spoke pattern, but sets up a direct connection between the tightly coupled ocean and wave models. Image c shows a multi-model interactive ensemble configuration. It includes two mediators - one set up as a hub in the usual fashion, and another used to stage multiple versions of an atmospheric model.
-
Field brokering.
A field dictionary implementation is used to support field brokering and compliance checking between components. This mechanism is based on CF "standard name" metadata.
-
Initialize sequence.
The initialize phase definition meta data implemented by the NUOPC Layer supports various levels of component negotiation during the initialize sequence. This includes field brokering between producer and consumer components, as well as resolving data dependencies between components during initialize.
-
Run sequence.
The run sequence parametrization implemented by the NUOPC Layer supports time loops that are very simple, as well as complex architectures where the components interact on multiple timescales. Explicit, semi-implicit, and implicit coupling modes are supported.
-
Compatibility testing.
The NUOPC Layer helps to ensure that code which compiles and runs also guarantees a certain level of inter-component compatibility. This is accomplished by defining field and component metadata that is automatically checked by generic code provided by the NUOPC Layer. More complicated cases require specialized compatibility checking - the NUOPC Layer provides the necessary hooks and utility methods to implement these sort of checks.
-
Compliance checker.
The compliance checker is an integrated tool that is useful during the development of NUOPC compliant code. When turned on it provides the developer with detailed information about the initialize and run sequencing, timekeeping, and objects and meta data passed between components. Situations that are not compliant with the NUOPC conventions are flagged.
More...
To learn more about the NUOPC Layer please follow the link to the Introduction page.
Last Update: May 16, 2013, 12:26 a.m. by Gerhard Theurich