ESMF_InfoSyncSciComp Subroutine

private subroutine ESMF_InfoSyncSciComp(host, rootPet, vm, keywordEnforcer, markClean, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_SciComp), intent(inout) :: host
integer, intent(in) :: rootPet
type(ESMF_VM), intent(in) :: vm
type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
logical, intent(in), optional :: markClean
integer, intent(inout), optional :: rc

Source Code

subroutine ESMF_InfoSyncSciComp(host, rootPet, vm, keywordEnforcer, markClean, rc)
  type(ESMF_SciComp), intent(inout) :: host
  integer, intent(in) :: rootPet
  type(ESMF_VM), intent(in) :: vm
type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
  logical, intent(in), optional :: markClean
  integer, intent(inout), optional :: rc

  type(ESMF_InfoDescribe) :: eidesc
  integer :: localrc
  integer(C_INT) :: local_markClean
  type(ESMF_Pointer) :: eptr

  if (present(rc)) rc = ESMF_RC_NOT_IMPL
  local_markClean = 0  !False
  if (present(markClean)) then
    if (markClean) local_markClean = 1  !True
  endif

  call ESMF_VMGetThis(vm, eptr, rc=localrc)
  if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

  call eidesc%Initialize(addBaseAddress=.true., addObjectInfo=.false., rc=localrc)
  if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

  call eidesc%Update(host, "", rc=localrc)
  if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

  call c_info_base_sync(eidesc%info%ptr, rootPet, eptr%ptr, local_markClean, localrc)
  if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

  call eidesc%Destroy(rc=localrc)
  if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

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