cable_grid_reductions_mod Module

This module provides procedures for performing various grid cell reductions for data along some dimension. This is commonly used for reducing data along the tile/patch dimension to a per grid cell value.



Interfaces

public interface grid_cell_average

Interface for computing the area weighted average over the patch/tile dimension for various data types and array ranks.

  • private subroutine grid_cell_average_real32_1d(input_array, output_array, patch, landpt)

    Computes the area weighted average over the patch/tile dimension for a 1D 32-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real32), intent(in) :: input_array(:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real32), intent(out) :: output_array(:)

    The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(patch_type), intent(in) :: patch(:)

    The patch_type instance describing the area fraction of each active patch/tile dimension.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine grid_cell_average_real32_2d(input_array, output_array, patch, landpt)

    Computes the area weighted average over the patch/tile dimension for a 2D 32-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real32), intent(in) :: input_array(:,:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real32), intent(out) :: output_array(:,:)

    The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(patch_type), intent(in) :: patch(:)

    The patch_type instance describing the area fraction of each active patch/tile dimension.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine grid_cell_average_real32_3d(input_array, output_array, patch, landpt)

    Computes the area weighted average over the patch/tile dimension for a 3D 32-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real32), intent(in) :: input_array(:,:,:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real32), intent(out) :: output_array(:,:,:)

    The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(patch_type), intent(in) :: patch(:)

    The patch_type instance describing the area fraction of each active patch/tile dimension.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine grid_cell_average_real64_1d(input_array, output_array, patch, landpt)

    Computes the area weighted average over the patch/tile dimension for a 1D 64-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: input_array(:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real64), intent(out) :: output_array(:)

    The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(patch_type), intent(in) :: patch(:)

    The patch_type instance describing the area fraction of each active patch/tile dimension.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine grid_cell_average_real64_2d(input_array, output_array, patch, landpt)

    Computes the area weighted average over the patch/tile dimension for a 2D 64-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: input_array(:,:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real64), intent(out) :: output_array(:,:)

    The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(patch_type), intent(in) :: patch(:)

    The patch_type instance describing the area fraction of each active patch/tile dimension.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine grid_cell_average_real64_3d(input_array, output_array, patch, landpt)

    Computes the area weighted average over the patch/tile dimension for a 3D 64-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: input_array(:,:,:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real64), intent(out) :: output_array(:,:,:)

    The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(patch_type), intent(in) :: patch(:)

    The patch_type instance describing the area fraction of each active patch/tile dimension.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

public interface first_patch_in_grid_cell

Interface for extracting the value from the first patch/tile in each grid cell for various data types and array ranks. This is useful for arrays where averaging along the patch/tile dimension does not make sense, or where the array contains the same value everywhere along the patch/tile dimension.

  • private subroutine first_patch_in_grid_cell_int32_1d(input_array, output_array, landpt)

    Extracts the first patch value for each grid cell from a 1D integer array.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(in) :: input_array(:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    integer(kind=int32), intent(out) :: output_array(:)

    The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine first_patch_in_grid_cell_int32_2d(input_array, output_array, landpt)

    Extracts the first patch value for each grid cell from a 2D integer array.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(in) :: input_array(:,:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    integer(kind=int32), intent(out) :: output_array(:,:)

    The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine first_patch_in_grid_cell_int32_3d(input_array, output_array, landpt)

    Extracts the first patch value for each grid cell from a 3D integer array.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(in) :: input_array(:,:,:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    integer(kind=int32), intent(out) :: output_array(:,:,:)

    The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine first_patch_in_grid_cell_real32_1d(input_array, output_array, landpt)

    Extracts the first patch value for each grid cell from a 1D 32-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real32), intent(in) :: input_array(:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real32), intent(out) :: output_array(:)

    The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine first_patch_in_grid_cell_real32_2d(input_array, output_array, landpt)

    Extracts the first patch value for each grid cell from a 2D 32-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real32), intent(in) :: input_array(:,:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real32), intent(out) :: output_array(:,:)

    The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine first_patch_in_grid_cell_real32_3d(input_array, output_array, landpt)

    Extracts the first patch value for each grid cell from a 3D 32-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real32), intent(in) :: input_array(:,:,:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real32), intent(out) :: output_array(:,:,:)

    The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine first_patch_in_grid_cell_real64_1d(input_array, output_array, landpt)

    Extracts the first patch value for each grid cell from a 1D 64-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: input_array(:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real64), intent(out) :: output_array(:)

    The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

  • private subroutine first_patch_in_grid_cell_real64_2d(input_array, output_array, landpt)

    Extracts the first patch value for each grid cell from a 2D 64-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: input_array(:,:)
    real(kind=real64), intent(out) :: output_array(:,:)
    type(land_type), intent(in) :: landpt(:)
  • private subroutine first_patch_in_grid_cell_real64_3d(input_array, output_array, landpt)

    Extracts the first patch value for each grid cell from a 3D 64-bit real array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: input_array(:,:,:)

    The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

    real(kind=real64), intent(out) :: output_array(:,:,:)

    The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

    type(land_type), intent(in) :: landpt(:)

    The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.


