ESMF_AttributeGetObjArrayI4 Subroutine

private subroutine ESMF_AttributeGetObjArrayI4(target, name, value, defaultvalue, convention, purpose, attnestflag, isPresent, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_Array), intent(in) :: target
character(len=*), intent(in) :: name
integer(kind=ESMF_KIND_I4), intent(out) :: value
integer(kind=ESMF_KIND_I4), intent(in), optional :: defaultvalue
character(len=*), intent(in), optional :: convention
character(len=*), intent(in), optional :: purpose
type(ESMF_AttNest_Flag), intent(in), optional :: attnestflag
logical, intent(out), optional :: isPresent
integer, intent(out), optional :: rc

Calls

proc~~esmf_attributegetobjarrayi4~~CallsGraph proc~esmf_attributegetobjarrayi4 ESMF_AttributeGetObjArrayI4 esmf_arraygetinit esmf_arraygetinit proc~esmf_attributegetobjarrayi4->esmf_arraygetinit interface~esmf_infoget ESMF_InfoGet proc~esmf_attributegetobjarrayi4->interface~esmf_infoget none~getinfo ESMF_InfoDescribe%GetInfo proc~esmf_attributegetobjarrayi4->none~getinfo proc~esmf_imerr ESMF_IMErr proc~esmf_attributegetobjarrayi4->proc~esmf_imerr proc~esmf_infoformatkey ESMF_InfoFormatKey proc~esmf_attributegetobjarrayi4->proc~esmf_infoformatkey proc~esmf_infoispresent ESMF_InfoIsPresent proc~esmf_attributegetobjarrayi4->proc~esmf_infoispresent proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_attributegetobjarrayi4->proc~esmf_logfounderror

Called by

proc~~esmf_attributegetobjarrayi4~~CalledByGraph proc~esmf_attributegetobjarrayi4 ESMF_AttributeGetObjArrayI4 interface~esmf_attributeget ESMF_AttributeGet interface~esmf_attributeget->proc~esmf_attributegetobjarrayi4 proc~checkcomponentattribute checkComponentAttribute proc~checkcomponentattribute->interface~esmf_attributeget proc~checkfieldattribute checkFieldAttribute proc~checkfieldattribute->interface~esmf_attributeget proc~checkstateattribute checkStateAttribute proc~checkstateattribute->interface~esmf_attributeget proc~nuopc_checkcplcomponentattribute NUOPC_CheckCplComponentAttribute proc~nuopc_checkcplcomponentattribute->interface~esmf_attributeget proc~nuopc_checkfieldattribute NUOPC_CheckFieldAttribute proc~nuopc_checkfieldattribute->interface~esmf_attributeget proc~nuopc_checkgridcomponentattribute NUOPC_CheckGridComponentAttribute proc~nuopc_checkgridcomponentattribute->interface~esmf_attributeget proc~nuopc_checkstateattribute NUOPC_CheckStateAttribute proc~nuopc_checkstateattribute->interface~esmf_attributeget proc~nuopc_cplcompattributeege NUOPC_CplCompAttributeEge proc~nuopc_cplcompattributeege->interface~esmf_attributeget proc~nuopc_cplcompsearchphasemapbyindex NUOPC_CplCompSearchPhaseMapByIndex proc~nuopc_cplcompsearchphasemapbyindex->interface~esmf_attributeget proc~nuopc_gridcompattributeege NUOPC_GridCompAttributeEge proc~nuopc_gridcompattributeege->interface~esmf_attributeget proc~nuopc_gridcompsearchphasemapbyindex NUOPC_GridCompSearchPhaseMapByIndex proc~nuopc_gridcompsearchphasemapbyindex->interface~esmf_attributeget proc~user_init~15 user_init proc~user_init~15->interface~esmf_attributeget proc~user_init~39 user_init proc~user_init~39->interface~esmf_attributeget proc~user_init~79 user_init proc~user_init~79->interface~esmf_attributeget proc~user_init~82 user_init proc~user_init~82->interface~esmf_attributeget program~attributeupdatereconcile AttributeUpdateReconcile program~attributeupdatereconcile->interface~esmf_attributeget program~esmf_arraycreategetutest ESMF_ArrayCreateGetUTest program~esmf_arraycreategetutest->interface~esmf_attributeget program~esmf_attributeprofileutest ESMF_AttributeProfileUTest program~esmf_attributeprofileutest->interface~esmf_attributeget program~esmf_attributeutilutest ESMF_AttributeUtilUTest program~esmf_attributeutilutest->interface~esmf_attributeget program~esmf_infosyncutest ESMF_InfoSyncUTest program~esmf_infosyncutest->interface~esmf_attributeget program~esmf_statereconcileutest ESMF_StateReconcileUTest program~esmf_statereconcileutest->interface~esmf_attributeget interface~nuopc_checkcomponentattribute NUOPC_CheckComponentAttribute interface~nuopc_checkcomponentattribute->proc~nuopc_checkcplcomponentattribute interface~nuopc_checkcomponentattribute->proc~nuopc_checkgridcomponentattribute interface~nuopc_compattributeegest NUOPC_CompAttributeEgest interface~nuopc_compattributeegest->proc~nuopc_cplcompattributeege interface~nuopc_compattributeegest->proc~nuopc_gridcompattributeege interface~nuopc_compsearchphasemapbyindex NUOPC_CompSearchPhaseMapByIndex interface~nuopc_compsearchphasemapbyindex->proc~nuopc_cplcompsearchphasemapbyindex interface~nuopc_compsearchphasemapbyindex->proc~nuopc_gridcompsearchphasemapbyindex proc~checkcomponentmetadata checkComponentMetadata proc~checkcomponentmetadata->proc~checkcomponentattribute proc~checkfieldmetaafteradvertise checkFieldMetaAfterAdvertise proc~checkfieldmetaafteradvertise->proc~nuopc_checkfieldattribute proc~checkfieldmetaafterrealize checkFieldMetaAfterRealize proc~checkfieldmetaafterrealize->proc~nuopc_checkfieldattribute proc~checkfieldmetadata checkFieldMetadata proc~checkfieldmetadata->proc~checkfieldattribute proc~checkstate checkState proc~checkstate->proc~checkstateattribute proc~nuopc_checkstate NUOPC_CheckState proc~nuopc_checkstate->proc~nuopc_checkstateattribute

