ESMF_LocStreamGetNumLocal Subroutine

private subroutine ESMF_LocStreamGetNumLocal(locstream, localCount, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_LocStream), intent(in) :: locstream
integer, intent(out) :: localCount
integer, intent(out), optional :: rc

Calls

proc~~esmf_locstreamgetnumlocal~~CallsGraph proc~esmf_locstreamgetnumlocal ESMF_LocStreamGetNumLocal c_esmc_locstreamgetelbnd c_esmc_locstreamgetelbnd proc~esmf_locstreamgetnumlocal->c_esmc_locstreamgetelbnd c_esmc_locstreamgeteubnd c_esmc_locstreamgeteubnd proc~esmf_locstreamgetnumlocal->c_esmc_locstreamgeteubnd proc~esmf_imerr ESMF_IMErr proc~esmf_locstreamgetnumlocal->proc~esmf_imerr proc~esmf_locstreamget ESMF_LocStreamGet proc~esmf_locstreamgetnumlocal->proc~esmf_locstreamget proc~esmf_locstreamgetinit ESMF_LocStreamGetInit proc~esmf_locstreamgetnumlocal->proc~esmf_locstreamgetinit proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_locstreamgetnumlocal->proc~esmf_logfounderror proc~esmf_imerr->proc~esmf_logfounderror proc~esmf_initcheckdeep ESMF_InitCheckDeep proc~esmf_imerr->proc~esmf_initcheckdeep proc~esmf_locstreamget->proc~esmf_imerr proc~esmf_locstreamget->proc~esmf_locstreamgetinit proc~esmf_locstreamget->proc~esmf_logfounderror interface~esmf_distgridget ESMF_DistGridGet proc~esmf_locstreamget->interface~esmf_distgridget proc~esmf_delayoutget ESMF_DELayoutGet proc~esmf_locstreamget->proc~esmf_delayoutget proc~esmf_getname ESMF_GetName proc~esmf_locstreamget->proc~esmf_getname proc~esmf_logseterror ESMF_LogSetError proc~esmf_locstreamget->proc~esmf_logseterror 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_distgridgetdefault ESMF_DistGridGetDefault interface~esmf_distgridget->proc~esmf_distgridgetdefault proc~esmf_distgridgetplocalde ESMF_DistGridGetPLocalDe interface~esmf_distgridget->proc~esmf_distgridgetplocalde proc~esmf_distgridgetplocaldepdim ESMF_DistGridGetPLocalDePDim interface~esmf_distgridget->proc~esmf_distgridgetplocaldepdim proc~esmf_delayoutget->proc~esmf_imerr proc~esmf_delayoutget->proc~esmf_logfounderror proc~esmf_delayoutget->proc~esmf_logwrite c_esmc_delayoutget c_esmc_delayoutget proc~esmf_delayoutget->c_esmc_delayoutget interface~esmf_interarraycreate ESMF_InterArrayCreate proc~esmf_delayoutget->interface~esmf_interarraycreate proc~esmf_delayoutgetinit ESMF_DELayoutGetInit proc~esmf_delayoutget->proc~esmf_delayoutgetinit proc~esmf_interarraydestroy ESMF_InterArrayDestroy proc~esmf_delayoutget->proc~esmf_interarraydestroy proc~esmf_vmsetinitcreated ESMF_VMSetInitCreated proc~esmf_delayoutget->proc~esmf_vmsetinitcreated interface~c_esmc_getname c_ESMC_GetName proc~esmf_getname->interface~c_esmc_getname c_esmc_loggeterrormsg c_esmc_loggeterrormsg proc~esmf_logrc2msg->c_esmc_loggeterrormsg proc~esmf_logseterror->esmf_breakpoint proc~esmf_logseterror->proc~esmf_logrc2msg proc~esmf_logseterror->proc~esmf_logwrite 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

Called by

proc~~esmf_locstreamgetnumlocal~~CalledByGraph proc~esmf_locstreamgetnumlocal ESMF_LocStreamGetNumLocal proc~esmf_locstreamcreatebybkgmesh ESMF_LocStreamCreateByBkgMesh proc~esmf_locstreamcreatebybkgmesh->proc~esmf_locstreamgetnumlocal interface~esmf_locstreamcreate ESMF_LocStreamCreate interface~esmf_locstreamcreate->proc~esmf_locstreamcreatebybkgmesh

Source Code

      subroutine ESMF_LocStreamGetNumLocal(locstream, localCount, rc)

!
! !ARGUMENTS:
      type(ESMF_LocStream), intent(in)                :: locstream
      integer,              intent(out)               :: localCount
      integer,              intent(out),  optional    :: rc
!
! !DESCRIPTION:
!    Get number of local entries.
!
!     The arguments are:
!     \begin{description}
!      \item[locstream]
!          Location stream from which the new location stream is to be created
!      \item[localCount]
!          Number of local entries.
!      \item[{[rc]}]
!          Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
!     \end{description}
!
!EOPI
      type(ESMF_LocStreamType), pointer :: lstypep
      type(ESMF_DistGrid) :: distgrid
      integer :: localrc
      integer :: localDECount, lDE
      integer :: tmpLBnd, tmpUBnd

! Initialize return code; assume failure until success is certain
      if (present(rc)) rc = ESMF_RC_NOT_IMPL

      ! Check Variables
      ESMF_INIT_CHECK_DEEP(ESMF_LocStreamGetInit,locstream,rc)

      
      ! Get number of localDEs
      call ESMF_LocStreamGet(locstream, localDECount=localDECount, rc=localrc)
      if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & 
            ESMF_CONTEXT, rcToReturn=rc)) return

      ! Get locstream internal pointer
      lstypep=>locstream%lstypep


      ! Loop through DEs and total up number of entries
      localCount=0
      do lDE=0,localDECount-1
         call c_ESMC_locstreamgetelbnd(lstypep%distgrid, lDE, lstypep%indexflag, & 
                 tmpLBnd, localrc)
         if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & 
               ESMF_CONTEXT, rcToReturn=rc)) return

         call c_ESMC_locstreamgeteubnd(lstypep%distgrid, lDE, lstypep%indexflag, & 
                 tmpUBnd, localrc)
         if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & 
               ESMF_CONTEXT, rcToReturn=rc)) return

         localCount = localCount + (tmpUBnd-tmpLBnd+1)
      enddo


      ! return success
      if (present(rc)) rc = ESMF_SUCCESS

      end subroutine ESMF_LocStreamGetNumLocal