Subroutines

private subroutine grid_cell_average_real32_1d(input_array, output_array, patch, landpt)

Computes the area weighted average over the patch/tile dimension for a 1D 32-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: input_array(:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real32), intent(out) :: output_array(:)

The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(patch_type), intent(in) :: patch(:)

The patch_type instance describing the area fraction of each active patch/tile dimension.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine grid_cell_average_real32_2d(input_array, output_array, patch, landpt)

Computes the area weighted average over the patch/tile dimension for a 2D 32-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: input_array(:,:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real32), intent(out) :: output_array(:,:)

The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(patch_type), intent(in) :: patch(:)

The patch_type instance describing the area fraction of each active patch/tile dimension.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine grid_cell_average_real32_3d(input_array, output_array, patch, landpt)

Computes the area weighted average over the patch/tile dimension for a 3D 32-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: input_array(:,:,:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real32), intent(out) :: output_array(:,:,:)

The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(patch_type), intent(in) :: patch(:)

The patch_type instance describing the area fraction of each active patch/tile dimension.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine grid_cell_average_real64_1d(input_array, output_array, patch, landpt)

Computes the area weighted average over the patch/tile dimension for a 1D 64-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: input_array(:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real64), intent(out) :: output_array(:)

The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(patch_type), intent(in) :: patch(:)

The patch_type instance describing the area fraction of each active patch/tile dimension.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine grid_cell_average_real64_2d(input_array, output_array, patch, landpt)

Computes the area weighted average over the patch/tile dimension for a 2D 64-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: input_array(:,:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real64), intent(out) :: output_array(:,:)

The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(patch_type), intent(in) :: patch(:)

The patch_type instance describing the area fraction of each active patch/tile dimension.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine grid_cell_average_real64_3d(input_array, output_array, patch, landpt)

Computes the area weighted average over the patch/tile dimension for a 3D 64-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: input_array(:,:,:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real64), intent(out) :: output_array(:,:,:)

The output array containing the grid cell averaged values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(patch_type), intent(in) :: patch(:)

The patch_type instance describing the area fraction of each active patch/tile dimension.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine first_patch_in_grid_cell_int32_1d(input_array, output_array, landpt)

Extracts the first patch value for each grid cell from a 1D integer array.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: input_array(:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

integer(kind=int32), intent(out) :: output_array(:)

The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine first_patch_in_grid_cell_int32_2d(input_array, output_array, landpt)

Extracts the first patch value for each grid cell from a 2D integer array.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: input_array(:,:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

integer(kind=int32), intent(out) :: output_array(:,:)

The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine first_patch_in_grid_cell_int32_3d(input_array, output_array, landpt)

Extracts the first patch value for each grid cell from a 3D integer array.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: input_array(:,:,:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

integer(kind=int32), intent(out) :: output_array(:,:,:)

The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine first_patch_in_grid_cell_real32_1d(input_array, output_array, landpt)

Extracts the first patch value for each grid cell from a 1D 32-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: input_array(:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real32), intent(out) :: output_array(:)

The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine first_patch_in_grid_cell_real32_2d(input_array, output_array, landpt)

Extracts the first patch value for each grid cell from a 2D 32-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: input_array(:,:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real32), intent(out) :: output_array(:,:)

The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine first_patch_in_grid_cell_real32_3d(input_array, output_array, landpt)

Extracts the first patch value for each grid cell from a 3D 32-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: input_array(:,:,:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real32), intent(out) :: output_array(:,:,:)

The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine first_patch_in_grid_cell_real64_1d(input_array, output_array, landpt)

Extracts the first patch value for each grid cell from a 1D 64-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: input_array(:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real64), intent(out) :: output_array(:)

The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.

private subroutine first_patch_in_grid_cell_real64_2d(input_array, output_array, landpt)

Extracts the first patch value for each grid cell from a 2D 64-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: input_array(:,:)
real(kind=real64), intent(out) :: output_array(:,:)
type(land_type), intent(in) :: landpt(:)

private subroutine first_patch_in_grid_cell_real64_3d(input_array, output_array, landpt)

Extracts the first patch value for each grid cell from a 3D 64-bit real array.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: input_array(:,:,:)

The input array to be reduced. The first (i.e. fastest varying) dimension of this array must be the patch/tile dimension being reduced.

real(kind=real64), intent(out) :: output_array(:,:,:)

The output array containing the reduced per grid cell values. The first (i.e. fastest varying) dimension of this array must be equal to the number of grid cells.

type(land_type), intent(in) :: landpt(:)

The land_type instance describing the starting and ending patch/tile indexes in the input array for each grid cell.