Source Code

subroutine ESMF_AttributeGetObjArrayI4(target, name, value, defaultvalue, convention, purpose, attnestflag, isPresent, rc)
  type(ESMF_Array), intent(in) :: target
  character(len=*), intent(in) :: name
  integer(ESMF_KIND_I4), intent(out) :: value
  integer(ESMF_KIND_I4), intent(in), optional :: defaultvalue
  character(len=*), optional, intent(in) :: convention
  character(len=*), optional, intent(in) :: purpose
  type(ESMF_AttNest_Flag), intent(in), optional :: attnestflag
  logical, intent(out), optional :: isPresent
  integer, intent(out), optional :: rc

  integer :: localrc
  character(:), allocatable :: key
  type(ESMF_InfoDescribe) :: eidesc
  type(ESMF_Info) :: info
  type(ESMF_AttNest_Flag) :: local_attnestflag
  integer :: size
  logical :: is_array, local_isPresent

  localrc = ESMF_FAILURE
  if (present(rc)) rc = ESMF_RC_NOT_IMPL
  ! Check object initialization
  ESMF_INIT_CHECK_DEEP(ESMF_ArrayGetInit, target, rc)

  if (present(attnestflag)) then
    local_attnestflag = attnestflag
  else
    local_attnestflag = ESMF_ATTR_DEFAULT_ATTNEST
  end if

  call ESMF_InfoFormatKey(key, name, localrc, convention=convention, purpose=purpose)
  if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

  info = eidesc%GetInfo(target, rc=localrc)
  if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

  local_isPresent = ESMF_InfoIsPresent(info, key, attnestflag=local_attnestflag, &
    isPointer=.true., rc=localrc)
  if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

  if (present(isPresent)) then
    isPresent = local_isPresent
  endif

  ! For Attribute, we support scalar to array stuff for single element arrays.
  ! Check if the target is an array with size 1. Operate on it as if it were a
  ! scalar.
  if (local_isPresent) then
    call ESMF_InfoGet(info, key=key, size=size, isArray=is_array, &
      attnestflag=local_attnestflag, rc=localrc)
    if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return
  else
    ! Supply some default values for array and size checks to allow logical test
    ! for scalar-array implicit conversion.
    is_array = .false.
    size = 0
  endif

  if (local_isPresent .and. is_array .and. size==1) then
    call ESMF_InfoGet(info, key, value, idx=1, default=defaultvalue, &
      attnestflag=local_attnestflag, rc=localrc)
    if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return
  else
    call ESMF_InfoGet(info, key, value, default=defaultvalue, &
      attnestflag=local_attnestflag, rc=localrc)
    if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return
  end if

  deallocate(key)

  if (present(rc)) rc = ESMF_SUCCESS
end subroutine ESMF_AttributeGetObjArrayI4