Next: 5 Utility Modules
Up: atm_desdoc
Previous: 3 Physics Package
  Contents
Subsections
The DP_COUPLING interface module supplies routing information, routers and the
map between index spaces of decomposed grids. In addition it calls transformation
and update routines of the dynamics and physics packages that effect changes of
variables, regridding state and tendency fields and updating state for timesplit
dynamical cores.
The primary task of DP_COUPLING is to effect the transformation of data
structures from the dynamics block decomposition to and from the physics
chunk decomposition. Thus it must have access to the DYN_GRID and PHYS_GRID
modules. The data transpose or regridding takes into account load balanced
maps from the physics package and the assignment of block and chunk sizes
from the coupled sizes in order to effect an effecient message passing and
data movement method.
DP_COUPLING module also manages the interfaces for external components that
specify what a component is, how it is registered and the interface to
other functions offered by a framework. The two frameworks we are specifically
designing for are the Earth System Modeling Framework (ESMF)
and the Common Component Architecture (CCA). Since neither of these are
mature at this writing we must leave place holders that will be adapted
at a later date. However, the basic outlines are known.
The ESMF Infrastructure interface will provide physical grids (ESMF_PhysGrid),
distributed grids (ESMF_DistGrid), fields (ESMF_Field) and collections
of fields (ESMF_Bundle).
These can be identified (one way or another) with
our dyn_grid, phys_grid data structures and with our derived types dyn_state,
dyn_tend and phys_state, phys_tend. These bundled fields currently use the
communicator structures of DP_COUPLING but, when properly mapped, could take
advantage of ESMF framework services. The intention and design presented here
is to facilitate the compliance with ESMF structures, by isolating the
appropriate interfaces in the DP_COUPLING module. Where possible, our
design uses pointer assignment to identify the blocks and chunks
with the ESMF_types rather than copying between data structures.
The CCA concepts we exploit deal with the definition of a component and how
components are registered. The two components for our purposes are
the dynamics package and the physics package.
We will use DP_COUPLING as a surrogate F90 module for CCA types and services,
until such time as the many issues of language interoperability and execution
environment control are resolved. The functionality that is provided
in the DP_COUPLING module are the setServices, addProvidesPort,
registerUsesPort, getPort and removeProvidesPort. These register the component
with a unique indentifier (with DP_COUPLING) and specifies what public
inputs( UsesPorts) and outputs (ProvidesPorts) are from the component.
The public methods of the DP_COUPLING module are the following.
dp\_coupling\_setServices ! proxy for CCA component registration
dp\_coupling\_addProvidesPort ! proxy for CCA output port
dp\_coupling\_registerUsesPort ! proxy for CCA input port
dp\_coupling\_getPort ! proxy for CCA add port
dp\_coupling\_removeProvidesPort ! proxy for CCA port clean up
dp\_coupling\_init
d\_p\_coupling
p\_d\_coupling
The DP_COUPLING module supports transformations of velocities
from the staggered D-grid to the physics A-grid
as private methods supporting the FV-core.
Next: 5 Utility Modules
Up: atm_desdoc
Previous: 3 Physics Package
  Contents
Brian Eaton
2003-10-09