The National Unified Operational Prediction Capability (NUOPC) is a strategic initiative to fundamentally advance the nation's computational weather prediction systems and improve forecast models used by National Weather Service, Air Force and Navy meteorologists, mission planners, and decision makers. The NUOPC Layer is a software layer built on top of the Earth System Modeling Framework (ESMF). ESMF is a high-performance modeling framework that provides data structures, interfaces, and operations suited for building coupled models from a set of components. NUOPC refines the capabilities of ESMF by providing a more precise definition of what it means for a model to be a component and how components should interact and share data in a coupled system. The NUOPC Layer software is designed to work with typical high-performance models in the Earth sciences domain, most of which are written in Fortran and are based on a distributed memory model of parallelism (MPI).
The NUOPC Layer implements a set of generic components that serve as building blocks that can be assembled together in different ways to build up a coupled modeling application. In some cases, a generic component can be used as is, and in other cases the generic component must be specialized (customized) for a particular model or application. Additionally, the NUOPC Layer defines a set of technical rules for how components should behave and interact with each other. These technical rules form the backbone of component interoperability. NUOPC defines this effective interoperability as the ability of a model component to execute without code changes in a driver that provides the fields that it requires, and to return with informative messages if its input requirements are not met. A component that follows the NUOPC Layer technical rules is considered to be NUOPC Layer compliant.
For brevity, throughout this document we will often use the term ``NUOPC'' to refer to the ``NUOPC Layer software'' that is the current technical implementation of the NUOPC specification. Also, the term ``NUOPC component'' is shorthand for a component that is NUOPC Layer compliant and can be used in NUOPC-based systems.
This document is a starting point for model developers and technical managers who are new to the NUOPC Layer software and need to understand the steps involved in making an existing model codebase NUOPC Layer compliant.
The document is divided into the following sections: