f_esmf_getmeshdistgrid Subroutine

subroutine f_esmf_getmeshdistgrid(distgridPtr, count, indices, rc)

Uses

  • proc~~f_esmf_getmeshdistgrid~~UsesGraph proc~f_esmf_getmeshdistgrid f_esmf_getmeshdistgrid module~esmf_basemod ESMF_BaseMod proc~f_esmf_getmeshdistgrid->module~esmf_basemod module~esmf_distgridmod ESMF_DistGridMod proc~f_esmf_getmeshdistgrid->module~esmf_distgridmod module~esmf_logerrmod ESMF_LogErrMod proc~f_esmf_getmeshdistgrid->module~esmf_logerrmod module~esmf_utiltypesmod ESMF_UtilTypesMod proc~f_esmf_getmeshdistgrid->module~esmf_utiltypesmod module~esmf_basemod->module~esmf_logerrmod module~esmf_basemod->module~esmf_utiltypesmod iso_c_binding iso_c_binding module~esmf_basemod->iso_c_binding module~esmf_initmacrosmod ESMF_InitMacrosMod module~esmf_basemod->module~esmf_initmacrosmod module~esmf_ioutilmod ESMF_IOUtilMod module~esmf_basemod->module~esmf_ioutilmod module~esmf_vmmod ESMF_VMMod module~esmf_basemod->module~esmf_vmmod module~esmf_distgridmod->module~esmf_basemod module~esmf_distgridmod->module~esmf_logerrmod module~esmf_distgridmod->module~esmf_utiltypesmod module~esmf_delayoutmod ESMF_DELayoutMod module~esmf_distgridmod->module~esmf_delayoutmod module~esmf_distgridconnectionmod ESMF_DistGridConnectionMod module~esmf_distgridmod->module~esmf_distgridconnectionmod module~esmf_distgridregdecompmod ESMF_DistGridRegDecompMod module~esmf_distgridmod->module~esmf_distgridregdecompmod module~esmf_f90interfacemod ESMF_F90InterfaceMod module~esmf_distgridmod->module~esmf_f90interfacemod module~esmf_distgridmod->module~esmf_initmacrosmod module~esmf_distgridmod->module~esmf_ioutilmod module~esmf_distgridmod->module~esmf_vmmod module~esmf_logerrmod->module~esmf_utiltypesmod module~esmf_logerrmod->module~esmf_ioutilmod module~esmf_utilstringmod ESMF_UtilStringMod module~esmf_logerrmod->module~esmf_utilstringmod module~esmf_utiltypesmod->iso_c_binding module~esmf_delayoutmod->module~esmf_basemod module~esmf_delayoutmod->module~esmf_logerrmod module~esmf_delayoutmod->module~esmf_utiltypesmod module~esmf_delayoutmod->module~esmf_f90interfacemod module~esmf_delayoutmod->module~esmf_initmacrosmod module~esmf_delayoutmod->module~esmf_ioutilmod module~esmf_delayoutmod->module~esmf_vmmod module~esmf_distgridconnectionmod->module~esmf_logerrmod module~esmf_distgridconnectionmod->module~esmf_utiltypesmod module~esmf_distgridconnectionmod->module~esmf_f90interfacemod module~esmf_distgridconnectionmod->module~esmf_initmacrosmod module~esmf_distgridregdecompmod->module~esmf_logerrmod module~esmf_distgridregdecompmod->module~esmf_utiltypesmod module~esmf_distgridregdecompmod->module~esmf_f90interfacemod module~esmf_distgridregdecompmod->module~esmf_initmacrosmod module~esmf_distgridregdecompmod->module~esmf_vmmod module~esmf_f90interfacemod->module~esmf_logerrmod module~esmf_f90interfacemod->module~esmf_utiltypesmod module~esmf_initmacrosmod->module~esmf_logerrmod module~esmf_initmacrosmod->module~esmf_utiltypesmod module~esmf_ioutilmod->module~esmf_utiltypesmod module~esmf_vmmod->module~esmf_logerrmod module~esmf_vmmod->module~esmf_utiltypesmod module~esmf_vmmod->iso_c_binding module~esmf_vmmod->module~esmf_f90interfacemod module~esmf_vmmod->module~esmf_initmacrosmod module~esmf_vmmod->module~esmf_ioutilmod

Arguments

Type IntentOptional Attributes Name
type(ESMF_Pointer) :: distgridPtr
integer, intent(in) :: count
integer, intent(inout) :: indices(count)
integer, intent(out) :: rc

