Hosted by CU logo University of Colorado
Powered by ESGF-CoG logo
Welcome, Guest. | Login | Create Account
ESMF logo
You are at the CoG-CU node

Adoption Levels

We consider the adoption of ESMF infrastructure and superstructure separately. In general, the motivation for using the infrastructure is code reuse. The motivation for using the superstructure is interoperability with other ESMF components.


Listed below are the major functions in the ESMF infrastructure. Modelers usually adopt only the ones they find useful. It is possible (and typical) to adopt the superstructure without adopting all parts of the infrastructure, especially if the goal is to turn a legacy code into ESMF components. The measure of infrastructure adoption is a listing of which of the following functions are being used extensively within the user code.

  • Time Manager
  • Config
  • LogErr
  • Communications: Redistribution, Halo Update, Gather, Scatter, etc.
  • Regridding


The numbered levels below are motivated by the typical adoption sequence for the ESMF superstructure. Standalone components stop at level 4, while a multi-component application may continue to level 8.

  1. Base version of code selected, and goal configuration decided upon: includes version, target platforms, validation criteria, and any special configuration (e.g., aquaplanet).
  2. User component is restructured in an ESMF manner, including initialize(), run(), and finalize() routines but not necessarily including any ESMF software.
  3. User builds valid ESMF States and Clocks and user components present standard ESMF interfaces.
  4. All gridded components in the application run as ESMF standalone components (which may run child components). For a single standalone component, superstructure adoption is completed.
  5. If the application contains one or more couplers, a system with all components and couplers links and runs, even though couplers may be stubs, or may not use ESMF communications or regridding.
  6. One Field is correctly transferred in some manner between two components.
  7. If regridding is required, ESMF regridding is used to transform and transfer at least one Field between components. Groups with complex or specialized data transformations among components may need to continue to use their own regridding routines.
  8. All transfers of Fields among components are performed with ESMF, using ESMF regridding wherever possible.
Last Update: Jan. 28, 2014, 11:30 a.m. by deleted user