next up previous contents
Next: 5 Utility Modules Up: atm_desdoc Previous: 3 Physics Package   Contents

Subsections

4 Dynamics-Physics Coupling Module

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.

4.1 Initialization

4.2 Chunks to Blocks Transpose

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.

4.3 Registration of Packages

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

4.4 Transformations

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 up previous contents
Next: 5 Utility Modules Up: atm_desdoc Previous: 3 Physics Package   Contents
Brian Eaton 2003-10-09