ESMF_InfoCacheUpdateFields Subroutine

private subroutine ESMF_InfoCacheUpdateFields(self, target, vmIdMap, rc)

Type Bound

ESMF_InfoCache

Arguments

Type IntentOptional Attributes Name
class(ESMF_InfoCache), intent(inout) :: self
type(ESMF_State), intent(in) :: target
type(ESMF_VMId), intent(in), dimension(:), pointer :: vmIdMap
integer, intent(out) :: rc

Calls

proc~~esmf_infocacheupdatefields~~CallsGraph proc~esmf_infocacheupdatefields ESMF_InfoCache%ESMF_InfoCacheUpdateFields interface~c_infocache_updatefields c_infocache_updatefields proc~esmf_infocacheupdatefields->interface~c_infocache_updatefields none~destroy ESMF_InfoDescribe%Destroy proc~esmf_infocacheupdatefields->none~destroy none~initialize ESMF_InfoDescribe%Initialize proc~esmf_infocacheupdatefields->none~initialize none~update ESMF_InfoDescribe%Update proc~esmf_infocacheupdatefields->none~update proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_infocacheupdatefields->proc~esmf_logfounderror proc~esmf_infodescribedestroy ESMF_InfoDescribe%ESMF_InfoDescribeDestroy none~destroy->proc~esmf_infodescribedestroy proc~esmf_infodescribeinitialize ESMF_InfoDescribe%ESMF_InfoDescribeInitialize none~initialize->proc~esmf_infodescribeinitialize proc~updatewitharray ESMF_InfoDescribe%updateWithArray none~update->proc~updatewitharray proc~updatewitharraybundle ESMF_InfoDescribe%updateWithArrayBundle none~update->proc~updatewitharraybundle proc~updatewithcplcomp ESMF_InfoDescribe%updateWithCplComp none~update->proc~updatewithcplcomp proc~updatewithdistgrid ESMF_InfoDescribe%updateWithDistGrid none~update->proc~updatewithdistgrid proc~updatewithfield ESMF_InfoDescribe%updateWithField none~update->proc~updatewithfield proc~updatewithfieldbundle ESMF_InfoDescribe%updateWithFieldBundle none~update->proc~updatewithfieldbundle proc~updatewithgrid ESMF_InfoDescribe%updateWithGrid none~update->proc~updatewithgrid proc~updatewithgridcomp ESMF_InfoDescribe%updateWithGridComp none~update->proc~updatewithgridcomp proc~updatewithlocstream ESMF_InfoDescribe%updateWithLocStream none~update->proc~updatewithlocstream proc~updatewithmesh ESMF_InfoDescribe%updateWithMesh none~update->proc~updatewithmesh proc~updatewithroutehandle ESMF_InfoDescribe%updateWithRouteHandle none~update->proc~updatewithroutehandle proc~updatewithscicomp ESMF_InfoDescribe%updateWithSciComp none~update->proc~updatewithscicomp proc~updatewithstate ESMF_InfoDescribe%updateWithState none~update->proc~updatewithstate proc~updatewithxgrid ESMF_InfoDescribe%updateWithXGrid none~update->proc~updatewithxgrid 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

Called by

proc~~esmf_infocacheupdatefields~~CalledByGraph proc~esmf_infocacheupdatefields ESMF_InfoCache%ESMF_InfoCacheUpdateFields none~updatefields ESMF_InfoCache%UpdateFields none~updatefields->proc~esmf_infocacheupdatefields proc~esmf_statereconcile_driver ESMF_StateReconcile_driver proc~esmf_statereconcile_driver->none~updatefields program~esmf_infocacheutest ESMF_InfoCacheUTest program~esmf_infocacheutest->none~updatefields proc~esmf_statereconcile ESMF_StateReconcile proc~esmf_statereconcile->proc~esmf_statereconcile_driver

Source Code

subroutine ESMF_InfoCacheUpdateFields(self, target, vmIdMap, rc)
! !ARGUMENTS:
  class(ESMF_InfoCache), intent(inout) :: self
  type(ESMF_State), intent(in) :: target
  type(ESMF_VMId), dimension(:), pointer, intent(in) :: vmIdMap
  integer, intent(out) :: rc
!
! !DESCRIPTION:
!     Traverse the object hierarchy of \textit{target} updating Field attributes
!     for StateReconcile optimizations.
!
!     The arguments are:
!     \begin{description}
!     \item [self]
!       Class instance.
!     \item [target]
!       Target \texttt{ESMF\_State} to traverse recursively.
!     \item [vmIdMap]
!       An \texttt{ESMF\_VMId} map as computed by \texttt{ESMF\_VMTranslateVMId}.
!     \item [rc]
!       Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
!     \end{description}
!EOPI

  type(ESMF_InfoDescribe) :: idesc

  call idesc%Initialize(createInfo=.true., addBaseAddress=.true., vmIdMap=vmIdMap, rc=rc)
  if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

  call idesc%Update(target, "", rc=rc)
  if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

  rc = c_infocache_updatefields(self%ptr, idesc%info%ptr)
  if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return

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

end subroutine ESMF_InfoCacheUpdateFields