ESMF_InterArrayDestroy Subroutine

public recursive subroutine ESMF_InterArrayDestroy(array, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_InterArray), intent(inout) :: array
integer, intent(out), optional :: rc

Calls

proc~~esmf_interarraydestroy~~CallsGraph proc~esmf_interarraydestroy ESMF_InterArrayDestroy proc~esmf_logfounddeallocerror ESMF_LogFoundDeallocError proc~esmf_interarraydestroy->proc~esmf_logfounddeallocerror esmf_breakpoint esmf_breakpoint proc~esmf_logfounddeallocerror->esmf_breakpoint proc~esmf_logrc2msg ESMF_LogRc2Msg proc~esmf_logfounddeallocerror->proc~esmf_logrc2msg proc~esmf_logwrite ESMF_LogWrite proc~esmf_logfounddeallocerror->proc~esmf_logwrite 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

Called by

ESMF_ArrayBundleHaloStorewESMF_InterArrayDestroy
w
ESMF_ArrayBundleRedistStoreI4w
w
ESMF_ArrayBundleRedistStoreI8w
w
ESMF_ArrayBundleRedistStoreNFw
w
ESMF_ArrayBundleRedistStoreR4w
w
ESMF_ArrayBundleRedistStoreR8w
w
ESMF_ArrayBundleSMMStoreI4w
w
ESMF_ArrayBundleSMMStoreI8w
w
ESMF_ArrayBundleSMMStoreR4w
w
ESMF_ArrayBundleSMMStoreR8w
w
ESMF_ArrayHaloStorew
w
ESMF_ArrayRedistStoreI4w
w
ESMF_ArrayRedistStoreI4TPw
w
ESMF_ArrayRedistStoreI8w
w
ESMF_ArrayRedistStoreI8TPw
w
ESMF_ArrayRedistStoreNFw
w
ESMF_ArrayRedistStoreNFTPw
w
ESMF_ArrayRedistStoreR4w
w
ESMF_ArrayRedistStoreR4TPw
w
ESMF_ArrayRedistStoreR8w
w
ESMF_ArrayRedistStoreR8TPw
w
ESMF_ArraySetDefaultw
w
ESMF_ArraySMMStoreInd4I4w
w
ESMF_ArraySMMStoreInd4I4TPw
w
ESMF_ArraySMMStoreInd4I8w
w
ESMF_ArraySMMStoreInd4I8TPw
w
ESMF_ArraySMMStoreInd4R4w
w
ESMF_ArraySMMStoreInd4R4TPw
w
ESMF_ArraySMMStoreInd4R8w
w
ESMF_ArraySMMStoreInd4R8TPw
w
ESMF_ArraySMMStoreInd8I4w
w
ESMF_ArraySMMStoreInd8I4TPw
w
ESMF_ArraySMMStoreInd8I8w
w
ESMF_ArraySMMStoreInd8I8TPw
w
ESMF_ArraySMMStoreInd8R4w
w
ESMF_ArraySMMStoreInd8R4TPw
w
ESMF_ArraySMMStoreInd8R8w
w
ESMF_ArraySMMStoreInd8R8TPw
w
ESMF_DELayoutCreateDefaultw
w
ESMF_DELayoutCreateHintWeightsw
w
ESMF_DELayoutGetw
w
ESMF_DistGridConnectionIntw
w
ESMF_DistGridCreateDBw
w
ESMF_DistGridCreateDBAIw
w
ESMF_DistGridCreateDBAI1Dw
w
ESMF_DistGridCreateDBAI1D1DEw
w
ESMF_DistGridCreateDBAI1D1DEI8w
w
ESMF_DistGridCreateDBTw
w
ESMF_DistGridCreateDGw
w
ESMF_DistGridCreateDGTw
w
ESMF_DistGridCreateRDw
w
ESMF_DistGridCreateRDFw
w
ESMF_DistGridCreateRDTw
w
ESMF_DistGridGetDefaultw
w
ESMF_DistGridGetPLocalDew
w
ESMF_DistGridGetPLocalDePDimw
w
ESMF_DistGridSetDefaultw
w
ESMF_DistGridSetPLocalDew
w
ESMF_GridAddCoordArrayListw
w
ESMF_GridAddCoordNoValuesw
w
ESMF_GridAddItemNoValuesw
w
ESMF_GridConvertIndexw
w
ESMF_GridCreateFrmDistGridw
w
ESMF_GridCreateFrmDistGridArbw
w
ESMF_GridGetCoord1DR4w
w
ESMF_GridGetCoord1DR8w
w
ESMF_GridGetCoord2DR4w
w
ESMF_GridGetCoord2DR8w
w
ESMF_GridGetCoord3DR4w
w
ESMF_GridGetCoord3DR8w
w
ESMF_GridGetCoordBoundsw
w
ESMF_GridGetDefaultw
w
ESMF_GridGetIndexw
w
ESMF_GridGetItem1DI4w
w
ESMF_GridGetItem1DR4w
w
ESMF_GridGetItem1DR8w
w
ESMF_GridGetItem2DI4w
w
ESMF_GridGetItem2DR4w
w
ESMF_GridGetItem2DR8w
w
ESMF_GridGetItem3DI4w
w
ESMF_GridGetItem3DR4w
w
ESMF_GridGetItem3DR8w
w
ESMF_GridGetItemBoundsw
w
ESMF_GridGetPLocalDew
w
ESMF_GridGetPLocalDePSlocw
w
ESMF_GridGetPSlocw
w
ESMF_GridGetPSlocPTilew
w
ESMF_GridLUADefaultw
w
ESMF_GridSetFromDistGridw
w
ESMF_GridToMeshw
w
ESMF_MeshAddElementsw
w
ESMF_MeshAddNodesw
w
ESMF_MeshCreate1Partw
w
ESMF_MeshCreateEasyElemsGenw
w
ESMF_MeshGetw
w
ESMF_MeshSetw
w
ESMF_MeshTurnOnCellMaskw
w
ESMF_MeshTurnOnNodeMaskw
w
ESMF_PointListCreateFrmGridw
w
ESMF_PointListCreateFrmMeshw
w
ESMF_RouteHandleCreateRHw
w
ESMF_VMGetDefaultw
w
ESMF_VMTranslateVMIdw
w

