Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_Array), | intent(inout) | :: | array | |||
real(kind=ESMF_KIND_R8), | intent(out), | optional | :: | result | ||
type(ESMF_Reduce_Flag), | intent(in) | :: | reduceflag | |||
integer, | intent(in) | :: | rootPET | |||
type(ESMF_VM), | intent(in), | optional | :: | vm | ||
integer, | intent(out), | optional | :: | rc |
subroutine ESMF_ArrayReduce(array, result, reduceflag, rootPET, vm, rc) ! ! !ARGUMENTS: type(ESMF_Array), intent(inout) :: array real(ESMF_KIND_R8), intent(out), optional :: result type(ESMF_Reduce_Flag), intent(in) :: reduceflag integer, intent(in) :: rootPET type(ESMF_VM), intent(in), optional :: vm integer, intent(out), optional :: rc ! ! !DESCRIPTION: ! Fully reduce the entire Array into a single {\tt result} on {\tt rootPET} ! according to the operation specified in {\tt reduceflag}. Only root must ! specify a valid result argument. ! ! This version of the interface ! implements the PET-based blocking paradigm: Each PET of the VM must issue ! this call exactly once for {\em all} of its DEs. The ! call will block until all PET-local data objects are accessible. ! ! The arguments are: ! \begin{description} ! \item[array] ! The {\tt ESMF\_Array} object across which data will be scattered. ! \item[{[result ]}] ! Argument into which to reduce the Array. Only root ! must provide a valid {\tt result} argument. ! \item[reduceflag] ! Reduction operation. See section \ref{const:reduce} for a list of ! valid reduce operations. There will be options that determine the ! sequence of operations to ensure bit-wise reproducibility. ! \item[rootPET] ! root. ! \item[{[vm]}] ! Optional {\tt ESMF\_VM} object of the current context. Providing the ! VM of the current context will lower the method's overhead. ! \item[{[rc]}] ! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. ! \end{description} ! !EOPI !------------------------------------------------------------------------------ integer :: localrc ! local return code ! initialize return code; assume routine not implemented localrc = ESMF_RC_NOT_IMPL if (present(rc)) rc = ESMF_RC_NOT_IMPL result = real(0.,ESMF_KIND_R8) ! quiet down compiler warnings while not fully implemented end subroutine ESMF_ArrayReduce