# 2.11.2. C grid staggering of variables¶

The basic algorithm employed for stepping forward the momentum equations is based on retaining non-divergence of the flow at all times. This is most naturally done if the components of flow are staggered in space in the form of an Arakawa C grid (Arakawa and Lamb, 1977 [arakawa:77]).

Figure 2.5 shows the components of flow ($$u$$,$$v$$,$$w$$) staggered in space such that the zonal component falls on the interface between continuity cells in the zonal direction. Similarly for the meridional and vertical directions. The continuity cell is synonymous with tracer cells (they are one and the same).

Figure 2.5 Three dimensional staggering of velocity components. This facilitates the natural discretization of the continuity and tracer equations.

# 2.11.3. Grid initialization and data¶

Initialization of grid data is controlled by subroutine INI_GRID which in calls INI_VERTICAL_GRID to initialize the vertical grid, and then either of INI_CARTESIAN_GRID, INI_SPHERICAL_POLAR_GRID or INI_CURVILINEAR_GRID to initialize the horizontal grid for cartesian, spherical-polar or curvilinear coordinates respectively.

The reciprocals of all grid quantities are pre-calculated and this is done in subroutine INI_MASKS_ETC which is called later by subroutine INITIALISE_FIXED.

All grid descriptors are global arrays and stored in common blocks in GRID.h and a generally declared as _RS.