UNPACK — Unpack an array of rank one into an array#

UNPACK(VECTOR, MASK, FIELD)#

Store the elements of VECTOR in an array of higher rank.

Parameters:
  • VECTOR – Shall be an array of any type and rank one. It shall have at least as many elements as MASK has TRUE values.

  • MASK – Shall be an array of type LOGICAL.

  • FIELD – Shall be of the same type as VECTOR and have the same shape as MASK.

Returns:

The resulting array corresponds to FIELD with TRUE elements of MASK replaced by values from VECTOR in array element order.

Standard:

Fortran 90 and later

Class:

Transformational function

Syntax:
RESULT = UNPACK(VECTOR, MASK, FIELD)
Example:
PROGRAM test_unpack
  integer :: vector(2)  = (/1,1/)
  logical :: mask(4)  = (/ .TRUE., .FALSE., .FALSE., .TRUE. /)
  integer :: field(2,2) = 0, unity(2,2)

  ! result: unity matrix
  unity = unpack(vector, reshape(mask, (/2,2/)), field)
END PROGRAM
See also:

PACK — Pack an array into an array of rank one, SPREAD — Add a dimension to an array