RedistOnlyFromPet0 Subroutine

public subroutine RedistOnlyFromPet0(arrayPet0, array, rh, buffer, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_Array), intent(inout) :: arrayPet0
type(ESMF_Array), intent(inout) :: array
type(ESMF_RouteHandle), intent(inout) :: rh
real(kind=ESMF_KIND_R8), optional, pointer :: buffer(:)
integer, intent(out), optional :: rc

Calls

proc~~redistonlyfrompet0~~CallsGraph proc~redistonlyfrompet0 RedistOnlyFromPet0 esmf_arrayget esmf_arrayget proc~redistonlyfrompet0->esmf_arrayget proc~esmf_arrayredist ESMF_ArrayRedist proc~redistonlyfrompet0->proc~esmf_arrayredist proc~esmf_logfounderror ESMF_LogFoundError proc~redistonlyfrompet0->proc~esmf_logfounderror proc~esmf_arrayredist->proc~esmf_logfounderror c_esmc_arrayredist c_esmc_arrayredist proc~esmf_arrayredist->c_esmc_arrayredist esmf_arraygetinit esmf_arraygetinit proc~esmf_arrayredist->esmf_arraygetinit esmf_arraygetthis esmf_arraygetthis proc~esmf_arrayredist->esmf_arraygetthis esmf_arraysetthisnull esmf_arraysetthisnull proc~esmf_arrayredist->esmf_arraysetthisnull proc~esmf_imerr ESMF_IMErr proc~esmf_arrayredist->proc~esmf_imerr proc~esmf_routehandlegetinit ESMF_RouteHandleGetInit proc~esmf_arrayredist->proc~esmf_routehandlegetinit esmf_breakpoint esmf_breakpoint proc~esmf_logfounderror->esmf_breakpoint proc~esmf_logrc2msg ESMF_LogRc2Msg proc~esmf_logfounderror->proc~esmf_logrc2msg proc~esmf_logwrite ESMF_LogWrite proc~esmf_logfounderror->proc~esmf_logwrite proc~esmf_imerr->proc~esmf_logfounderror proc~esmf_initcheckdeep ESMF_InitCheckDeep proc~esmf_imerr->proc~esmf_initcheckdeep c_esmc_loggeterrormsg c_esmc_loggeterrormsg proc~esmf_logrc2msg->c_esmc_loggeterrormsg c_esmc_vmwtime c_esmc_vmwtime proc~esmf_logwrite->c_esmc_vmwtime proc~esmf_logclose ESMF_LogClose proc~esmf_logwrite->proc~esmf_logclose proc~esmf_logflush ESMF_LogFlush proc~esmf_logwrite->proc~esmf_logflush proc~esmf_logopenfile ESMF_LogOpenFile proc~esmf_logwrite->proc~esmf_logopenfile proc~esmf_utiliounitflush ESMF_UtilIOUnitFlush proc~esmf_logwrite->proc~esmf_utiliounitflush proc~esmf_utilstring2array ESMF_UtilString2Array proc~esmf_logwrite->proc~esmf_utilstring2array proc~esmf_logclose->proc~esmf_logflush proc~esmf_logflush->proc~esmf_utiliounitflush proc~esmf_utilarray2string ESMF_UtilArray2String proc~esmf_logflush->proc~esmf_utilarray2string proc~esmf_logopenfile->proc~esmf_utiliounitflush proc~esmf_utiliounitget ESMF_UtilIOUnitGet proc~esmf_logopenfile->proc~esmf_utiliounitget

Source Code

subroutine RedistOnlyFromPet0(arrayPet0, array, rh, buffer, rc)

  type(ESMF_Array), intent(inout)    :: arrayPet0
  type(ESMF_Array), intent(inout)    :: array
  type(ESMF_RouteHandle), intent(inout) :: rh
  real(ESMF_KIND_R8),pointer, optional:: buffer(:)
  integer, intent(out),     optional :: rc

  real(ESMF_KIND_R8), pointer :: fptr1d(:)
  integer                     :: localrc

  if (present(rc)) rc=ESMF_SUCCESS
  
   ! Set the value at PET0 only   
   if (present(buffer)) then
      call ESMF_ArrayGet(arrayPet0, localDe=0, farrayPtr=fptr1d, rc=localrc)
      if (ESMF_LogFoundError(rcToCheck=localrc, ESMF_ERR_PASSTHRU, &
           ESMF_CONTEXT, rcToReturn=rc)) return  ! bail out
      fptr1d = buffer
   endif
   call ESMF_ArrayRedist(arrayPet0, array, rh, rc=localrc)
   if (ESMF_LogFoundError(rcToCheck=localrc, ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return  ! bail out

   return
end subroutine RedistOnlyFromPet0