ESMF_SciCompDestroy Subroutine

public subroutine ESMF_SciCompDestroy(scicomp, keywordEnforcer, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_SciComp), intent(inout) :: scicomp
type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
integer, intent(out), optional :: rc

Calls

proc~~esmf_scicompdestroy~~CallsGraph proc~esmf_scicompdestroy ESMF_SciCompDestroy proc~esmf_basesetstatus ESMF_BaseSetStatus proc~esmf_scicompdestroy->proc~esmf_basesetstatus proc~esmf_compdestruct ESMF_CompDestruct proc~esmf_scicompdestroy->proc~esmf_compdestruct proc~esmf_imerr ESMF_IMErr proc~esmf_scicompdestroy->proc~esmf_imerr proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_scicompdestroy->proc~esmf_logfounderror proc~esmf_scicompgetinit ESMF_SciCompGetInit proc~esmf_scicompdestroy->proc~esmf_scicompgetinit proc~esmf_basesetstatus->proc~esmf_logfounderror c_esmc_basesetstatus c_esmc_basesetstatus proc~esmf_basesetstatus->c_esmc_basesetstatus proc~esmf_compdestruct->proc~esmf_logfounderror c_esmc_comptunneldestroy c_esmc_comptunneldestroy proc~esmf_compdestruct->c_esmc_comptunneldestroy c_esmc_ftabledestroy c_esmc_ftabledestroy proc~esmf_compdestruct->c_esmc_ftabledestroy c_esmc_methodtabledestroy c_esmc_methodtabledestroy proc~esmf_compdestruct->c_esmc_methodtabledestroy proc~esmf_basegetstatus ESMF_BaseGetStatus proc~esmf_compdestruct->proc~esmf_basegetstatus proc~esmf_compexecute ESMF_CompExecute proc~esmf_compdestruct->proc~esmf_compexecute proc~esmf_configdestroy ESMF_ConfigDestroy proc~esmf_compdestruct->proc~esmf_configdestroy proc~esmf_logfounddeallocerror ESMF_LogFoundDeallocError proc~esmf_compdestruct->proc~esmf_logfounddeallocerror proc~esmf_logseterror ESMF_LogSetError proc~esmf_compdestruct->proc~esmf_logseterror proc~esmf_vmplandestruct ESMF_VMPlanDestruct proc~esmf_compdestruct->proc~esmf_vmplandestruct proc~esmf_vmshutdown ESMF_VMShutdown proc~esmf_compdestruct->proc~esmf_vmshutdown proc~esmf_imerr->proc~esmf_logfounderror proc~esmf_initcheckdeep ESMF_InitCheckDeep proc~esmf_imerr->proc~esmf_initcheckdeep 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

Called by

proc~~esmf_scicompdestroy~~CalledByGraph proc~esmf_scicompdestroy ESMF_SciCompDestroy proc~f_esmf_scicompdestroy f_esmf_scicompdestroy proc~f_esmf_scicompdestroy->proc~esmf_scicompdestroy proc~testscicompnamedalias TestSciCompNamedAlias proc~testscicompnamedalias->proc~esmf_scicompdestroy program~esmf_scicompcreateutest ESMF_SciCompCreateUTest program~esmf_scicompcreateutest->proc~esmf_scicompdestroy program~esmf_scompex ESMF_SCompEx program~esmf_scompex->proc~esmf_scicompdestroy program~esmf_namedaliasutest ESMF_NamedAliasUTest program~esmf_namedaliasutest->proc~testscicompnamedalias

Source Code

  subroutine ESMF_SciCompDestroy(scicomp, keywordEnforcer, rc)
!
! !ARGUMENTS:
    type(ESMF_SciComp), intent(inout)           :: scicomp
type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
    integer,             intent(out),  optional :: rc
!
! !DESCRIPTION:
! Destroys an {\tt ESMF\_SciComp}, releasing the resources associated
! with the object.
!
! The arguments are:
! \begin{description}
! \item[scicomp]
!   Release all resources associated with this {\tt ESMF\_SciComp}
!   and mark the object as invalid.  It is an error to pass this
!   object into any other routines after being destroyed.
! \item[{[rc]}]
!   Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
! \end{description}
!
!EOP
!------------------------------------------------------------------------------
    integer :: localrc                       ! local error status

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

    ESMF_INIT_CHECK_DEEP(ESMF_SciCompGetInit,scicomp,rc)

    ! Check to see if already destroyed
    if (.not.associated(scicomp%compp)) then
      if (ESMF_LogFoundError(ESMF_RC_OBJ_BAD, &
        msg="SciComp not initialized or already destroyed", &
        ESMF_CONTEXT, rcTOReturn=rc)) return
    endif

    ! call Comp method
    call ESMF_CompDestruct(scicomp%compp, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcTOReturn=rc)) return

    ! mark object invalid
    call ESMF_BaseSetStatus(scicomp%compp%base, ESMF_STATUS_INVALID, &
      rc=localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcTOReturn=rc)) return

    ESMF_INIT_SET_DELETED(scicomp)

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

  end subroutine ESMF_SciCompDestroy