﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
738	Important:  ESMF/NUOPC coupling, phase I	arango		"== Introduction ==

I have been working for few month on completely rewriting the multi-model coupling using the '''ESMF''' (Earth System Modeling Framework) library with the '''NUOPC''' (National Unified Operational Prediction Capability) layer.  The NUOPC Layer is a simplified infrastructure on top of the ESMF library ('''version 7''' or higher) that provides conventions and templates to facilitate the smooth coupling between Earth System Models ('''ESM'''s). 

The ESMF/NUOPC coupling algorithms in ROMS allow both '''driver''' and '''component''' modes of operation.  In the '''driver mode''', ROMS provides all the interfaces needed to couple to other ESM components including the main driver, NUOPC-based generic ESM component services, model gridded components or '''NUOPC Model cap''' files, connectors between components for re-gridding source and destination fields, and input scripts and coupling metadata management. The '''NUOPC Model cap''' is a Fortran module layer that sits on top of the ESM component, making calls into it ('''initialize''', '''run''', and '''finalize''' phases).  Alternatively, in the '''component mode''', the NUOPC ROMS cap module is provided which can be adapted and incorporated into other NUOPC-based coupling systems.

[[Image(https://www.myroms.org/trac/coupling_diagram.png, 550)]]

The current design of the ROMS native driver mode includes seven ESM components: ('''i''') Ocean Model, ('''ii''') Atmosphere Model, ('''iii''') Sea Ice model, ('''iv''') Wave Model, ('''v''') Ocean Boundary Model ('''vi''') Estuary Model, and ('''vii''') Data Model. Currently, the following cap files are in various staged of development:

 * Ocean Model: '''ROMS'''
 * Atmosphere Models: '''COAMPS''', '''RegCM''', '''WRF'''
 * Sea Ice Model: '''CICE'''
 * Waves Models: '''SWAN''', '''WAM''', '''!WaveWatch III'''
 * Ocean Boundary Model: To be determined
 * Estuary Model: '''ADCIRC''', or other storn surge models

The Data Model is used to provide coupling data to the atmospheric model at locations not covered by the other ESM components because of smaller grid coverage.  For example, if the atmosphere and ocean model grids do not have the same area coverage, the atmosphere model still needs to import sea surface temperature (SST) on those grid points not covered by the ocean model.  In the future, CICE will need a data connection for when just coupled to ROMS. 

== Phase I ==

In Phase I, several minor changes are done to ROMS to facilitate synchronization between all the svn branches:

 * The C-preprocessing options AIR_OCEAN and WAVES_OCEAN are renamed to ATM_COUPLING and WAV_COUPLING, respectively.

 * Several new C-preprocessing options are introduced for coupling to various ESM components: CICE_COUPLING, COAMPS_COUPLING, REGCM_COUPLING, SWAN_COUPLING, WAM_COUPLING, and more to come.

 * The following files are renamed:
 {{{
svn mv Master/mct_coupler.h Master/mct_driver.h
svn mv Master/ocean_coupler.F Master/mct_coupler.h
svn mv Master/esmf_coupler.h Master/esmf_coupler.h
svn mv ROMS/External/coupling.dat ROMS/External/coupling_mct.dat
svn mv ROMS/Utility/inquire.F ROMS/Utility/inquiry.F
}}}
 The first two needs to be done in that particular order.  We cannot use the inquire subroutine name because it is an intrinsic Fortran function.  I missed that one.

 * The '''COUPLING_INTERP''' option is added to allow time interpolation between coupling fields to the case that the time exchange window is long. The two-snapshots arrays are used to store the imported data. As consequence, very tricky CPP logic in needed in '''set_data.F'''.  Please do not change that logic.  It 's hard to figure it out.

 * All the compilation configuration files ('''Compilers/*.mk''') were updated to include the newer ESMF compiling logic.

 * Warning: the '''globaldefs.h''' was modified to include new CPP options for coupling.

----

'''I am not ready to release the full coupling algorithms. There are still developments ahead and testing.''' 









"	upgrade	closed	major	Release ROMS/TOMS 3.7	Nonlinear	3.7	Done		
