ESMF_LocStreamDestruct Subroutine

public subroutine ESMF_LocStreamDestruct(lstypep, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_LocStreamType), pointer :: lstypep
integer, intent(out), optional :: rc

Calls

proc~~esmf_locstreamdestruct~~CallsGraph proc~esmf_locstreamdestruct ESMF_LocStreamDestruct esmf_arraydestroy esmf_arraydestroy proc~esmf_locstreamdestruct->esmf_arraydestroy proc~esmf_basegetstatus ESMF_BaseGetStatus proc~esmf_locstreamdestruct->proc~esmf_basegetstatus proc~esmf_basesetstatus ESMF_BaseSetStatus proc~esmf_locstreamdestruct->proc~esmf_basesetstatus proc~esmf_distgriddestroy ESMF_DistGridDestroy proc~esmf_locstreamdestruct->proc~esmf_distgriddestroy proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_locstreamdestruct->proc~esmf_logfounderror proc~esmf_basegetstatus->proc~esmf_logfounderror c_esmc_basegetstatus c_esmc_basegetstatus proc~esmf_basegetstatus->c_esmc_basegetstatus proc~esmf_basesetstatus->proc~esmf_logfounderror c_esmc_basesetstatus c_esmc_basesetstatus proc~esmf_basesetstatus->c_esmc_basesetstatus proc~esmf_distgriddestroy->proc~esmf_logfounderror c_esmc_distgriddestroy c_esmc_distgriddestroy proc~esmf_distgriddestroy->c_esmc_distgriddestroy proc~esmf_distgridgetinit ESMF_DistGridGetInit proc~esmf_distgriddestroy->proc~esmf_distgridgetinit proc~esmf_imerr ESMF_IMErr proc~esmf_distgriddestroy->proc~esmf_imerr 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 proc~esmf_imerr->proc~esmf_logfounderror proc~esmf_initcheckdeep ESMF_InitCheckDeep proc~esmf_imerr->proc~esmf_initcheckdeep 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_locstreamdestruct~~CalledByGraph proc~esmf_locstreamdestruct ESMF_LocStreamDestruct proc~esmf_locstreamdestroy ESMF_LocStreamDestroy proc~esmf_locstreamdestroy->proc~esmf_locstreamdestruct proc~f_esmf_locstreamcollectgarbage f_esmf_locstreamcollectgarbage proc~f_esmf_locstreamcollectgarbage->proc~esmf_locstreamdestruct proc~esmf_fielddestructgeom ESMF_FieldDestructGeom proc~esmf_fielddestructgeom->proc~esmf_locstreamdestroy proc~f_esmf_locstreamdestroy f_esmf_locstreamdestroy proc~f_esmf_locstreamdestroy->proc~esmf_locstreamdestroy proc~test_locstreambkg test_locstreambkg proc~test_locstreambkg->proc~esmf_locstreamdestroy proc~test_locstreambkgnda test_locstreambkgnda proc~test_locstreambkgnda->proc~esmf_locstreamdestroy proc~test_locstreambkgsph test_locstreambkgsph proc~test_locstreambkgsph->proc~esmf_locstreamdestroy proc~test_nearest2dcartlstols test_Nearest2DCartLSToLS proc~test_nearest2dcartlstols->proc~esmf_locstreamdestroy proc~test_nearest3dcartlstols test_Nearest3DCartLSToLS proc~test_nearest3dcartlstols->proc~esmf_locstreamdestroy proc~test_patchmeshtolocstreammask test_PatchMeshToLocStreamMask proc~test_patchmeshtolocstreammask->proc~esmf_locstreamdestroy proc~test_pointlist_from_locstream_nomask test_pointlist_from_locStream_nomask proc~test_pointlist_from_locstream_nomask->proc~esmf_locstreamdestroy proc~test_pointlist_from_locstream_wmask test_pointlist_from_locStream_wmask proc~test_pointlist_from_locstream_wmask->proc~esmf_locstreamdestroy proc~test_regridgridtogml test_regridGridToGML proc~test_regridgridtogml->proc~esmf_locstreamdestroy proc~test_regridgridtolocstream3d test_regridGridToLocStream3d proc~test_regridgridtolocstream3d->proc~esmf_locstreamdestroy proc~test_regridgridtolocstreamloccnt test_regridGridToLocStreamLocCnt proc~test_regridgridtolocstreamloccnt->proc~esmf_locstreamdestroy proc~test_regridgridtolocstreamregdist test_regridGridToLocStreamRegDist proc~test_regridgridtolocstreamregdist->proc~esmf_locstreamdestroy proc~test_regridmeshtolocstreammask test_regridMeshToLocStreamMask proc~test_regridmeshtolocstreammask->proc~esmf_locstreamdestroy proc~test_regridnearestlocstream_wclustertomesh test_regridNearestLocStream_wClusterToMesh proc~test_regridnearestlocstream_wclustertomesh->proc~esmf_locstreamdestroy proc~test_regridnearestlocstreamtogrid test_regridNearestLocStreamToGrid proc~test_regridnearestlocstreamtogrid->proc~esmf_locstreamdestroy proc~test_regridnearestlocstreamtolocstream test_regridNearestLocStreamToLocStream proc~test_regridnearestlocstreamtolocstream->proc~esmf_locstreamdestroy proc~user_final~18 user_final proc~user_final~18->proc~esmf_locstreamdestroy proc~user_final~24 user_final proc~user_final~24->proc~esmf_locstreamdestroy proc~user_final~28 user_final proc~user_final~28->proc~esmf_locstreamdestroy proc~user_final~48 user_final proc~user_final~48->proc~esmf_locstreamdestroy proc~user_final~77 user_final proc~user_final~77->proc~esmf_locstreamdestroy proc~user_final~84 user_final proc~user_final~84->proc~esmf_locstreamdestroy program~esmf_fieldcreateex ESMF_FieldCreateEx program~esmf_fieldcreateex->proc~esmf_locstreamdestroy program~esmf_infosyncutest ESMF_InfoSyncUTest program~esmf_infosyncutest->proc~esmf_locstreamdestroy program~esmf_locstreamcreateutest ESMF_LocStreamCreateUTest program~esmf_locstreamcreateutest->proc~esmf_locstreamdestroy program~esmf_locstreamcreateutest->proc~test_locstreambkg program~esmf_locstreamcreateutest->proc~test_locstreambkgnda program~esmf_locstreamcreateutest->proc~test_locstreambkgsph program~esmf_locstreamex ESMF_LocStreamEx program~esmf_locstreamex->proc~esmf_locstreamdestroy program~esmf_pointlistutest ESMF_PointListUTest program~esmf_pointlistutest->proc~test_pointlist_from_locstream_nomask program~esmf_pointlistutest->proc~test_pointlist_from_locstream_wmask

