In order to describe the grids onto which the coupling fields sent or received by the components are placed, the following approach was chosen.
All grids have to be described as covering a 3D domain. A 2D surface in a 3D space necessarily requires information about the location in the third dimension. For example, the grid used in an ocean model to calculate the field of sea surface temperature (SST) would be described vertically by a coordinate array of extent 1 in the vertical direction; the (only) level at which the SST field is calculated would be defined (prism_set_points ) as well as its vertical bounds (prism_set_corners ).
The first step is to declare a grid (see prism_def_grid in 5.3.1). The grid volume elements which discretise the sphere need to be defined by providing the corner points (vertices) of these volume elements (see prism_set_corners in 5.3.2). At this time, other properties of these volume elements can also be provided, such as the volume element mask (see prism_set_mask in 5.3.3).
In a second step, different sets of points on which the component calculates its variables can be placed in these volume elements. There is only one definition of volume elements per grid but there can be more than one set of points for the different variables on the same grid. The model developer describes where the points are located (see prism_set_points in 5.3.6). Points can represent means, extrema or other properties of the variables within the volume.
The description of the grid and related quantities is done locally for the coupling domain treated by the local process. The communication patterns used to exchange the coupling fields will usually be based on the geographical description of the local process domain. However, for fields located on a non-geographical grid, the coupling exchanges are also supported, based on the description of the local process partition in terms of indices in the global index space (see 5.3.1 and 5.3.4)9.