Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_VM), | intent(in) | :: | vm | |||
type(ESMF_VMId), | intent(inout), | target | :: | bcstData(:) | ||
integer, | intent(in) | :: | count | |||
integer, | intent(in) | :: | rootPet | |||
type(ESMF_Sync_Flag), | intent(in), | optional | :: | syncflag | ||
type(ESMF_CommHandle), | intent(out), | optional | :: | commhandle | ||
integer, | intent(out), | optional | :: | rc |
subroutine ESMF_VMBcastVMId(vm, bcstData, count, rootPet, syncflag, & commhandle, rc) ! ! !ARGUMENTS: type(ESMF_VM), intent(in) :: vm type(ESMF_VMId), target, intent(inout) :: bcstData(:) integer, intent(in) :: count integer, intent(in) :: rootPet type(ESMF_Sync_Flag), intent(in), optional :: syncflag type(ESMF_CommHandle), intent(out), optional :: commhandle integer, intent(out), optional :: rc ! !EOPI !------------------------------------------------------------------------------ integer :: localrc ! local return code integer :: mypet, npets integer :: i, k logical :: blocking ! initialize return code; assume routine not implemented localrc = ESMF_RC_NOT_IMPL if (present(rc)) rc = ESMF_RC_NOT_IMPL ! Check init status of arguments ESMF_INIT_CHECK_DEEP(ESMF_VMGetInit, vm, rc) ! Initialize commhandle to an invalid pointer if (present(commhandle)) commhandle%this = ESMF_NULL_POINTER ! Decide whether this is blocking or non-blocking blocking = .true. !default is blocking if (present(syncflag)) then if (syncflag == ESMF_SYNC_NONBLOCKING) blocking = .false. ! non-blocking endif ! Not implemented features if (.not. blocking) then call ESMF_LogSetError(ESMF_RC_NOT_IMPL, & msg="non-blocking mode not yet implemented", & ESMF_CONTEXT, rcToReturn=rc) return endif if (count > 0) then call c_ESMC_VMBcastVMId (vm, bcstData, count, rootPet, localrc) if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return endif ! return successfully if (present(rc)) rc = ESMF_SUCCESS end subroutine ESMF_VMBcastVMId