Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_GridComp) | :: | IOComp | ||||
type(ESMF_KeywordEnforcer), | optional | :: | keywordEnforcer | |||
integer, | intent(out), | optional | :: | rc |
subroutine ESMFIO_Destroy(IOComp, keywordEnforcer, rc) type(ESMF_GridComp) :: IOComp type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below integer, intent(out), optional :: rc ! -- local variables integer :: localrc integer :: localDe type(ioWrapper) :: is ! -- begin if (present(rc)) rc = ESMF_SUCCESS if (ESMF_GridCompIsCreated(IOComp)) then call ESMF_GridCompGetInternalState(IOComp, is, localrc) if (ESMF_LogFoundError(rcToCheck=localrc, ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return ! bail out if (associated(is % IO)) then if (associated(is % IO % IOLayout)) then do localDe = 0, size(is % IO % IOLayout) - 1 if (ESMF_GridCompIsCreated(is % IO % IOLayout(localDe) % taskComp)) then call ESMF_GridCompDestroy(is % IO % IOLayout(localDe) % taskComp, rc=localrc) if (ESMF_LogFoundError(rcToCheck=localrc, ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return ! bail out end if end do deallocate(is % IO % IOLayout, stat=localrc) if (ESMF_LogFoundDeallocError(statusToCheck=localrc, ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return ! bail out nullify(is % IO % IOLayout) call ESMF_GridCompDestroy(IOComp, rc=localrc) if (ESMF_LogFoundError(rcToCheck=localrc, ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return ! bail out end if nullify(is % IO) end if end if end subroutine ESMFIO_Destroy