ESMF_InfoDescribe Derived Type

type, public :: ESMF_InfoDescribe


Inherits

type~~esmf_infodescribe~~InheritsGraph type~esmf_infodescribe ESMF_InfoDescribe type~esmf_base ESMF_Base type~esmf_infodescribe->type~esmf_base curr_base type~esmf_field ESMF_Field type~esmf_infodescribe->type~esmf_field foundField type~esmf_info ESMF_Info type~esmf_infodescribe->type~esmf_info info, searchCriteria type~esmf_vmid ESMF_VMId type~esmf_infodescribe->type~esmf_vmid vmIdMap type~esmf_pointer ESMF_Pointer type~esmf_base->type~esmf_pointer this type~esmf_fieldtype ESMF_FieldType type~esmf_field->type~esmf_fieldtype ftypep C_PTR C_PTR type~esmf_info->C_PTR ptr type~esmf_vmid->type~esmf_pointer this type~esmf_fieldtype->type~esmf_base base ESMF_Array ESMF_Array type~esmf_fieldtype->ESMF_Array array type~esmf_fieldstatus_flag ESMF_FieldStatus_Flag type~esmf_fieldtype->type~esmf_fieldstatus_flag status type~esmf_geom ESMF_Geom type~esmf_fieldtype->type~esmf_geom geom type~esmf_status ESMF_Status type~esmf_fieldtype->type~esmf_status iostatus type~esmf_geomclass ESMF_GeomClass type~esmf_geom->type~esmf_geomclass gbcp

Components

Type Visibility Attributes Name Initial
logical, public :: addBaseAddress = .false.
logical, public :: addObjectInfo = .false.
logical, public :: createInfo = .true.
logical, public :: curr_base_is_geom = .false.
logical, public :: curr_base_is_valid = .false.
logical, public :: found = .false.
logical, public :: is_initialized = .false.
type(ESMF_Base), public :: curr_base
type(ESMF_Field), public :: foundField
type(ESMF_Info), public :: info
type(ESMF_Info), public, pointer :: searchCriteria
type(ESMF_VMId), public, dimension(:), pointer :: vmIdMap

Type-Bound Procedures

generic, public :: Destroy => ESMF_InfoDescribeDestroy

procedure, private, pass :: ESMF_InfoDescribeDestroy

procedure, private, pass :: ESMF_InfoDescribeGetCurrentBase

procedure, private, pass :: ESMF_InfoDescribeGetCurrentInfo

