next up previous contents
Next: 14 Scientific Requirements Up: 3 Scientific Reference Previous: 12 What is a   Contents

13 Development History

The origins of the Coupler are in the Oceanography Section (OS) of the Climate and Global Dynamics Division (CGD) of the National Center for Atmospheric Research (NCAR). While coupling the Community Climate Model (CCM2, the atmosphere model) with a regional Pacific Basin Model for ESNO/El-Nino studies (Gent, Tribbia, Kauffman, & Lee, 1990), it became clear that it was extremely awkward to couple the models by implementing the ocean model as a subroutine within an atmosphere model. An idea emerged that a more desirable software architecture would be to have both the ocean and atmosphere models as subroutines to a higher-level driver/coupler program. This ``coupler'' component would reconcile the differing component model spatial grids (handle the mapping of data fields), reconcile different time step intervals, and control when the coupled system would start and stop. Thus the two component models could be very independent and largely unaware of the software details of the other components. The modularity of this arrangement also suggested a framework in which, for example, it would be relatively easy to exchange one ocean component for another.

Other OS scientists joined in (McWilliams, Large, Bryan, 1991), and together worked out a scientific design philosophy for the Coupler and the coupled system, for example, that the appropriate boundary conditions for component models were the fluxes across the surface interfaces, that fluxes should be conserved, and that ad hoc flux corrections were undesirable. Frank Bryan suggested the models be separate executables communicating by message passing rather than subroutines in a single executable, this resulted in an MPMD implementation that proved extremely successful.

Climate Modeling Section (CMS) scientists joined the effort (Boville, et.al., 1992), working on the atmosphere component (CCM) so that it produced a quality simulation when bottom boundary conditions were fluxes instead of fixed BC's. The CMS also had experience in managing community modeling efforts - the CMS managed the development of the CCM, a very successful community atmosphere climate model. With the Coupler and its associated framework, and with a critical mass of engaged ocean and atmosphere model scientists, it now seemed plausible to start an institutional coupled climate model project.

A proposal was made to NSF for a new, NCAR-wide, Climate System Model (CSM) Project (1993), with the long-term goal of building, maintaining, and continually improving a comprehensive model of the climate system. The Coupler proto-type code and design philosophy formed the basis for CSM's software framework. The CSM project was funded and formally began in 1994.

Also during this time, the Department of Energy had funded the development of the Parallel Climate Model in a group lead by Warren Washington which included Tony Craig and Tom Bettge. Around the year 1999, it was decided to merge the two models and create one high-performance parallel Community Climate System Model. The creation of a coupler which could be both a distributed memory parallel application and still function as the ``hub'' in the CCSM system was a very difficult problem. To solve this problem, a team consisting of NCAR scientists from the CCSM and PCM projects (Kauffman, Craig and Bettge) and scientists from DOE laboratories at Argonne (Jacob, Larson and Ong) and Berkeley (Ding, He) was assembled. The resulting effort created not only cpl6 but two standalone software packages: the Model Coupling Toolkit, the which underlies most of cpl6 and handles all the communication intricacies presented by CCSM, and MPH, which handles high-level allocation of MPI resources.

The name, "cpl6" or "Coupler, version 6", alludes to six versions of the Coupler, they are:

cpl1
(Kauffman, 1990): a rough proto-type code, never released. Coupler is a driver program that handles all high-level control (eg. start/ stop/advance of component models) and all mapping between grids. The complete system is a single-executable with two swappable component model subroutines: ocean/ice and atmosphere/land. Written in Fortran 77.

cpl2
(NCAR/CGD, Oceanography Section, 1992): a proto-type code, never released. New scientific design philosophy, does flux calculations, insures conservation of fluxed quantities. Complete system uses component models that are separate executables. Uses PVM for message passing.

cpl3
(NCAR/CGD, 1996): released with CSM 1.0 Has three component models: atmosphere/land, ocean, and ice. First fully functional version. Uses MCL for message passing. Uses netCDF.

cpl4
(NCAR/CGD, 1998): released with CSM 1.2 Has four component models: atmosphere, land, ocean, and ice. Uses MPI for message passing.

cpl5
(NCAR/CGD, 2002): released with CCSM 2.0 Written in Fortran 90, uses SCRIP to generate mapping data, handles shifted pole grids.

cpl6
(NCAR/CGD, ANL/MCS, LBNL 2004): released with CCSM 3.0 Has all the functionality of cpl5 but is a complete rewrite which generalizes the interface between models and the Coupler and also allows data parallelism. Built on top of MCT and also uses MPH3.


next up previous contents
Next: 14 Scientific Requirements Up: 3 Scientific Reference Previous: 12 What is a   Contents
cesm.ucar.edu