The horizontal land surface heterogeneity is represented by a nested subgrid hierarchy composed of gridcells, landunits, columns, and plant functional types (PFTs) as shown in Figure 3.1. Each gridcell can have a different number of landunits, each landunit can have a different number of columns, and each column can have multiple PFTs. Gridcells represent the computational grid which is shared with the atmospheric physics.
The landunit, the first subgrid level, is intended to capture the broadest spatial pattern of subgrid heterogeneity. It serves primarily to distinguish physical soil properties. Specific landunits include glacier, lake, wetland, urban, and vegetated. The column captures variability in soil and snow state variables within a landunit. Water and energy states and fluxes are tracked at the column level. The PFT, the third subgrid level, captures the characteristic biophysical and biogeochemical functions of broad categories of vegetation and bare soil. Up to four out of the 15 possible PFTs differing in physiology and structure may be contained within a single column.
Biophysical processes are simulated for each subgrid unit independently, and prognostic variables are maintained for each subgrid unit. Processes related to soil and snow require PFT level properties to be aggregated up to the column level. Aggregation is usually accomplished by computing a weighted sum for each quantity over all PFTs within a column. Similarly, different PFTs compete for the resources tracked at the column level. A complete description of the biophysical processes simulated by CLM is available in the Technical Description of the Community Land Model (CLM) [Oleson et al., 2004].
The hierarchical subgrid representation is reflected in the data structures used in the model code. These data structures consist of derived data types for each subgrid unit as shown in Figure 3.2. Each of these data types contains arrays of integers which serve as indices to the higher subgrid levels or as initial and final bounds on the lower subgrid levels. For example, the column-level data type contains landunit and gridcell integer arrays which refer to the appropriate landunit and gridcell for a given column. The column-level data type also contains integer arrays named pfti, pftf, and npfts which refer to the first and last PFTs and the total number of PFTs, respectively, for a given column. Each subgrid data type also contains real arrays for surface areas and area weights at all higher grid levels.
Each grid and subgrid unit data type in the hierarchy also contains a number of physical and chemical state and flux data types. These data types typically contain real arrays for state and flux quantities. Vertical heterogeneity is represented by a single vegetation layer, 10 layers for soil, and up to five layers for snow, depending on the snow depth. Multi-layer quantities are stored as two-dimensional real arrays. Using real arrays at every level in the hierarchy maximizes opportunities for contiguous memory access thereby providing significantly better performance on vector architectures. All arrays contained in derived data types are implemented as Fortran 90 pointers. Memory for these arrays is allocated dynamically during model initialization. The data structure hierarchy is defined in clmtype (Section A.47), and the structures are allocated and initialized in clmtypeInitMod (Section A.48).