Source Code

  recursive subroutine ESMF_InterArrayDestroy(array, rc)
!
! !ARGUMENTS:
    type(ESMF_InterArray), intent(inout)         :: array
    integer,                 intent(out), optional :: rc
!
!
! !DESCRIPTION:
!   Destroy an {\tt ESMF\_InterArray} object. Deallocate Fortran arrays
!   whose ownership was transferred to the InterArray object.
!
!   The arguments are:
!   \begin{description}
!   \item[array]
!     {\tt ESMF\_InterArray} object.
!   \item[{[rc]}]
!     Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
!   \end{description}
!
!EOPI
!------------------------------------------------------------------------------
    integer                 :: localrc      ! local return code
    integer                 :: stat         ! Fortran return code

    ! initialize return code; assume routine not implemented
    localrc = ESMF_RC_NOT_IMPL
    if (present(rc)) rc = ESMF_RC_NOT_IMPL

    ! deallocate Fortran arrays if ownership was transferred
    if (array%owner) then
      if (associated(array%farray1D)) then
        deallocate(array%farray1D, stat=stat)
        if (ESMF_LogFoundDeallocError(stat, msg="deallocating array%farray1D", &
          ESMF_CONTEXT)) &
          return  ! bail out
      endif
      if (associated(array%farray2D)) then
        deallocate(array%farray2D, stat=stat)
        if (ESMF_LogFoundDeallocError(stat, msg="deallocating array%farray2D", &
          ESMF_CONTEXT)) &
          return  ! bail out
      endif
      if (associated(array%farray3D)) then
        deallocate(array%farray3D, stat=stat)
        if (ESMF_LogFoundDeallocError(stat, msg="deallocating array%farray3D", &
          ESMF_CONTEXT)) &
          return  ! bail out
      endif
      if (associated(array%farray1DI8)) then
        deallocate(array%farray1DI8, stat=stat)
        if (ESMF_LogFoundDeallocError(stat, msg="deallocating array%farray1DI8", &
          ESMF_CONTEXT)) &
          return  ! bail out
      endif
      if (associated(array%farray2DI8)) then
        deallocate(array%farray2DI8, stat=stat)
        if (ESMF_LogFoundDeallocError(stat, msg="deallocating array%farray2DI8", &
          ESMF_CONTEXT)) &
          return  ! bail out
      endif
      if (associated(array%farray3DI8)) then
        deallocate(array%farray3DI8, stat=stat)
        if (ESMF_LogFoundDeallocError(stat, msg="deallocating array%farray3DI8", &
          ESMF_CONTEXT)) &
          return  ! bail out
      endif

      if (associated(array%farray1DR8)) then
        deallocate(array%farray1DR8, stat=stat)
        if (ESMF_LogFoundDeallocError(stat, msg="deallocating array%farray1DR8", &
          ESMF_CONTEXT)) &
          return  ! bail out
      endif
      if (associated(array%farray2DR8)) then
        deallocate(array%farray2DR8, stat=stat)
        if (ESMF_LogFoundDeallocError(stat, msg="deallocating array%farray2DR8", &
          ESMF_CONTEXT)) &
          return  ! bail out
      endif
      if (associated(array%farray3DR8)) then
        deallocate(array%farray3DR8, stat=stat)
        if (ESMF_LogFoundDeallocError(stat, msg="deallocating array%farray3DR8", &
          ESMF_CONTEXT)) &
          return  ! bail out
      endif
    endif

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

  end subroutine ESMF_InterArrayDestroy