Calls

proc~~f_esmf_getmeshdistgrid~~CallsGraph proc~f_esmf_getmeshdistgrid f_esmf_getmeshdistgrid interface~esmf_distgridcreate ESMF_DistGridCreate proc~f_esmf_getmeshdistgrid->interface~esmf_distgridcreate proc~esmf_distgridgetthis ESMF_DistGridGetThis proc~f_esmf_getmeshdistgrid->proc~esmf_distgridgetthis proc~esmf_logfounderror ESMF_LogFoundError proc~f_esmf_getmeshdistgrid->proc~esmf_logfounderror proc~esmf_distgridcreatedb ESMF_DistGridCreateDB interface~esmf_distgridcreate->proc~esmf_distgridcreatedb proc~esmf_distgridcreatedbai ESMF_DistGridCreateDBAI interface~esmf_distgridcreate->proc~esmf_distgridcreatedbai proc~esmf_distgridcreatedbai1d ESMF_DistGridCreateDBAI1D interface~esmf_distgridcreate->proc~esmf_distgridcreatedbai1d proc~esmf_distgridcreatedbai1d1de ESMF_DistGridCreateDBAI1D1DE interface~esmf_distgridcreate->proc~esmf_distgridcreatedbai1d1de proc~esmf_distgridcreatedbai1d1dei8 ESMF_DistGridCreateDBAI1D1DEI8 interface~esmf_distgridcreate->proc~esmf_distgridcreatedbai1d1dei8 proc~esmf_distgridcreatedbf ESMF_DistGridCreateDBF interface~esmf_distgridcreate->proc~esmf_distgridcreatedbf proc~esmf_distgridcreatedbt ESMF_DistGridCreateDBT interface~esmf_distgridcreate->proc~esmf_distgridcreatedbt proc~esmf_distgridcreatedbtf ESMF_DistGridCreateDBTF interface~esmf_distgridcreate->proc~esmf_distgridcreatedbtf proc~esmf_distgridcreatedg ESMF_DistGridCreateDG interface~esmf_distgridcreate->proc~esmf_distgridcreatedg proc~esmf_distgridcreatedgt ESMF_DistGridCreateDGT interface~esmf_distgridcreate->proc~esmf_distgridcreatedgt proc~esmf_distgridcreaterd ESMF_DistGridCreateRD interface~esmf_distgridcreate->proc~esmf_distgridcreaterd proc~esmf_distgridcreaterdf ESMF_DistGridCreateRDF interface~esmf_distgridcreate->proc~esmf_distgridcreaterdf proc~esmf_distgridcreaterdt ESMF_DistGridCreateRDT interface~esmf_distgridcreate->proc~esmf_distgridcreaterdt proc~esmf_distgridcreaterdtf ESMF_DistGridCreateRDTF interface~esmf_distgridcreate->proc~esmf_distgridcreaterdtf 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

Source Code

    subroutine f_esmf_getmeshdistgrid(distgridPtr, count, indices, rc)
      use ESMF_UtilTypesMod
      use ESMF_LogErrMod
      use ESMF_BaseMod
      use ESMF_DistGridMod

      implicit none

      type(ESMF_Pointer)     :: distgridPtr
      integer, intent(in)    :: count
      integer, intent(inout) :: indices(count)
      integer, intent(out)   :: rc

      integer :: localrc
      integer, allocatable :: indicesLocal(:)
      type(ESMF_DistGrid)    :: distgrid

      ! initialize return code; assume routine not implemented
      rc = ESMF_RC_NOT_IMPL

      allocate(indicesLocal(count))

      if (count > 0) then
        indicesLocal(1:count) = indices(1:count)
      endif

      ! Create the DistGrid
      distgrid = ESMF_DistGridCreate(indicesLocal, rc=localrc)
      if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) then
        deallocate(indicesLocal)  ! prevent memory leak when bailing
        return
      endif

      ! Get the pointer to the actual internal DistGrid object (vs. the F90 wrapper object)
      call ESMF_DistGridGetThis(distgrid, distgridPtr, rc=localrc)
      if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) then
        deallocate(indicesLocal)  ! prevent memory leak when bailing
        return
      endif

      ! clean up
      deallocate(indicesLocal)

      ! Return success
      rc = ESMF_SUCCESS

    end subroutine f_esmf_getmeshdistgrid