11 model_label_advance => label_advance
24 type(esmf_gridcomp) ::
model
25 integer,
intent(out) :: rc
30 call nuopc_compderive(
model, model_routine_ss, rc=rc)
31 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
37 call nuopc_compsetentrypoint(
model, esmf_method_initialize, &
38 phaselabellist=(/
"IPDv00p1"/), userroutine=
initializep1, rc=rc)
39 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
43 call nuopc_compsetentrypoint(
model, esmf_method_initialize, &
44 phaselabellist=(/
"IPDv00p2"/), userroutine=
initializep2, rc=rc)
45 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
51 call nuopc_compspecialize(
model, speclabel=model_label_advance, &
53 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
62 subroutine initializep1(model, importState, exportState, clock, rc)
63 type(esmf_gridcomp) :: model
64 type(esmf_state) :: importState, exportState
65 type(esmf_clock) :: clock
66 integer,
intent(out) :: rc
71 call nuopc_advertise(importstate, &
72 standardname=
"sea_surface_temperature", name=
"sst", rc=rc)
73 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
79 call nuopc_advertise(exportstate, &
80 standardname=
"air_pressure_at_sea_level", name=
"pmsl", rc=rc)
81 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
87 call nuopc_advertise(exportstate, &
88 standardname=
"surface_net_downward_shortwave_flux", name=
"rsns", rc=rc)
89 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
98 subroutine initializep2(model, importState, exportState, clock, rc)
99 type(esmf_gridcomp) :: model
100 type(esmf_state) :: importState, exportState
101 type(esmf_clock) :: clock
102 integer,
intent(out) :: rc
105 type(esmf_field) :: field
106 type(esmf_grid) :: gridIn
107 type(esmf_grid) :: gridOut
112 gridin = esmf_gridcreatenoperidimufrm(maxindex=(/20, 100/), &
113 mincornercoord=(/10._esmf_kind_r8, 20._esmf_kind_r8/), &
114 maxcornercoord=(/100._esmf_kind_r8, 200._esmf_kind_r8/), &
115 coordsys=esmf_coordsys_cart, staggerloclist=(/esmf_staggerloc_center/), &
117 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
124 field = esmf_fieldcreate(name=
"sst", grid=gridin, &
125 typekind=esmf_typekind_r8, rc=rc)
126 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
130 call nuopc_realize(importstate, field=field, rc=rc)
131 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
137 field = esmf_fieldcreate(name=
"pmsl", grid=gridout, &
138 typekind=esmf_typekind_r8, rc=rc)
139 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
143 call nuopc_realize(exportstate, field=field, rc=rc)
144 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
150 field = esmf_fieldcreate(name=
"rsns", grid=gridout, &
151 typekind=esmf_typekind_r8, rc=rc)
152 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
156 call nuopc_realize(exportstate, field=field, rc=rc)
157 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
167 type(esmf_gridcomp) :: model
168 integer,
intent(out) :: rc
171 type(esmf_clock) :: clock
172 type(esmf_state) :: importState, exportState
174 type (ESMF_Field) :: field
175 type(esmf_fieldstatus_flag) :: fieldStatus
176 real(8),
pointer :: sst(:,:)
177 real(8),
pointer :: pmsl(:,:)
178 integer :: LB(2), UB(2)
180 integer,
save :: init = 0
185 call nuopc_modelget(
model, modelclock=clock, importstate=importstate, &
186 exportstate=exportstate, rc=rc)
187 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
199 call esmf_clockprint(clock, options=
"currTime", &
200 prestring=
"------>Advancing ATM from: ", rc=rc)
201 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
206 call esmf_clockprint(clock, options=
"stopTime", &
207 prestring=
"--------------------------------> to: ", rc=rc)
208 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
217 call esmf_stateget(importstate,
"sst", field, rc=rc)
218 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
222 call esmf_fieldget(field, status=fieldstatus, rc=rc)
223 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
227 call esmf_fieldget(field, 0, sst, computationallbound=lb, rc=rc)
228 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
234 call esmf_stateget(exportstate,
"pmsl", field, rc=rc)
235 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
239 call esmf_fieldget(field, status=fieldstatus, rc=rc)
240 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
244 call esmf_fieldget(field, 0, pmsl, computationallbound=lb, rc=rc)
245 if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
252 print*,
"ATM-DATA sst", sst(lb(1),lb(2)), pmsl(lb(1),lb(2))