Source Code

      subroutine ESMF_LocStreamDestruct(lstypep,rc)
!
! !ARGUMENTS:
      type (ESMF_LocStreamType), pointer :: lstypep
      integer, intent(out), optional               :: rc
!
! !DESCRIPTION:
!     Destruct an {\tt ESMF\_LocStream} object and all appropriate 
!     internal structures.
!
!     The arguments are:
!     \begin{description}
!     \item[lstypep]
!          locstream to destruct
!     \item[{[rc]}]
!          Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
!   \end{description}
!
!EOPI

      integer :: localrc  ! Error status
      integer :: i 
      type(ESMF_Status) :: status

      ! Initialize return code; assume failure until success is certain
      if (present(rc)) rc = ESMF_RC_NOT_IMPL

      call ESMF_BaseGetStatus(lstypep%base, status, rc=localrc)
      if (ESMF_LogFoundError(localrc, &
        ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return
        
      if (status .eq. ESMF_STATUS_READY) then  
        
        ! Destroy  key Arrays
        do i=1,lstypep%keyCount
          if (lstypep%destroyKeys(i)) then
             call ESMF_ArrayDestroy(lstypep%keys(i), rc=localrc)       
             if (ESMF_LogFoundError(localrc, &
                                ESMF_ERR_PASSTHRU, &
                                ESMF_CONTEXT, rcToReturn=rc)) return
          endif
        enddo


        ! destroy distgrid
        if (lstypep%destroyDistGrid) then
         !! destroy distgrid
         call ESMF_DistGridDestroy(lstypep%distgrid, rc=localrc)       
         if (ESMF_LogFoundError(localrc, &
                                ESMF_ERR_PASSTHRU, &
                                ESMF_CONTEXT, rcToReturn=rc)) return
        endif

        ! Deallocate space for key data (if its been allocated)
        if (lstypep%keyCount .gt. 0) then
          deallocate (lstypep%keyNames)
          deallocate (lstypep%keyUnits)
          deallocate (lstypep%keyLongNames)
          deallocate( lstypep%keys)
          deallocate( lstypep%destroyKeys)
        endif
        
      endif

      ! mark object invalid
      call ESMF_BaseSetStatus(lstypep%base, ESMF_STATUS_INVALID, rc=localrc)
      if (ESMF_LogFoundError(localrc, &
                                ESMF_ERR_PASSTHRU, &
                                ESMF_CONTEXT, rcToReturn=rc)) return
                                
      ! return successfully
      if (present(rc)) rc = ESMF_SUCCESS

      end subroutine ESMF_LocStreamDestruct