ESMFIO_Destroy Subroutine

public subroutine ESMFIO_Destroy(IOComp, keywordEnforcer, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_GridComp) :: IOComp
type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
integer, intent(out), optional :: rc

Calls

proc~~esmfio_destroy~~CallsGraph proc~esmfio_destroy ESMFIO_Destroy esmf_gridcompgetinternalstate esmf_gridcompgetinternalstate proc~esmfio_destroy->esmf_gridcompgetinternalstate proc~esmf_gridcompdestroy ESMF_GridCompDestroy proc~esmfio_destroy->proc~esmf_gridcompdestroy proc~esmf_gridcompiscreated ESMF_GridCompIsCreated proc~esmfio_destroy->proc~esmf_gridcompiscreated proc~esmf_logfounddeallocerror ESMF_LogFoundDeallocError proc~esmfio_destroy->proc~esmf_logfounddeallocerror proc~esmf_logfounderror ESMF_LogFoundError proc~esmfio_destroy->proc~esmf_logfounderror proc~esmf_gridcompdestroy->proc~esmf_logfounderror proc~esmf_basesetstatus ESMF_BaseSetStatus proc~esmf_gridcompdestroy->proc~esmf_basesetstatus proc~esmf_compdestruct ESMF_CompDestruct proc~esmf_gridcompdestroy->proc~esmf_compdestruct proc~esmf_compisdualconnected ESMF_CompIsDualConnected proc~esmf_gridcompdestroy->proc~esmf_compisdualconnected proc~esmf_gridcompgetinit ESMF_GridCompGetInit proc~esmf_gridcompdestroy->proc~esmf_gridcompgetinit proc~esmf_imerr ESMF_IMErr proc~esmf_gridcompdestroy->proc~esmf_imerr proc~esmf_logseterror ESMF_LogSetError proc~esmf_gridcompdestroy->proc~esmf_logseterror proc~esmf_gridcompiscreated->proc~esmf_gridcompgetinit 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 proc~esmf_logfounderror->esmf_breakpoint proc~esmf_logfounderror->proc~esmf_logrc2msg proc~esmf_logfounderror->proc~esmf_logwrite

Called by

proc~~esmfio_destroy~~CalledByGraph proc~esmfio_destroy ESMFIO_Destroy program~esmf_iocomputest ESMF_IOCompUTest program~esmf_iocomputest->proc~esmfio_destroy

Source Code

  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