io_decomp_patch_to_land_patch Function

public function io_decomp_patch_to_land_patch(land_decomp_start, cstart, nap, mem_shape, var_shape, type, var_land_index, var_patch_index, index_map) result(decomp)

Returns a parallel I/O decomposition mapping from a memory layout with a 'patch' dimension to a netCDF variable layout with a 'land' and 'patch' dimension.

Note that the 'patch' dimension in the memory layout represents the index in the 1-dimensional vector of patches, and in the netCDF variable layout, the 'patch' dimension represents the index of the patch on a particular land point.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: land_decomp_start

The starting index of the first local 'land' index along the global 'land' dimension.

integer, intent(in) :: cstart(:)

The starting patch index for each land point.

integer, intent(in) :: nap(:)

The number of active patches for each land point.

integer, intent(in) :: mem_shape(:)

The shape of the in-memory array.

integer, intent(in) :: var_shape(:)

The shape of the netCDF variable.

integer, intent(in) :: type

The data type of the variable for which the decomposition is being created using CABLE_NETCDF_TYPE_* constants from cable_netcdf_mod.

integer, intent(in), optional :: var_land_index

The index of the 'land' dimension in var_shape. Defaults to 1 if not provided.

integer, intent(in), optional :: var_patch_index

The index of the 'patch' dimension in var_shape. Defaults to 2 if not provided.

integer, intent(in), optional :: index_map(:)

An optional mapping from the dimension indexes of var_shape to the dimension indexes of mem_shape. If not provided, it is assumed that the dimensions of var_shape map to the dimensions of mem_shape in order, with var_land_index and var_patch_index being mapped to the first index of mem_shape.

Return Value class(cable_netcdf_decomp_t), allocatable