Go to the bottom of this page. See the search engine and sub-section links.
Go to next page Go to previous page Go to top of this section Go to top page Go to table of contents

Previous Section Headers

User's Guide to NCAR CCM3.6 Search Page


3. CCM3.6 Internals
    3.3 Data Structures


3.3.4 Other Common Blocks and Header Files: The Parameterization Interface

In keeping with a plug-compatible coding philosophy, parameterizations are designed to allow for simple modular replacement with other packages. The major consideration for such replacement is interfacing the data structures of the new code with those of the rest of the model. Each physics package has its own common block which contains only those physical constants which are required for its own use. For example, /comvd/ contains eight variables--just those constants that are required by the vertical diffusion package.

The various parameterizations that comprise the the model physics are hooked to the control code using a standard form of initialization and calling interface. Each parameterization contains an initialization routine called on start-up. In most cases, these routines are named "xxinti," where "xx'' is the standard prefix for the particular parameterization (e.g. vdinti is the initializer for the vertical diffusion package).  Most of these routines are called from subroutine inti, before the time integration procedure begins. These routines set constants in the parameterization-specific common blocks and do other initialization tasks that are not dependent upon time or latitude. Some data initialization is done within various block data subprograms.

Figure 3.5. Spectral storage arrangement when running on a parallel vector processor.
 

Certain constants may appear in more than one common block, as needed by various parameterizations. For instance, constant cpair, the specific heat of dry air, appears in /comadj/, /comvd/, /comcon/, and other common blocks. Variables in /comcon/ are set in subroutine initcom. Then subroutine inti passes the required /comcon/ constants into each ''xxinti'' routine, which sets the individual common block constants from the passed values. At this point unit conversions or other manipulations as required by the individual parameterization are performed.

Other common blocks (i.e. those not directly related to physics code) are defined by function and exist either to give their variables global scope or to avoid the necessity of passing certain variables through many argument lists.

Figure 3.6. Spectral storage arrangement when not running on a parallel vector processor.

Each parameterization includes an interface routine that passes data between the high-level driving routines and the parameterization itself. This approach allows the parameterization to access each required array using a mnemonically named multidimensional array, rather than via the common block itself This is shown in the section "Grid-point Data Structures", "Model Buffers" .


 Go to the top of this page. See links to previous section headers.
Go to next page Go to previous page Go to top of this section Go to top page Go to table of contents

 Search for keywords in the CCM3.6 Users GuideSearch page

Questions on these pages can be sent to... erik@ucar.edu .


$Name: ccm3_6_6_latest2 $ $Revision: 1.36.2.1 $ $Date: 1999/03/25 21:38:32 $ $Author: erik $