ESMF_ConfigDestroy Subroutine

public subroutine ESMF_ConfigDestroy(config, keywordEnforcer, rc)

Arguments

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

Calls

proc~~esmf_configdestroy~~CallsGraph proc~esmf_configdestroy ESMF_ConfigDestroy proc~esmf_configgetinit ESMF_ConfigGetInit proc~esmf_configdestroy->proc~esmf_configgetinit proc~esmf_hconfigdestroy ESMF_HConfigDestroy proc~esmf_configdestroy->proc~esmf_hconfigdestroy proc~esmf_imerr ESMF_IMErr proc~esmf_configdestroy->proc~esmf_imerr proc~esmf_logfounddeallocerror ESMF_LogFoundDeallocError proc~esmf_configdestroy->proc~esmf_logfounddeallocerror proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_configdestroy->proc~esmf_logfounderror proc~esmf_hconfigdestroy->proc~esmf_imerr proc~esmf_hconfigdestroy->proc~esmf_logfounderror c_esmc_hconfigdestroy c_esmc_hconfigdestroy proc~esmf_hconfigdestroy->c_esmc_hconfigdestroy proc~esmf_hconfiggetinit ESMF_HConfigGetInit proc~esmf_hconfigdestroy->proc~esmf_hconfiggetinit proc~esmf_imerr->proc~esmf_logfounderror proc~esmf_initcheckdeep ESMF_InitCheckDeep proc~esmf_imerr->proc~esmf_initcheckdeep 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 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

proc~~esmf_configdestroy~~CalledByGraph proc~esmf_configdestroy ESMF_ConfigDestroy proc~esmf_compdestruct ESMF_CompDestruct proc~esmf_compdestruct->proc~esmf_configdestroy proc~esmf_frameworkinternalinit ESMF_FrameworkInternalInit proc~esmf_frameworkinternalinit->proc~esmf_configdestroy proc~f_esmf_configdestroy f_esmf_configdestroy proc~f_esmf_configdestroy->proc~esmf_configdestroy proc~finalization Finalization proc~finalization->proc~esmf_configdestroy proc~read_descriptor_files read_descriptor_files proc~read_descriptor_files->proc~esmf_configdestroy proc~read_dist_specification read_dist_specification proc~read_dist_specification->proc~esmf_configdestroy proc~read_grid_specification read_grid_specification proc~read_grid_specification->proc~esmf_configdestroy proc~read_redistribution_grid read_redistribution_grid proc~read_grid_specification->proc~read_redistribution_grid proc~read_regridding_grid read_regridding_grid proc~read_grid_specification->proc~read_regridding_grid proc~read_redistribution_grid->proc~esmf_configdestroy proc~read_regridding_grid->proc~esmf_configdestroy proc~read_testharness_config Read_TestHarness_Config proc~read_testharness_config->proc~esmf_configdestroy proc~sections Sections proc~sections->proc~esmf_configdestroy program~esmf_config_test ESMF_Config_Test program~esmf_config_test->proc~esmf_configdestroy program~esmf_configoverviewex ESMF_ConfigOverviewEx program~esmf_configoverviewex->proc~esmf_configdestroy program~esmf_hconfigex ESMF_HConfigEx program~esmf_hconfigex->proc~esmf_configdestroy program~esmf_hconfigutest ESMF_HConfigUTest program~esmf_hconfigutest->proc~esmf_configdestroy proc~esmf_cplcompdestroy ESMF_CplCompDestroy proc~esmf_cplcompdestroy->proc~esmf_compdestruct proc~esmf_gridcompdestroy ESMF_GridCompDestroy proc~esmf_gridcompdestroy->proc~esmf_compdestruct proc~esmf_initialize ESMF_Initialize proc~esmf_initialize->proc~esmf_frameworkinternalinit proc~esmf_scicompdestroy ESMF_SciCompDestroy proc~esmf_scicompdestroy->proc~esmf_compdestruct proc~f_esmf_compcollectgarbage1 f_esmf_compcollectgarbage1 proc~f_esmf_compcollectgarbage1->proc~esmf_compdestruct proc~f_esmf_compcollectgarbage2 f_esmf_compcollectgarbage2 proc~f_esmf_compcollectgarbage2->proc~esmf_compdestruct proc~f_esmf_frameworkinitialize f_esmf_frameworkinitialize proc~f_esmf_frameworkinitialize->proc~esmf_frameworkinternalinit proc~read_testharness_specifier Read_TestHarness_Specifier proc~read_testharness_specifier->proc~read_descriptor_files proc~read_testharness_specifier->proc~read_dist_specification proc~read_testharness_specifier->proc~read_grid_specification program~esmf_test_harness esmf_test_harness program~esmf_test_harness->proc~read_testharness_config

Source Code

    subroutine ESMF_ConfigDestroy(config, keywordEnforcer, rc)

! !ARGUMENTS:
      type(ESMF_Config), intent(inout)          :: config
type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
      integer,           intent(out),  optional :: rc
!
!
! !STATUS:
! \begin{itemize}
! \item\apiStatusCompatibleVersion{5.2.0r}
! \end{itemize}
!
! !DESCRIPTION: 
!    Destroys the {\tt config} object.
!
!   The arguments are:
!   \begin{description}
!   \item [config]
!     Already created {\tt ESMF\_Config} object.
!   \item [{[rc]}]
!     Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
!   \end{description}
!
!EOP -------------------------------------------------------------------
      integer :: i, localrc
      integer :: memstat

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

      !check variables
      ESMF_INIT_CHECK_DEEP(ESMF_ConfigGetInit,config,rc)

      memstat = 0

      ! TODO: Absoft 9/Jazz bug necessitates this separate deallocate statement
      ! before the other (must be in reverse order of allocation)
      do, i=1, size (config%cptr%attr_used)
        if (associated (config%cptr%attr_used(i)%label)) then
          deallocate(config%cptr%attr_used(i)%label, stat=memstat)
          if (ESMF_LogFoundDeallocError(memstat, msg="Deallocating local buffer 3", &
                                     ESMF_CONTEXT, rcToReturn=rc)) return
        end if
      end do

      deallocate(config%cptr%attr_used, stat=memstat)
      if (ESMF_LogFoundDeallocError(memstat, msg="Deallocating local buffer 2", &
        ESMF_CONTEXT, rcToReturn=rc)) return

      deallocate(config%cptr%buffer, stat = memstat)
      if (ESMF_LogFoundDeallocError(memstat, msg="Deallocating local buffer 1", &
        ESMF_CONTEXT, rcToReturn=rc)) return

      if (config%cptr%hconfig_owner) then
        call ESMF_HConfigDestroy(config%cptr%hconfig, rc=localrc)
        if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU,  &
          ESMF_CONTEXT, rcToReturn=rc)) return
      endif

      deallocate(config%cptr, stat = memstat)
      if (ESMF_LogFoundDeallocError(memstat, msg="Deallocating config type", &
                                     ESMF_CONTEXT, rcToReturn=rc)) return
      nullify(config%cptr)

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

      ESMF_INIT_SET_DELETED(config)

     end subroutine ESMF_ConfigDestroy