Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_DynamicMask), | intent(out) | :: | dynamicMask | |||
procedure(ESMF_DynamicMaskRoutineR4R4R4V) | :: | dynamicMaskRoutine | ||||
type(ESMF_KeywordEnforcer), | optional | :: | keywordEnforcer | |||
logical, | intent(in), | optional | :: | handleAllElements | ||
real(kind=ESMF_KIND_R4), | intent(in), | optional | :: | dynamicSrcMaskValue | ||
real(kind=ESMF_KIND_R4), | intent(in), | optional | :: | dynamicDstMaskValue | ||
integer, | intent(out), | optional | :: | rc |
subroutine ESMF_DynamicMaskSetR4R4R4V(dynamicMask, dynamicMaskRoutine, & keywordEnforcer, handleAllElements, dynamicSrcMaskValue, & dynamicDstMaskValue, rc) ! ! !ARGUMENTS: type(ESMF_DynamicMask), intent(out) :: dynamicMask procedure(ESMF_DynamicMaskRoutineR4R4R4V) :: dynamicMaskRoutine type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below logical, intent(in), optional :: handleAllElements real(ESMF_KIND_R4), intent(in), optional :: dynamicSrcMaskValue real(ESMF_KIND_R4), intent(in), optional :: dynamicDstMaskValue integer, intent(out), optional :: rc ! ! !DESCRIPTION: ! \label{api:DynamicMaskSetR4R4R4V} ! Set an {\tt ESMF\_DynamicMask} object suitable for ! destination element typekind {\tt ESMF\_TYPEKIND\_R4}, ! factor typekind {\tt ESMF\_TYPEKIND\_R4}, and ! source element typekind {\tt ESMF\_TYPEKIND\_R4}. ! ! All values in {\tt dynamicMask} will be reset by this call. ! ! See section \ref{RH:DynMask} for a general discussion of dynamic masking. ! ! The arguments are: ! \begin{description} ! \item[dynamicMask] ! DynamicMask object. ! \item [dynamicMaskRoutine] ! The routine responsible for handling dynamically masked source and ! destination elements. See section \ref{RH:DynMask} for the precise ! definition of the {\tt dynamicMaskRoutine} procedure interface. ! The routine is only called on PETs where {\em at least one} interpolation ! element is identified for special handling. ! \item [{[handleAllElements]}] ! If set to {\tt .true.}, all local elements, regardless of their dynamic ! masking status, are made available to {\tt dynamicMaskRoutine} for ! handling. This option can be used to implement fully customized ! interpolations based on the information provided by ESMF. ! The default is {\tt .false.}, meaning that only elements affected by ! dynamic masking will be handed to {\tt dynamicMaskRoutine}. ! \item [{[dynamicSrcMaskValue]}] ! The value for which a source element is considered dynamically ! masked. ! The default is to {\em not} consider any source elements as ! dynamically masked. ! \item [{[dynamicDstMaskValue]}] ! The value for which a destination element is considered dynamically ! masked. ! The default is to {\em not} consider any destination elements as ! dynamically masked. ! \item[{[rc]}] ! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. ! \end{description} ! !EOP !------------------------------------------------------------------------------ integer :: localrc ! local return code integer :: dimCount ! initialize return code; assume routine not implemented localrc = ESMF_RC_NOT_IMPL if (present(rc)) rc = ESMF_RC_NOT_IMPL ! mark output as uninitialized ESMF_INIT_SET_DELETED(dynamicMask) ! set the internals dynamicMask%typeKey = "R4R4R4V" dynamicMask%dmsR4R4R4V%typeKey = dynamicMask%typeKey dynamicMask%dmsR4R4R4V%routine => dynamicMaskRoutine dynamicMask%dmsR4R4R4V%dynamicSrcMaskIsPresent = present(dynamicSrcMaskValue) if (present(dynamicSrcMaskValue)) & dynamicMask%dmsR4R4R4V%dynamicSrcMaskValue = dynamicSrcMaskValue dynamicMask%dmsR4R4R4V%dynamicDstMaskIsPresent = present(dynamicDstMaskValue) if (present(dynamicDstMaskValue)) & dynamicMask%dmsR4R4R4V%dynamicDstMaskValue = dynamicDstMaskValue if (present(handleAllElements)) then dynamicMask%dmsR4R4R4V%handleAllElements = handleAllElements else dynamicMask%dmsR4R4R4V%handleAllElements = .false. ! default endif ! mark output as successfully initialized ESMF_INIT_SET_DEFINED(dynamicMask) ! return successfully if (present(rc)) rc = ESMF_SUCCESS end subroutine ESMF_DynamicMaskSetR4R4R4V