25 & LBi, UBi, LBj, UBj, LBij, UBij, &
29 & s1_t_obc, s2_t_obc, &
30 & s1_u_obc, s2_u_obc, &
31 & s1_v_obc, s2_v_obc, &
33 & s1_ubar_obc, s2_ubar_obc, &
34 & s1_vbar_obc, s2_vbar_obc, &
35 & s1_zeta_obc, s2_zeta_obc, &
38 & s1_sustr, s2_sustr, &
39 & s1_svstr, s2_svstr, &
43 & s1_tflux, s2_tflux, &
48# if defined WEAK_CONSTRAINT && defined TIME_CONV
60#if defined ADJUST_BOUNDARY || defined ADJUST_STFLUX || \
61 defined adjust_wstress
68 integer,
intent(in) :: ng, tile
69 integer,
intent(in) :: lbi, ubi, lbj, ubj, lbij, ubij
70 integer,
intent(in) :: linp, lout
73# ifdef ADJUST_BOUNDARY
75 real(r8),
intent(in) :: s2_t_obc(lbij:,:,:,:,:,:)
76 real(r8),
intent(in) :: s2_u_obc(lbij:,:,:,:,:)
77 real(r8),
intent(in) :: s2_v_obc(lbij:,:,:,:,:)
79 real(r8),
intent(in) :: s2_ubar_obc(lbij:,:,:,:)
80 real(r8),
intent(in) :: s2_vbar_obc(lbij:,:,:,:)
81 real(r8),
intent(in) :: s2_zeta_obc(lbij:,:,:,:)
84 real(r8),
intent(in) :: s2_sustr(lbi:,lbj:,:,:)
85 real(r8),
intent(in) :: s2_svstr(lbi:,lbj:,:,:)
89 real(r8),
intent(in) :: s2_tflux(lbi:,lbj:,:,:,:)
91 real(r8),
intent(in) :: s2_t(lbi:,lbj:,:,:,:)
92 real(r8),
intent(in) :: s2_u(lbi:,lbj:,:,:)
93 real(r8),
intent(in) :: s2_v(lbi:,lbj:,:,:)
94# if defined WEAK_CONSTRAINT && defined TIME_CONV
95 real(r8),
intent(in) :: s2_ubar(lbi:,lbj:,:)
96 real(r8),
intent(in) :: s2_vbar(lbi:,lbj:,:)
99 real(r8),
intent(in) :: s2_ubar(lbi:,lbj:,:)
100 real(r8),
intent(in) :: s2_vbar(lbi:,lbj:,:)
102 real(r8),
intent(in) :: s2_zeta(lbi:,lbj:,:)
104# ifdef ADJUST_BOUNDARY
106 real(r8),
intent(inout) :: s1_t_obc(lbij:,:,:,:,:,:)
107 real(r8),
intent(inout) :: s1_u_obc(lbij:,:,:,:,:)
108 real(r8),
intent(inout) :: s1_v_obc(lbij:,:,:,:,:)
110 real(r8),
intent(inout) :: s1_ubar_obc(lbij:,:,:,:)
111 real(r8),
intent(inout) :: s1_vbar_obc(lbij:,:,:,:)
112 real(r8),
intent(inout) :: s1_zeta_obc(lbij:,:,:,:)
114# ifdef ADJUST_WSTRESS
115 real(r8),
intent(inout) :: s1_sustr(lbi:,lbj:,:,:)
116 real(r8),
intent(inout) :: s1_svstr(lbi:,lbj:,:,:)
120 real(r8),
intent(inout) :: s1_tflux(lbi:,lbj:,:,:,:)
122 real(r8),
intent(inout) :: s1_t(lbi:,lbj:,:,:,:)
123 real(r8),
intent(inout) :: s1_u(lbi:,lbj:,:,:)
124 real(r8),
intent(inout) :: s1_v(lbi:,lbj:,:,:)
125# if defined WEAK_CONSTRAINT && defined TIME_CONV
126 real(r8),
intent(inout) :: s1_ubar(lbi:,lbj:,:)
127 real(r8),
intent(inout) :: s1_vbar(lbi:,lbj:,:)
130 real(r8),
intent(inout) :: s1_ubar(lbi:,lbj:,:)
131 real(r8),
intent(inout) :: s1_vbar(lbi:,lbj:,:)
133 real(r8),
intent(inout) :: s1_zeta(lbi:,lbj:,:)
137# ifdef ADJUST_BOUNDARY
139 real(r8),
intent(in) :: s2_t_obc(lbij:ubij,
n(ng),4, &
140 & Nbrec(ng),2,NT(ng))
141 real(r8),
intent(in) :: s2_u_obc(lbij:ubij,
n(ng),4,
nbrec(ng),2)
142 real(r8),
intent(in) :: s2_v_obc(lbij:ubij,
n(ng),4,
nbrec(ng),2)
144 real(r8),
intent(in) :: s2_ubar_obc(lbij:ubij,4,
nbrec(ng),2)
145 real(r8),
intent(in) :: s2_vbar_obc(lbij:ubij,4,
nbrec(ng),2)
146 real(r8),
intent(in) :: s2_zeta_obc(lbij:ubij,4,
nbrec(ng),2)
148# ifdef ADJUST_WSTRESS
149 real(r8),
intent(in) :: s2_sustr(lbi:ubi,lbj:ubj,
nfrec(ng),2)
150 real(r8),
intent(in) :: s2_svstr(lbi:ubi,lbj:ubj,
nfrec(ng),2)
154 real(r8),
intent(in) :: s2_tflux(lbi:ubi,lbj:ubj, &
155 & Nfrec(ng),2,NT(ng))
157 real(r8),
intent(in) :: s2_t(lbi:ubi,lbj:ubj,
n(ng),3,
nt(ng))
158 real(r8),
intent(in) :: s2_u(lbi:ubi,lbj:ubj,
n(ng),2)
159 real(r8),
intent(in) :: s2_v(lbi:ubi,lbj:ubj,
n(ng),2)
160# if defined WEAK_CONSTRAINT && defined TIME_CONV
161 real(r8),
intent(in) :: s2_ubar(lbi:ubi,lbj:ubj,:)
162 real(r8),
intent(in) :: s2_vbar(lbi:ubi,lbj:ubj,:)
165 real(r8),
intent(in) :: s2_ubar(lbi:ubi,lbj:ubj,:)
166 real(r8),
intent(in) :: s2_vbar(lbi:ubi,lbj:ubj,:)
168 real(r8),
intent(in) :: s2_zeta(lbi:ubi,lbj:ubj,:)
170# ifdef ADJUST_BOUNDARY
172 real(r8),
intent(inout) :: s1_t_obc(lbij:ubij,
n(ng),4, &
173 & Nbrec(ng),2,NT(ng))
174 real(r8),
intent(inout) :: s1_u_obc(lbij:ubij,
n(ng),4,
nbrec(ng),2)
175 real(r8),
intent(inout) :: s1_v_obc(lbij:ubij,
n(ng),4,
nbrec(ng),2)
177 real(r8),
intent(inout) :: s1_ubar_obc(lbij:ubij,4,
nbrec(ng),2)
178 real(r8),
intent(inout) :: s1_vbar_obc(lbij:ubij,4,
nbrec(ng),2)
179 real(r8),
intent(inout) :: s1_zeta_obc(lbij:ubij,4,
nbrec(ng),2)
181# ifdef ADJUST_WSTRESS
182 real(r8),
intent(inout) :: s1_sustr(lbi:ubi,lbj:ubj,
nfrec(ng),2)
183 real(r8),
intent(inout) :: s1_svstr(lbi:ubi,lbj:ubj,
nfrec(ng),2)
187 real(r8),
intent(inout) :: s1_tflux(lbi:ubi,lbj:ubj, &
188 & Nfrec(ng),2,NT(ng))
190 real(r8),
intent(inout) :: s1_t(lbi:ubi,lbj:ubj,
n(ng),3,
nt(ng))
191 real(r8),
intent(inout) :: s1_u(lbi:ubi,lbj:ubj,
n(ng),2)
192 real(r8),
intent(inout) :: s1_v(lbi:ubi,lbj:ubj,
n(ng),2)
193# if defined WEAK_CONSTRAINT && defined TIME_CONV
194 real(r8),
intent(inout) :: s1_ubar(lbi:ubi,lbj:ubj,:)
195 real(r8),
intent(inout) :: s1_vbar(lbi:ubi,lbj:ubj,:)
198 real(r8),
intent(inout) :: s1_ubar(lbi:ubi,lbj:ubj,:)
199 real(r8),
intent(inout) :: s1_vbar(lbi:ubi,lbj:ubj,:)
201 real(r8),
intent(inout) :: s1_zeta(lbi:ubi,lbj:ubj,:)
207 integer :: ib, ir, it
209#include "set_bounds.h"
221 s1_zeta(i,j,lout)=s2_zeta(i,j,linp)
225#ifdef ADJUST_BOUNDARY
232 &
domain(ng)%Western_Edge(tile))
THEN
235 s1_zeta_obc(j,ib,ir,lout)=s2_zeta_obc(j,ib,ir,linp)
239 &
domain(ng)%Eastern_Edge(tile))
THEN
242 s1_zeta_obc(j,ib,ir,lout)=s2_zeta_obc(j,ib,ir,linp)
246 &
domain(ng)%Southern_Edge(tile))
THEN
249 s1_zeta_obc(i,ib,ir,lout)=s2_zeta_obc(i,ib,ir,linp)
253 &
domain(ng)%Northern_Edge(tile))
THEN
256 s1_zeta_obc(i,ib,ir,lout)=s2_zeta_obc(i,ib,ir,linp)
263#if !defined SOLVE3D || (defined WEAK_CONSTRAINT && defined TIME_CONV)
269 s1_ubar(i,j,lout)=s2_ubar(i,j,linp)
274#ifdef ADJUST_BOUNDARY
281 &
domain(ng)%Western_Edge(tile))
THEN
284 s1_ubar_obc(j,ib,ir,lout)=s2_ubar_obc(j,ib,ir,linp)
288 &
domain(ng)%Eastern_Edge(tile))
THEN
291 s1_ubar_obc(j,ib,ir,lout)=s2_ubar_obc(j,ib,ir,linp)
295 &
domain(ng)%Southern_Edge(tile))
THEN
298 s1_ubar_obc(i,ib,ir,lout)=s2_ubar_obc(i,ib,ir,linp)
302 &
domain(ng)%Northern_Edge(tile))
THEN
305 s1_ubar_obc(i,ib,ir,lout)=s2_ubar_obc(i,ib,ir,linp)
312#if !defined SOLVE3D || (defined WEAK_CONSTRAINT && defined TIME_CONV)
318 s1_vbar(i,j,lout)=s2_vbar(i,j,linp)
323#ifdef ADJUST_BOUNDARY
330 &
domain(ng)%Western_Edge(tile))
THEN
333 s1_vbar_obc(j,ib,ir,lout)=s2_vbar_obc(j,ib,ir,linp)
337 &
domain(ng)%Eastern_Edge(tile))
THEN
340 s1_vbar_obc(j,ib,ir,lout)=s2_vbar_obc(j,ib,ir,linp)
344 &
domain(ng)%Southern_Edge(tile))
THEN
347 s1_vbar_obc(i,ib,ir,lout)=s2_vbar_obc(i,ib,ir,linp)
351 &
domain(ng)%Northern_Edge(tile))
THEN
354 s1_vbar_obc(i,ib,ir,lout)=s2_vbar_obc(i,ib,ir,linp)
368 s1_sustr(i,j,ir,lout)=s2_sustr(i,j,ir,linp)
373 s1_svstr(i,j,ir,lout)=s2_svstr(i,j,ir,linp)
386 s1_u(i,j,k,lout)=s2_u(i,j,k,linp)
391# ifdef ADJUST_BOUNDARY
398 &
domain(ng)%Western_Edge(tile))
THEN
402 s1_u_obc(j,k,ib,ir,lout)=s2_u_obc(j,k,ib,ir,linp)
407 &
domain(ng)%Eastern_Edge(tile))
THEN
411 s1_u_obc(j,k,ib,ir,lout)=s2_u_obc(j,k,ib,ir,linp)
416 &
domain(ng)%Southern_Edge(tile))
THEN
420 s1_u_obc(i,k,ib,ir,lout)=s2_u_obc(i,k,ib,ir,linp)
425 &
domain(ng)%Northern_Edge(tile))
THEN
429 s1_u_obc(i,k,ib,ir,lout)=s2_u_obc(i,k,ib,ir,linp)
442 s1_v(i,j,k,lout)=s2_v(i,j,k,linp)
447# ifdef ADJUST_BOUNDARY
454 &
domain(ng)%Western_Edge(tile))
THEN
458 s1_v_obc(j,k,ib,ir,lout)=s2_v_obc(j,k,ib,ir,linp)
463 &
domain(ng)%Eastern_Edge(tile))
THEN
467 s1_v_obc(j,k,ib,ir,lout)=s2_v_obc(j,k,ib,ir,linp)
472 &
domain(ng)%Southern_Edge(tile))
THEN
476 s1_v_obc(i,k,ib,ir,lout)=s2_v_obc(i,k,ib,ir,linp)
481 &
domain(ng)%Northern_Edge(tile))
THEN
485 s1_v_obc(i,k,ib,ir,lout)=s2_v_obc(i,k,ib,ir,linp)
499 s1_t(i,j,k,lout,it)=s2_t(i,j,k,linp,it)
505# ifdef ADJUST_BOUNDARY
513 &
domain(ng)%Western_Edge(tile))
THEN
517 s1_t_obc(j,k,ib,ir,lout,it)= &
518 & s2_t_obc(j,k,ib,ir,linp,it)
523 &
domain(ng)%Eastern_Edge(tile))
THEN
527 s1_t_obc(j,k,ib,ir,lout,it)= &
528 & s2_t_obc(j,k,ib,ir,linp,it)
533 &
domain(ng)%Southern_Edge(tile))
THEN
537 s1_t_obc(i,k,ib,ir,lout,it)= &
538 & s2_t_obc(i,k,ib,ir,linp,it)
543 &
domain(ng)%Northern_Edge(tile))
THEN
547 s1_t_obc(i,k,ib,ir,lout,it)= &
548 & s2_t_obc(i,k,ib,ir,linp,it)
566 s1_tflux(i,j,ir,lout,it)=s2_tflux(i,j,ir,linp,it)