subroutine DataInitialize(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(xdata_field), pointer :: xfield
type(ESMF_State) :: importState
type(ESMF_State) :: exportState
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 component for import and export states
call NUOPC_ModelGet(xdata, importState=importState, &
exportState=exportState, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
! reset import fields
xfield => xstate%imp_flds_head
do while (associated(xfield))
if (xfield%rlze) then
call ESMF_FieldFill(xfield%efld, dataFillScheme="const", &
const1=xfield%dflt, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
endif
xfield => xfield%nfld
enddo
! reset export fields
xfield => xstate%exp_flds_head
do while (associated(xfield))
if (xfield%rlze) then
call ESMF_FieldFill(xfield%efld, dataFillScheme="const", &
const1=xfield%dflt, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
call NUOPC_SetAttribute(xfield%efld, &
name="Updated", value="true", rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
endif
xfield => xfield%nfld
enddo
call NUOPC_CompAttributeSet(xdata, &
name="InitializeDataComplete", value="true", rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, file=__FILE__)) return
endsubroutine DataInitialize