getInfoGeom Function

private function getInfoGeom(self, target, keywordEnforcer, rc) result(info)

Type Bound

ESMF_InfoDescribe

Arguments

Type IntentOptional Attributes Name
class(ESMF_InfoDescribe), intent(in) :: self
type(ESMF_Geom), intent(in) :: target
type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
integer, intent(inout), optional :: rc

Return Value type(ESMF_Info)


Calls

proc~~getinfogeom~~CallsGraph proc~getinfogeom ESMF_InfoDescribe%getInfoGeom proc~esmf_geomget ESMF_GeomGet proc~getinfogeom->proc~esmf_geomget proc~esmf_geomgetinit ESMF_GeomGetInit proc~getinfogeom->proc~esmf_geomgetinit proc~esmf_imerr ESMF_IMErr proc~getinfogeom->proc~esmf_imerr proc~esmf_logfounderror ESMF_LogFoundError proc~getinfogeom->proc~esmf_logfounderror proc~esmf_logseterror ESMF_LogSetError proc~getinfogeom->proc~esmf_logseterror proc~getinfogrid ESMF_InfoDescribe%getInfoGrid proc~getinfogeom->proc~getinfogrid proc~getinfolocstream ESMF_InfoDescribe%getInfoLocStream proc~getinfogeom->proc~getinfolocstream proc~getinfomesh ESMF_InfoDescribe%getInfoMesh proc~getinfogeom->proc~getinfomesh proc~esmf_geomget->proc~esmf_geomgetinit proc~esmf_geomget->proc~esmf_imerr proc~esmf_geomget->proc~esmf_logfounderror interface~esmf_distgridget ESMF_DistGridGet proc~esmf_geomget->interface~esmf_distgridget interface~esmf_gridget ESMF_GridGet proc~esmf_geomget->interface~esmf_gridget interface~esmf_xgridget ESMF_XGridGet proc~esmf_geomget->interface~esmf_xgridget proc~esmf_delayoutget ESMF_DELayoutGet proc~esmf_geomget->proc~esmf_delayoutget proc~esmf_locstreamget ESMF_LocStreamGet proc~esmf_geomget->proc~esmf_locstreamget proc~esmf_meshget ESMF_MeshGet proc~esmf_geomget->proc~esmf_meshget proc~esmf_xgridgeombaseget ESMF_XGridGeomBaseGet proc~esmf_geomget->proc~esmf_xgridgeombaseget 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 proc~esmf_logseterror->esmf_breakpoint proc~esmf_logseterror->proc~esmf_logrc2msg proc~esmf_logseterror->proc~esmf_logwrite proc~getinfogrid->proc~esmf_imerr proc~getinfogrid->proc~esmf_logfounderror proc~esmf_gridgetinit ESMF_GridGetInit proc~getinfogrid->proc~esmf_gridgetinit proc~esmf_infogetfrompointer ESMF_InfoGetFromPointer proc~getinfogrid->proc~esmf_infogetfrompointer proc~getinfolocstream->proc~esmf_imerr proc~getinfolocstream->proc~esmf_logfounderror proc~esmf_infogetfrombase ESMF_InfoGetFromBase proc~getinfolocstream->proc~esmf_infogetfrombase proc~esmf_locstreamgetinit ESMF_LocStreamGetInit proc~getinfolocstream->proc~esmf_locstreamgetinit proc~getinfomesh->proc~esmf_imerr proc~getinfomesh->proc~esmf_logfounderror proc~getinfomesh->proc~esmf_infogetfrompointer proc~esmf_meshgetinit ESMF_MeshGetInit proc~getinfomesh->proc~esmf_meshgetinit

Called by

proc~~getinfogeom~~CalledByGraph proc~getinfogeom ESMF_InfoDescribe%getInfoGeom none~getinfo ESMF_InfoDescribe%GetInfo none~getinfo->proc~getinfogeom

Source Code

function getInfoGeom(self, target, keywordEnforcer, rc) result(info)
  class(ESMF_InfoDescribe), intent(in) :: self
  type(ESMF_Geom), intent(in) :: target
type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
  integer, intent(inout), optional :: rc
  type(ESMF_Info) :: info
  type(ESMF_InfoDescribe) :: eidesc
  type(ESMF_GeomType_Flag) :: geomtype
  type(ESMF_Grid) :: grid
  type(ESMF_XGrid) :: xgrid
  type(ESMF_Mesh) :: mesh
  type(ESMF_LocStream) :: locstream
  integer :: localrc

  localrc = ESMF_FAILURE
  if (present(rc)) rc = ESMF_RC_NOT_IMPL
  
  ESMF_INIT_CHECK_DEEP(ESMF_GeomGetInit, target, rc)

  ! Get type of geometry
  call ESMF_GeomGet(target, geomtype=geomtype, rc=localrc)
  if (ESMF_LogFoundError(localrc, & 
       ESMF_ERR_PASSTHRU, & 
       ESMF_CONTEXT, rcToReturn=rc)) return

  ! Get specific geometry and operate on that  
  if (geomtype == ESMF_GEOMTYPE_GRID) then

     ! Get Grid
      call ESMF_GeomGet(target, grid=grid, rc=localrc)
      if (ESMF_LogFoundError(localrc, &
          ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return

      ! Get info from Grid
      info=self%getInfoGrid(grid)
      
   else if (geomtype == ESMF_GEOMTYPE_MESH) then

     ! Get Mesh
      call ESMF_GeomGet(target, mesh=mesh, rc=localrc)
      if (ESMF_LogFoundError(localrc, &
          ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return

      ! Get info from Mesh
      info=self%getInfoMesh(mesh)

   else if (geomtype == ESMF_GEOMTYPE_LOCSTREAM) then

     ! Get LocStream
      call ESMF_GeomGet(target, locstream=locstream, rc=localrc)
      if (ESMF_LogFoundError(localrc, &
          ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return

      ! Get info from LocStream
      info=self%getInfoLocStream(locstream)

   else if (geomtype == ESMF_GEOMTYPE_XGRID) then
      call ESMF_LogSetError(rcToCheck=ESMF_RC_ARG_WRONG, &
           msg=" currently you can't get an ESMF_Info object from an XGrid in an ESMF_Geom object.", &
           ESMF_CONTEXT, rcToReturn=rc)
      return
   else
      call ESMF_LogSetError(rcToCheck=ESMF_RC_ARG_WRONG, &
           msg=" unsupported geometry type.", &
           ESMF_CONTEXT, rcToReturn=rc)
      return
   endif
  
!  call ESMF_InfoGetFromPointer(target%this, info, rc=localrc)
!  if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return
!  info%is_view = .true.

  if (present(rc)) rc = ESMF_SUCCESS
end function getInfoGeom