11     model_label_setclock  => label_setclock, &
 
   12     model_label_advance   => label_advance
 
   25     type(esmf_gridcomp)  :: 
model 
   26     integer, 
intent(out) :: rc
 
   31     call nuopc_compderive(
model, model_routine_ss, rc=rc)
 
   32     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
   38     call nuopc_compsetentrypoint(
model, esmf_method_initialize, &
 
   39       phaselabellist=(/
"IPDv00p1"/), userroutine=
initializep1, rc=rc)
 
   40     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
   44     call nuopc_compsetentrypoint(
model, esmf_method_initialize, &
 
   45       phaselabellist=(/
"IPDv00p2"/), userroutine=
initializep2, rc=rc)
 
   46     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
   52     call nuopc_compspecialize(
model, speclabel=model_label_setclock, &
 
   54     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
   58     call nuopc_compspecialize(
model, speclabel=model_label_advance, &
 
   60     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
   69   subroutine initializep1(model, importState, exportState, clock, rc)
 
   70     type(esmf_gridcomp)  :: model
 
   71     type(esmf_state)     :: importState, exportState
 
   72     type(esmf_clock)     :: clock
 
   73     integer, 
intent(out) :: rc
 
   78     call nuopc_advertise(importstate, &
 
   79       standardname=
"air_pressure_at_sea_level", name=
"pmsl", rc=rc)
 
   80     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
   86     call nuopc_advertise(importstate, &
 
   87       standardname=
"surface_net_downward_shortwave_flux", name=
"rsns", rc=rc)
 
   88     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
   94     call nuopc_advertise(exportstate, &
 
   95       standardname=
"sea_surface_temperature", name=
"sst", rc=rc)
 
   96     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  106     type(esmf_gridcomp)  :: model
 
  107     type(esmf_state)     :: importState, exportState
 
  108     type(esmf_clock)     :: clock
 
  109     integer, 
intent(out) :: rc
 
  112     type(esmf_timeinterval) :: stabilityTimeStep
 
  113     type(esmf_field)        :: field
 
  114     type(esmf_grid)         :: gridIn
 
  115     type(esmf_grid)         :: gridOut
 
  120     gridin = esmf_gridcreatenoperidimufrm(maxindex=(/20, 100/), &
 
  121       mincornercoord=(/10._esmf_kind_r8, 20._esmf_kind_r8/), &
 
  122       maxcornercoord=(/100._esmf_kind_r8, 200._esmf_kind_r8/), &
 
  123       coordsys=esmf_coordsys_cart, staggerloclist=(/esmf_staggerloc_center/), &
 
  125     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  132     field = esmf_fieldcreate(name=
"pmsl", grid=gridin, &
 
  133       typekind=esmf_typekind_r8, rc=rc)
 
  134     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  138     call nuopc_realize(importstate, field=field, rc=rc)
 
  139     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  145     field = esmf_fieldcreate(name=
"rsns", grid=gridin, &
 
  146       typekind=esmf_typekind_r8, rc=rc)
 
  147     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  151     call nuopc_realize(importstate, field=field, rc=rc)
 
  152     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  158     field = esmf_fieldcreate(name=
"sst", grid=gridout, &
 
  159       typekind=esmf_typekind_r8, rc=rc)
 
  160     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  164     call nuopc_realize(exportstate, field=field, rc=rc)
 
  165     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  175     type(esmf_gridcomp)  :: model
 
  176     integer, 
intent(out) :: rc
 
  179     type(esmf_clock)              :: clock
 
  180     type(esmf_timeinterval)       :: stabilityTimeStep
 
  185     call nuopc_modelget(
model, modelclock=clock, rc=rc)
 
  186     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  195     call esmf_timeintervalset(stabilitytimestep, m=15, rc=rc) 
 
  196     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  200     call nuopc_compsetclock(
model, clock, stabilitytimestep, rc=rc)
 
  201     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  211     type(esmf_gridcomp)  :: model
 
  212     integer, 
intent(out) :: rc
 
  215     type(esmf_clock)              :: clock
 
  216     type(esmf_state)              :: importState, exportState
 
  217     type(esmf_time)               :: currTime
 
  218     type(esmf_timeinterval)       :: timeStep
 
  220     type (ESMF_Field) :: field
 
  221     type(esmf_fieldstatus_flag) :: fieldStatus
 
  222     real(8), 
pointer :: sst(:,:)
 
  223     real(8), 
pointer :: pmsl(:,:)
 
  225     integer, 
save :: init = 0
 
  226     integer :: LB(2), UB(2)
 
  231     call nuopc_modelget(
model, modelclock=clock, importstate=importstate, &
 
  232       exportstate=exportstate, rc=rc)
 
  233     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  247     call esmf_clockprint(clock, options=
"currTime", &
 
  248       prestring=
"------>Advancing OCN from: ", rc=rc)
 
  249     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  254     call esmf_clockget(clock, currtime=currtime, timestep=timestep, rc=rc)
 
  255     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  260     call esmf_timeprint(currtime + timestep, &
 
  261       prestring=
"--------------------------------> to: ", rc=rc)
 
  262     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  271     call esmf_stateget(importstate, 
"pmsl", field, rc=rc)
 
  272     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  276     call esmf_fieldget(field, status=fieldstatus, rc=rc)
 
  277     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  281     call esmf_fieldget(field, 0, pmsl, computationallbound=lb, computationalubound=ub, rc=rc)
 
  282     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  288     call esmf_stateget(exportstate, 
"sst", field, rc=rc)
 
  289     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  293     call esmf_fieldget(field, status=fieldstatus, rc=rc)
 
  294     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  298     call esmf_fieldget(field, 0, sst, computationallbound=lb, computationalubound=ub, rc=rc)
 
  299     if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
 
  306     print*, 
"OCN-DATA sst", sst(lb(1),lb(2)), pmsl(lb(1),lb(2))