procedure, private :: ESMF_InfoDescribeInitialize

  • private subroutine ESMF_InfoDescribeInitialize(self, addBaseAddress, addObjectInfo, createInfo, searchCriteria, vmIdMap, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    logical, intent(in), optional :: addBaseAddress
    logical, intent(in), optional :: addObjectInfo
    logical, intent(in), optional :: createInfo
    type(ESMF_Info), intent(in), optional, target :: searchCriteria
    type(ESMF_VMId), intent(in), optional, dimension(:), pointer :: vmIdMap
    integer, intent(inout), optional :: rc

procedure, private, pass :: ESMF_InfoDescribePrint

  • private recursive subroutine fillMembersState(self, state, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_State), intent(in) :: state
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine fillMembersArrayBundle(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_ArrayBundle), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine fillMembersField(self, field, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Field), intent(in) :: field
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine fillMembersFieldBundle(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_FieldBundle), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

generic, public :: GetCurrentBase => ESMF_InfoDescribeGetCurrentBase

generic, public :: GetCurrentInfo => ESMF_InfoDescribeGetCurrentInfo

generic, public :: Initialize => ESMF_InfoDescribeInitialize

  • private subroutine ESMF_InfoDescribeInitialize(self, addBaseAddress, addObjectInfo, createInfo, searchCriteria, vmIdMap, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    logical, intent(in), optional :: addBaseAddress
    logical, intent(in), optional :: addObjectInfo
    logical, intent(in), optional :: createInfo
    type(ESMF_Info), intent(in), optional, target :: searchCriteria
    type(ESMF_VMId), intent(in), optional, dimension(:), pointer :: vmIdMap
    integer, intent(inout), optional :: rc

generic, public :: Print => ESMF_InfoDescribePrint

  • private recursive subroutine updateWithState(self, state, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_State), intent(in) :: state
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithArray(self, array, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Array), intent(in) :: array
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithArrayBundle(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_ArrayBundle), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithField(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Field), intent(in), target :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithFieldBundle(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_FieldBundle), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithLocStream(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_LocStream), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithGrid(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Grid), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithXGrid(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_XGrid), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithMesh(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Mesh), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithRouteHandle(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_RouteHandle), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithDistGrid(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_DistGrid), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithGridComp(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_GridComp), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithCplComp(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_CplComp), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc
  • private subroutine updateWithSciComp(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_SciComp), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: fillMembersArrayBundle

procedure, private :: fillMembersField

  • private subroutine fillMembersField(self, field, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Field), intent(in) :: field
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: fillMembersFieldBundle

  • private subroutine fillMembersFieldBundle(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_FieldBundle), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: fillMembersState

  • private recursive subroutine fillMembersState(self, state, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_State), intent(in) :: state
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private, pass :: getInfoArray

  • private function getInfoArray(self, target, keywordEnforcer, rc) result(info)

    Arguments

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

    Return Value type(ESMF_Info)

procedure, private, pass :: getInfoArrayBundle

procedure, private, pass :: getInfoCplComp

procedure, private, pass :: getInfoDistGrid

procedure, private, pass :: getInfoField

procedure, private, pass :: getInfoFieldBundle

  • private function getInfoFieldBundle(self, target, keywordEnforcer, rc) result(info)

    Arguments

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

    Return Value type(ESMF_Info)

procedure, private, pass :: getInfoGeom

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

    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)

procedure, private, pass :: getInfoGrid

  • private function getInfoGrid(self, target, keywordEnforcer, rc) result(info)

    Arguments

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

    Return Value type(ESMF_Info)

procedure, private, pass :: getInfoGridComp

procedure, private, pass :: getInfoLocStream

procedure, private, pass :: getInfoMesh

  • private function getInfoMesh(self, target, keywordEnforcer, rc) result(info)

    Arguments

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

    Return Value type(ESMF_Info)

procedure, private, pass :: getInfoSciComp

procedure, private, pass :: getInfoState

procedure, private :: updateGeneric

  • private subroutine updateGeneric(self, root_key, name, etype, base, keywordEnforcer, base_is_valid, uname, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    character(len=*), intent(in) :: root_key
    character(len=*), intent(in) :: name
    character(len=*), intent(in) :: etype
    type(ESMF_Base), intent(in) :: base
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    logical, intent(in), optional :: base_is_valid
    character(len=:), optional, allocatable :: uname
    integer, intent(inout), optional :: rc

procedure, private :: updateWithArray

  • private subroutine updateWithArray(self, array, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Array), intent(in) :: array
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithArrayBundle

procedure, private :: updateWithCplComp

  • private subroutine updateWithCplComp(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_CplComp), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithDistGrid

  • private subroutine updateWithDistGrid(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_DistGrid), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithField

  • private subroutine updateWithField(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Field), intent(in), target :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithFieldBundle

  • private subroutine updateWithFieldBundle(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_FieldBundle), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithGrid

  • private subroutine updateWithGrid(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Grid), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithGridComp

  • private subroutine updateWithGridComp(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_GridComp), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithLocStream

  • private subroutine updateWithLocStream(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_LocStream), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithMesh

  • private subroutine updateWithMesh(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_Mesh), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithRouteHandle

procedure, private :: updateWithSciComp

  • private subroutine updateWithSciComp(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_SciComp), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithState

  • private recursive subroutine updateWithState(self, state, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_State), intent(in) :: state
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

procedure, private :: updateWithXGrid

  • private subroutine updateWithXGrid(self, target, root_key, keywordEnforcer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ESMF_InfoDescribe), intent(inout) :: self
    type(ESMF_XGrid), intent(in) :: target
    character(len=*), intent(in) :: root_key
    type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
    integer, intent(inout), optional :: rc

Source Code

type, public :: ESMF_InfoDescribe
  ! TODO:describe_search: Use a pointer to avoid rebuilding the internal storage with a repeat search.
  type(ESMF_Info) :: info
  logical :: addBaseAddress = .false.  ! If true, add the object's base address
  logical :: addObjectInfo = .false.  ! If true, add ESMF_Info map for each object
  logical :: createInfo = .true.  ! If true, also recurse objects with members (i.e. ArrayBundle)
  type(ESMF_VMId), dimension(:), pointer :: vmIdMap  ! Used to also get a unique integer identifier for an object's VM

  logical :: is_initialized = .false.  ! If true, the object is initialized
  type(ESMF_Base) :: curr_base  ! Holds a reference to the current update object's base. Will change when recursively updating
  logical :: curr_base_is_valid = .false.  ! If true, the object's base is valid (i.e. can be reinterpret casted)
  logical :: curr_base_is_geom = .false.  ! If true, the Base is for an ESMF Geometry object

  ! TODO:describe_search: These parameters used by search and should not be used in practice.
  type(ESMF_Info), pointer :: searchCriteria ! If associated use these Info contents to find an object
  logical :: found = .false. ! Used internally when finding objects
  type(ESMF_Field) :: foundField ! Used when finding Fields
contains
  procedure, private :: updateWithState, updateWithArray, updateWithArrayBundle, &
   updateWithField, updateWithFieldBundle, updateWithLocStream, updateWithGrid, &
   updateWithXGrid, updateWithMesh, updateWithRouteHandle, updateWithDistGrid, &
   updateWithGridComp, updateWithCplComp, updateWithSciComp
  generic, public :: Update => updateWithState, updateWithArray, updateWithArrayBundle, &
   updateWithField, updateWithFieldBundle, updateWithLocStream, updateWithGrid, &
   updateWithXGrid, updateWithMesh, updateWithRouteHandle, updateWithDistGrid, &
   updateWithGridComp, updateWithCplComp, updateWithSciComp
  procedure, private :: fillMembersState, fillMembersArrayBundle, fillMembersField, &
   fillMembersFieldBundle
  generic, public :: FillMembers => fillMembersState, fillMembersArrayBundle, fillMembersField, &
   fillMembersFieldBundle
  procedure, private, pass :: ESMF_InfoDescribeDestroy, ESMF_InfoDescribePrint, &
   ESMF_InfoDescribeGetCurrentBase, ESMF_InfoDescribeGetCurrentInfo
  procedure, private :: updateGeneric, ESMF_InfoDescribeInitialize
  procedure, private, pass :: getInfoArray, getInfoArrayBundle, getInfoCplComp, &
   getInfoGridComp, getInfoSciComp, getInfoDistGrid, getInfoField, getInfoFieldBundle, &
   getInfoGrid, getInfoState, getInfoLocStream, getInfoMesh, getInfoGeom
  generic, public :: GetInfo => getInfoArray, getInfoArrayBundle, getInfoCplComp, getInfoGridComp, &
   getInfoSciComp, getInfoDistGrid, getInfoField, getInfoFieldBundle, getInfoGrid, &
   getInfoState, getInfoLocStream, getInfoMesh, getInfoGeom
  generic, public :: Initialize => ESMF_InfoDescribeInitialize
  generic, public :: Destroy => ESMF_InfoDescribeDestroy
  generic, public :: Print => ESMF_InfoDescribePrint
  generic, public :: GetCurrentBase => ESMF_InfoDescribeGetCurrentBase
  generic, public :: GetCurrentInfo => ESMF_InfoDescribeGetCurrentInfo
end type ESMF_InfoDescribe