subroutine CheckImport(xdata, rc)
! arguments
type(ESMF_GridComp) :: xdata
integer,intent(out) :: rc
! local variables
integer :: stat
type(xstate_wrap) :: is
type(xdata_state), pointer :: xstate
type(ESMF_Clock) :: modelClock
type(ESMF_Time) :: modelCurrTime
type(ESMF_State) :: importState
logical :: allCurrTime
rc = ESMF_SUCCESS
! query component for internal State
nullify(is%ptr)
call ESMF_GridCompGetInternalState(xdata, is, rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
xstate => is%ptr
if (.not. associated(xstate)) then
call ESMF_LogSetError(ESMF_RC_PTR_NOTALLOC, &
msg='XDATA: xstate has not been associated', &
line=__LINE__, file=__FILE__, rcToReturn=rc)
return
endif
! query component for information
call NUOPC_CompGet(xdata, name=xstate%cname, &
verbosity=xstate%verbosity, diagnostic=xstate%diagnostic, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
! query the component for its clock and import state
call NUOPC_ModelGet(xdata, modelClock=modelClock, &
importState=importState, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
! get the stop time out of the clock
call ESMF_ClockGet(modelClock, currTime=modelCurrTime, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
allCurrTime = NUOPC_IsAtTime(importState, modelCurrTime, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
if (.NOT.allCurrTime) then
call ESMF_LogWrite(trim(xstate%cname)//": "// &
"NUOPC INCOMPATIBILITY DETECTED: Import Fields not at current time", &
ESMF_LOGMSG_WARNING)
endif
endsubroutine CheckImport