subroutine user_run(comp, importState, exportState, clock, rc)
type(ESMF_CplComp) :: comp
type(ESMF_State) :: importState, exportState
type(ESMF_Clock) :: clock
integer, intent(out) :: rc
! Local variables
type(ESMF_Field) :: humidity1, humidity2
integer :: status
rc = ESMF_SUCCESS
print *, "User Coupler Run starting"
! Get input data
call ESMF_StateGet(importState, "humidity", humidity1, rc=rc)
if(rc/=ESMF_SUCCESS) return
! call ESMF_FieldPrint(humidity1, rc=rc)
! Get location of output data
call ESMF_StateGet(exportState, "humidity", humidity2, rc=rc)
if(rc/=ESMF_SUCCESS) return
! call ESMF_FieldPrint(humidity2, rc=rc)
! These are fields on different Grids - call Regrid to rearrange
! the data. The communication pattern was computed at init,
! this simply has to execute the send and receive equivalents.
call ESMF_FieldRegrid(humidity1, humidity2, routehandle, rc=status)
if(rc/=ESMF_SUCCESS) return
! Data is moved directly to the field in the output state, so no
! "put" is needed here.
print *, "User Coupler Run returning"
end subroutine user_run