io_decomp_patch_to_x_y_patch Function

public function io_decomp_patch_to_x_y_patch(land_x, land_y, cstart, nap, mem_shape_spec, var_shape_spec, type) result(decomp)

Returns a parallel I/O decomposition mapping from a memory layout with a 'patch' dimension to a netCDF variable layout with 'x', 'y', and 'patch' dimensions, using the provided land_x and land_y arrays to determine the mapping from land indexes to x and y indexes, and using cstart and nap to determine the mapping from patch indexes to (land, patch) coordinates.

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. The mapping from patch index to land point is determined by cstart and nap, and the mapping from land point to x and y coordinates is determined by land_x and land_y.

Arguments

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

An array mapping land indexes to x (longitude) indexes.

integer, intent(in) :: land_y(:)

An array mapping land indexes to y (latitude) indexes.

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.

type(dim_spec_t), intent(in) :: mem_shape_spec(:)

An array of dim_spec_t describing the shape and dimension names of the in-memory array. mem_shape_spec must include a dimension with name 'patch' which is used to map to the x, y and patch dimensions.

type(dim_spec_t), intent(in) :: var_shape_spec(:)

An array of dim_spec_t describing the shape and dimension names of the netCDF variable. var_shape_spec must include dimensions with names x, y and patch which are used to map from the 'land' dimension described by mem_shape_spec.

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.

Return Value class(cable_netcdf_decomp_t), allocatable