This section describes how to send (put) and receive (get) fields through OASIS-MCT API. This coupling interface supports several ranks and types of coupling fields. First, the fields passed to the interface can be 4 byte or 8 byte reals. The field decomposition must be consistent with the decomposition defined by the grid partition (see 2.2.3)5 and the fields can be bundled (i.e. have an extra non-spatial dimension for something like different ice categories). The bundle dimension is always the last dimension in the field passed to the get and put routines. And the size of the bundle dimension must match the value defined for the variable in var_nodims(2) in the oasis_def_var interface (see section 2.2.5).
So in general, the fields passed into the get and put interface can have rank 1, 2, or 3 and include the following possible options where fld can be a 4 byte or 8 byte real array.
Different bundle fields can have different numbers of fields, but for a given bundle field, the number of fields must match on the send and receive side. This is explicitly checked within the coupling layer and will lead to an abort if not done correctly. It is possible to define a 1D bundle or 2D bundle field with a bundle dimension of 1, for a bundle that contains only one single field.
Finally, the bundle field option can be used to bundle together multi-level variables, multiple related fields, and other types of fields. The fields must share a common partition and common namcouple settings (e.g. interpolation) to be bundle. While this is a useful feature for multi-level fields, this does not mean that 3D interpolation is supported. Each field in the bundle is treated internally as a separate field in the coupling layer without any information about the relationship between the fields in the bundle. In fact, the bundle field variables are internally renamed and a field number is appended to the variable name to keep track of the distinct fields in the bundle. That updated variable name will appear in restart and output files.