80 & LBi, UBi, LBj, UBj, LBij, UBij, &
81 & IminS, ImaxS, JminS, JmaxS, &
83# ifdef ADJUST_BOUNDARY
85 & tl_t_obc, tl_u_obc, tl_v_obc, &
87 & tl_ubar_obc, tl_vbar_obc, &
106# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS || \
107 defined adjust_boundary
110# ifdef ADJUST_BOUNDARY
116 integer,
intent(in) :: ng, tile
117 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
118 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
119 integer,
intent(in) :: Linp, Lout
122# ifdef ADJUST_BOUNDARY
124 real(r8),
intent(inout) :: tl_t_obc(LBij:,:,:,:,:,:)
125 real(r8),
intent(inout) :: tl_u_obc(LBij:,:,:,:,:)
126 real(r8),
intent(inout) :: tl_v_obc(LBij:,:,:,:,:)
128 real(r8),
intent(inout) :: tl_ubar_obc(LBij:,:,:,:)
129 real(r8),
intent(inout) :: tl_vbar_obc(LBij:,:,:,:)
130 real(r8),
intent(inout) :: tl_zeta_obc(LBij:,:,:,:)
132# ifdef ADJUST_WSTRESS
133 real(r8),
intent(inout) :: tl_ustr(LBi:,LBj:,:,:)
134 real(r8),
intent(inout) :: tl_vstr(LBi:,LBj:,:,:)
138 real(r8),
intent(inout) :: tl_tflux(LBi:,LBj:,:,:,:)
140 real(r8),
intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
141 real(r8),
intent(inout) :: tl_u(LBi:,LBj:,:,:)
142 real(r8),
intent(inout) :: tl_v(LBi:,LBj:,:,:)
144 real(r8),
intent(inout) :: tl_ubar(LBi:,LBj:,:)
145 real(r8),
intent(inout) :: tl_vbar(LBi:,LBj:,:)
147 real(r8),
intent(inout) :: tl_zeta(LBi:,LBj:,:)
149# ifdef ADJUST_BOUNDARY
151 real(r8),
intent(inout) :: tl_t_obc(LBij:UBij,N(ng),4, &
152 & Nbrec(ng),2,NT(ng))
153 real(r8),
intent(inout) :: tl_u_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
154 real(r8),
intent(inout) :: tl_v_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
156 real(r8),
intent(inout) :: tl_ubar_obc(LBij:UBij,4,Nbrec(ng),2)
157 real(r8),
intent(inout) :: tl_vbar_obc(LBij:UBij,4,Nbrec(ng),2)
158 real(r8),
intent(inout) :: tl_zeta_obc(LBij:UBij,4,Nbrec(ng),2)
160# ifdef ADJUST_WSTRESS
161 real(r8),
intent(inout) :: tl_ustr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
162 real(r8),
intent(inout) :: tl_vstr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
166 real(r8),
intent(inout) :: tl_tflux(LBi:UBi,LBj:UBj, &
167 & Nfrec(ng),2,NT(ng))
169 real(r8),
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
170 real(r8),
intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
171 real(r8),
intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
173 real(r8),
intent(inout) :: tl_ubar(LBi:UBi,LBj:UBj,:)
174 real(r8),
intent(inout) :: tl_vbar(LBi:UBi,LBj:UBj,:)
176 real(r8),
intent(inout) :: tl_zeta(LBi:UBi,LBj:UBj,:)
181 integer :: i, ib, ir, j, k
186# include "set_bounds.h"
196 tl_zeta(i,j,lout)=tl_zeta(i,j,linp)+ &
201# ifdef ADJUST_BOUNDARY
208 &
domain(ng)%Western_Edge(tile))
THEN
211 tl_zeta_obc(j,ib,ir,lout)=tl_zeta_obc(j,ib,ir,linp)+ &
212 & tl_zeta_obc(j,ib,ir,lout)
216 &
domain(ng)%Eastern_Edge(tile))
THEN
219 tl_zeta_obc(j,ib,ir,lout)=tl_zeta_obc(j,ib,ir,linp)+ &
220 & tl_zeta_obc(j,ib,ir,lout)
224 &
domain(ng)%Southern_Edge(tile))
THEN
227 tl_zeta_obc(i,ib,ir,lout)=tl_zeta_obc(i,ib,ir,linp)+ &
228 & tl_zeta_obc(i,ib,ir,lout)
232 &
domain(ng)%Northern_Edge(tile))
THEN
235 tl_zeta_obc(i,ib,ir,lout)=tl_zeta_obc(i,ib,ir,linp)+ &
236 & tl_zeta_obc(i,ib,ir,lout)
249 tl_ubar(i,j,lout)=tl_ubar(i,j,linp)+ &
255# ifdef ADJUST_BOUNDARY
262 &
domain(ng)%Western_Edge(tile))
THEN
265 tl_ubar_obc(j,ib,ir,lout)=tl_ubar_obc(j,ib,ir,linp)+ &
266 & tl_ubar_obc(j,ib,ir,lout)
270 &
domain(ng)%Eastern_Edge(tile))
THEN
273 tl_ubar_obc(j,ib,ir,lout)=tl_ubar_obc(j,ib,ir,linp)+ &
274 & tl_ubar_obc(j,ib,ir,lout)
278 &
domain(ng)%Southern_Edge(tile))
THEN
281 tl_ubar_obc(i,ib,ir,lout)=tl_ubar_obc(i,ib,ir,linp)+ &
282 & tl_ubar_obc(i,ib,ir,lout)
286 &
domain(ng)%Northern_Edge(tile))
THEN
289 tl_ubar_obc(i,ib,ir,lout)=tl_ubar_obc(i,ib,ir,linp)+ &
290 & tl_ubar_obc(i,ib,ir,lout)
303 tl_vbar(i,j,lout)=tl_vbar(i,j,linp)+ &
309# ifdef ADJUST_BOUNDARY
316 &
domain(ng)%Western_Edge(tile))
THEN
319 tl_vbar_obc(j,ib,ir,lout)=tl_vbar_obc(j,ib,ir,linp)+ &
320 & tl_vbar_obc(j,ib,ir,lout)
324 &
domain(ng)%Eastern_Edge(tile))
THEN
327 tl_vbar_obc(j,ib,ir,lout)=tl_vbar_obc(j,ib,ir,linp)+ &
328 & tl_vbar_obc(j,ib,ir,lout)
332 &
domain(ng)%Southern_Edge(tile))
THEN
335 tl_vbar_obc(i,ib,ir,lout)=tl_vbar_obc(i,ib,ir,linp)+ &
336 & tl_vbar_obc(i,ib,ir,lout)
340 &
domain(ng)%Northern_Edge(tile))
THEN
343 tl_vbar_obc(i,ib,ir,lout)=tl_vbar_obc(i,ib,ir,linp)+ &
344 & tl_vbar_obc(i,ib,ir,lout)
351# ifdef ADJUST_WSTRESS
358 tl_ustr(i,j,k,lout)=tl_ustr(i,j,k,linp)+ &
359 & tl_ustr(i,j,k,lout)
364 tl_vstr(i,j,k,lout)=tl_vstr(i,j,k,linp)+ &
365 & tl_vstr(i,j,k,lout)
378 tl_u(i,j,k,lout)=tl_u(i,j,k,linp)+ &
384# ifdef ADJUST_BOUNDARY
391 &
domain(ng)%Western_Edge(tile))
THEN
395 tl_u_obc(j,k,ib,ir,lout)=tl_u_obc(j,k,ib,ir,linp)+ &
396 & tl_u_obc(j,k,ib,ir,lout)
401 &
domain(ng)%Eastern_Edge(tile))
THEN
405 tl_u_obc(j,k,ib,ir,lout)=tl_u_obc(j,k,ib,ir,linp)+ &
406 & tl_u_obc(j,k,ib,ir,lout)
411 &
domain(ng)%Southern_Edge(tile))
THEN
415 tl_u_obc(i,k,ib,ir,lout)=tl_u_obc(i,k,ib,ir,linp)+ &
416 & tl_u_obc(i,k,ib,ir,lout)
421 &
domain(ng)%Northern_Edge(tile))
THEN
425 tl_u_obc(i,k,ib,ir,lout)=tl_u_obc(i,k,ib,ir,linp)+ &
426 & tl_u_obc(i,k,ib,ir,lout)
439 tl_v(i,j,k,lout)=tl_v(i,j,k,linp)+ &
445# ifdef ADJUST_BOUNDARY
452 &
domain(ng)%Western_Edge(tile))
THEN
456 tl_v_obc(j,k,ib,ir,lout)=tl_v_obc(j,k,ib,ir,linp)+ &
457 & tl_v_obc(j,k,ib,ir,lout)
462 &
domain(ng)%Eastern_Edge(tile))
THEN
466 tl_v_obc(j,k,ib,ir,lout)=tl_v_obc(j,k,ib,ir,linp)+ &
467 & tl_v_obc(j,k,ib,ir,lout)
472 &
domain(ng)%Southern_Edge(tile))
THEN
476 tl_v_obc(i,k,ib,ir,lout)=tl_v_obc(i,k,ib,ir,linp)+ &
477 & tl_v_obc(i,k,ib,ir,lout)
482 &
domain(ng)%Northern_Edge(tile))
THEN
486 tl_v_obc(i,k,ib,ir,lout)=tl_v_obc(i,k,ib,ir,linp)+ &
487 & tl_v_obc(i,k,ib,ir,lout)
501 tl_t(i,j,k,lout,itrc)=tl_t(i,j,k,linp,itrc)+ &
502 & tl_t(i,j,k,lout,itrc)
508# ifdef ADJUST_BOUNDARY
516 &
domain(ng)%Western_Edge(tile))
THEN
520 tl_t_obc(j,k,ib,ir,lout,itrc)= &
521 & tl_t_obc(j,k,ib,ir,linp,itrc)+ &
522 & tl_t_obc(j,k,ib,ir,lout,itrc)
527 &
domain(ng)%Eastern_Edge(tile))
THEN
531 tl_t_obc(j,k,ib,ir,lout,itrc)= &
532 & tl_t_obc(j,k,ib,ir,linp,itrc)+ &
533 & tl_t_obc(j,k,ib,ir,lout,itrc)
538 &
domain(ng)%Southern_Edge(tile))
THEN
542 tl_t_obc(i,k,ib,ir,lout,itrc)= &
543 & tl_t_obc(i,k,ib,ir,linp,itrc)+ &
544 & tl_t_obc(i,k,ib,ir,lout,itrc)
549 &
domain(ng)%Northern_Edge(tile))
THEN
553 tl_t_obc(i,k,ib,ir,lout,itrc)= &
554 & tl_t_obc(i,k,ib,ir,linp,itrc)+ &
555 & tl_t_obc(i,k,ib,ir,lout,itrc)
572 tl_tflux(i,j,k,lout,itrc)=tl_tflux(i,j,k,linp,itrc)+ &
573 & tl_tflux(i,j,k,lout,itrc)