208 & LBi, UBi, LBj, UBj, LBij, UBij, &
209 & IminS, ImaxS, JminS, JmaxS, &
210 & nstp, nnew, Linp, Lweak, ifac, &
211 & pm, om_p, om_r, om_u, om_v, &
212 & pn, on_p, on_r, on_u, on_v, &
213 & pmon_p, pmon_r, pmon_u, &
214 & pnom_p, pnom_r, pnom_v, &
216 & rmask, pmask, umask, vmask, &
223# if defined SEDIMENT && defined SED_MORPH
232# ifdef ADJUST_BOUNDARY
234 & VnormRobc, VnormUobc, VnormVobc, &
236 & HnormRobc, HnormUobc, HnormVobc, &
238# ifdef ADJUST_WSTRESS
239 & HnormSUS, HnormSVS, &
241# if defined ADJUST_STFLUX && defined SOLVE3D
245 & VnormR, VnormU, VnormV, &
247 & HnormR, HnormU, HnormV, &
248# ifdef ADJUST_BOUNDARY
250 & ad_t_obc, ad_u_obc, ad_v_obc, &
252 & ad_ubar_obc, ad_vbar_obc, &
255# ifdef ADJUST_WSTRESS
256 & ad_ustr, ad_vstr, &
258# if defined ADJUST_STFLUX && defined SOLVE3D
262 & ad_t, ad_u, ad_v, &
264 & ad_ubar, ad_vbar, ad_zeta)
276# ifdef ADJUST_BOUNDARY
289 logical,
intent(in) :: Lweak
291 integer,
intent(in) :: ng, tile
292 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
293 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
294 integer,
intent(in) :: nstp, nnew, Linp, ifac
297 real(r8),
intent(in) :: pm(LBi:,LBj:)
298 real(r8),
intent(in) :: om_p(LBi:,LBj:)
299 real(r8),
intent(in) :: om_r(LBi:,LBj:)
300 real(r8),
intent(in) :: om_u(LBi:,LBj:)
301 real(r8),
intent(in) :: om_v(LBi:,LBj:)
302 real(r8),
intent(in) :: pn(LBi:,LBj:)
303 real(r8),
intent(in) :: on_p(LBi:,LBj:)
304 real(r8),
intent(in) :: on_r(LBi:,LBj:)
305 real(r8),
intent(in) :: on_u(LBi:,LBj:)
306 real(r8),
intent(in) :: on_v(LBi:,LBj:)
307 real(r8),
intent(in) :: pmon_p(LBi:,LBj:)
308 real(r8),
intent(in) :: pmon_r(LBi:,LBj:)
309 real(r8),
intent(in) :: pmon_u(LBi:,LBj:)
310 real(r8),
intent(in) :: pnom_p(LBi:,LBj:)
311 real(r8),
intent(in) :: pnom_r(LBi:,LBj:)
312 real(r8),
intent(in) :: pnom_v(LBi:,LBj:)
314 real(r8),
intent(in) :: rmask(LBi:,LBj:)
315 real(r8),
intent(in) :: pmask(LBi:,LBj:)
316 real(r8),
intent(in) :: umask(LBi:,LBj:)
317 real(r8),
intent(in) :: vmask(LBi:,LBj:)
319 real(r8),
intent(in) :: Kh(LBi:,LBj:)
321 real(r8),
intent(in) :: Kv(LBi:,LBj:,0:)
323 real(r8),
intent(in) :: zice(LBi:,LBj:)
325# if defined SEDIMENT && defined SED_MORPH
326 real(r8),
intent(inout):: bed_thick(LBi:,LBj:,:)
328 real(r8),
intent(inout) :: h(LBi:,LBj:)
330# ifdef ADJUST_BOUNDARY
332 real(r8),
intent (in) :: VnormRobc(LBij:,:,:,:)
333 real(r8),
intent (in) :: VnormUobc(LBij:,:,:)
334 real(r8),
intent (in) :: VnormVobc(LBij:,:,:)
336 real(r8),
intent (in) :: HnormRobc(LBij:,:)
337 real(r8),
intent (in) :: HnormUobc(LBij:,:)
338 real(r8),
intent (in) :: HnormVobc(LBij:,:)
340# ifdef ADJUST_WSTRESS
341 real(r8),
intent(in) :: HnormSUS(LBi:,LBj:)
342 real(r8),
intent(in) :: HnormSVS(LBi:,LBj:)
344# if defined ADJUST_STFLUX && defined SOLVE3D
345 real(r8),
intent(in) :: HnormSTF(LBi:,LBj:,:)
348 real(r8),
intent(in) :: VnormR(LBi:,LBj:,:,:,:)
349 real(r8),
intent(in) :: VnormU(LBi:,LBj:,:,:)
350 real(r8),
intent(in) :: VnormV(LBi:,LBj:,:,:)
352 real(r8),
intent(in) :: HnormR(LBi:,LBj:,:)
353 real(r8),
intent(in) :: HnormU(LBi:,LBj:,:)
354 real(r8),
intent(in) :: HnormV(LBi:,LBj:,:)
355# ifdef ADJUST_BOUNDARY
357 real(r8),
intent(inout) :: ad_t_obc(LBij:,:,:,:,:,:)
358 real(r8),
intent(inout) :: ad_u_obc(LBij:,:,:,:,:)
359 real(r8),
intent(inout) :: ad_v_obc(LBij:,:,:,:,:)
361 real(r8),
intent(inout) :: ad_ubar_obc(LBij:,:,:,:)
362 real(r8),
intent(inout) :: ad_vbar_obc(LBij:,:,:,:)
363 real(r8),
intent(inout) :: ad_zeta_obc(LBij:,:,:,:)
365# ifdef ADJUST_WSTRESS
366 real(r8),
intent(inout) :: ad_ustr(LBi:,LBj:,:,:)
367 real(r8),
intent(inout) :: ad_vstr(LBi:,LBj:,:,:)
369# if defined ADJUST_STFLUX && defined SOLVE3D
370 real(r8),
intent(inout) :: ad_tflux(LBi:,LBj:,:,:,:)
373 real(r8),
intent(inout) :: ad_t(LBi:,LBj:,:,:,:)
374 real(r8),
intent(inout) :: ad_u(LBi:,LBj:,:,:)
375 real(r8),
intent(inout) :: ad_v(LBi:,LBj:,:,:)
377 real(r8),
intent(inout) :: ad_ubar(LBi:,LBj:,:)
378 real(r8),
intent(inout) :: ad_vbar(LBi:,LBj:,:)
379 real(r8),
intent(inout) :: ad_zeta(LBi:,LBj:,:)
381 real(r8),
intent(out) :: Hz(LBi:,LBj:,:)
382 real(r8),
intent(out) :: z_r(LBi:,LBj:,:)
383 real(r8),
intent(out) :: z_w(LBi:,LBj:,0:)
386 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
387 real(r8),
intent(in) :: om_p(LBi:UBi,LBj:UBj)
388 real(r8),
intent(in) :: om_r(LBi:UBi,LBj:UBj)
389 real(r8),
intent(in) :: om_u(LBi:UBi,LBj:UBj)
390 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
391 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
392 real(r8),
intent(in) :: on_p(LBi:UBi,LBj:UBj)
393 real(r8),
intent(in) :: on_r(LBi:UBi,LBj:UBj)
394 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
395 real(r8),
intent(in) :: on_v(LBi:UBi,LBj:UBj)
396 real(r8),
intent(in) :: pmon_p(LBi:UBi,LBj:UBj)
397 real(r8),
intent(in) :: pmon_r(LBi:UBi,LBj:UBj)
398 real(r8),
intent(in) :: pmon_u(LBi:UBi,LBj:UBj)
399 real(r8),
intent(in) :: pnom_p(LBi:UBi,LBj:UBj)
400 real(r8),
intent(in) :: pnom_r(LBi:UBi,LBj:UBj)
401 real(r8),
intent(in) :: pnom_v(LBi:UBi,LBj:UBj)
403 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
404 real(r8),
intent(in) :: pmask(LBi:UBi,LBj:UBj)
405 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
406 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
408 real(r8),
intent(in) :: Kh(LBi:UBi,LBj:UBj)
410 real(r8),
intent(in) :: Kv(LBi:UBi,LBj:UBj,0:N(ng))
412 real(r8),
intent(in) :: zice(LBi:UBi,LBj:UBj)
414# if defined SEDIMENT && defined SED_MORPH
415 real(r8),
intent(inout):: bed_thick(LBi:UBi,LBj:UBj,3)
417 real(r8),
intent(inout) :: h(LBi:UBi,LBj:UBj)
419# ifdef ADJUST_BOUNDARY
421 real(r8),
intent (in) :: VnormRobc(LBij:UBij,N(ng),4,NT(ng))
422 real(r8),
intent (in) :: VnormUobc(LBij:UBij,N(ng),4)
423 real(r8),
intent (in) :: VnormVobc(LBij:UBij,N(ng),4)
425 real(r8),
intent (in) :: HnormRobc(LBij:UBij,4)
426 real(r8),
intent (in) :: HnormUobc(LBij:UBij,4)
427 real(r8),
intent (in) :: HnormVobc(LBij:UBij,4)
429# ifdef ADJUST_WSTRESS
430 real(r8),
intent(in) :: HnormSUS(LBi:UBi,LBj:UBj)
431 real(r8),
intent(in) :: HnormSVS(LBi:UBi,LBj:UBj)
433# if defined ADJUST_STFLUX && defined SOLVE3D
434 real(r8),
intent(in) :: HnormSTF(LBi:UBi,LBj:UBj,NT(ng))
437 real(r8),
intent(in) :: VnormR(LBi:UBi,LBj:UBj,N(ng),NSA,NT(ng))
438 real(r8),
intent(in) :: VnormU(LBi:UBi,LBj:UBj,NSA,N(ng))
439 real(r8),
intent(in) :: VnormV(LBi:UBi,LBj:UBj,NSA,N(ng))
441 real(r8),
intent(in) :: HnormR(LBi:UBi,LBj:UBj,NSA)
442 real(r8),
intent(in) :: HnormU(LBi:UBi,LBj:UBj,NSA)
443 real(r8),
intent(in) :: HnormV(LBi:UBi,LBj:UBj,NSA)
444# ifdef ADJUST_BOUNDARY
446 real(r8),
intent(inout) :: ad_t_obc(LBij:UBij,N(ng),4, &
447 & Nbrec(ng),2,NT(ng))
448 real(r8),
intent(inout) :: ad_u_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
449 real(r8),
intent(inout) :: ad_v_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
451 real(r8),
intent(inout) :: ad_ubar_obc(LBij:UBij,4,Nbrec(ng),2)
452 real(r8),
intent(inout) :: ad_vbar_obc(LBij:UBij,4,Nbrec(ng),2)
453 real(r8),
intent(inout) :: ad_zeta_obc(LBij:UBij,4,Nbrec(ng),2)
455# ifdef ADJUST_WSTRESS
456 real(r8),
intent(inout) :: ad_ustr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
457 real(r8),
intent(inout) :: ad_vstr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
459# if defined ADJUST_STFLUX && defined SOLVE3D
460 real(r8),
intent(inout) :: ad_tflux(LBi:UBi,LBj:UBj, &
461 & Nfrec(ng),2,NT(ng))
464 real(r8),
intent(inout) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
465 real(r8),
intent(inout) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
466 real(r8),
intent(inout) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
468 real(r8),
intent(inout) :: ad_ubar(LBi:UBi,LBj:UBj,:)
469 real(r8),
intent(inout) :: ad_vbar(LBi:UBi,LBj:UBj,:)
470 real(r8),
intent(inout) :: ad_zeta(LBi:UBi,LBj:UBj,:)
472 real(r8),
intent(out) :: Hz(LBi:UBi,LBj:UBj,N(ng))
473 real(r8),
intent(out) :: z_r(LBi:UBi,LBj:UBj,N(ng))
474 real(r8),
intent(out) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
480# ifdef ADJUST_BOUNDARY
481 logical,
dimension(4) :: Lconvolve
483 integer :: i, ib, ir, is, it, j, k, rec
489 real(r8),
dimension(LBi:UBi,LBj:UBj) :: work
492# include "set_bounds.h"
504# ifdef ADJUST_BOUNDARY
528 & lbi, ubi, lbj, ubj, &
529 & imins, imaxs, jmins, jmaxs, &
535# if defined SEDIMENT && defined SED_MORPH
548 & lbi, ubi, lbj, ubj, &
551 & ad_zeta(:,:,linp), &
552 & ad_ubar(:,:,linp), &
560 ad_zeta(i,j,linp)=ad_zeta(i,j,linp)*hnormr(i,j,rec)
568 ad_ubar(i,j,linp)=ad_ubar(i,j,linp)*hnormu(i,j,rec)
573 ad_vbar(i,j,linp)=ad_vbar(i,j,linp)*hnormv(i,j,rec)
582 & lbi, ubi, lbj, ubj, 1, n(ng), &
585 & ad_u(:,:,:,linp), &
591 ad_u(i,j,k,linp)=ad_u(i,j,k,linp)*vnormu(i,j,k,rec)
596 ad_v(i,j,k,linp)=ad_v(i,j,k,linp)*vnormv(i,j,k,rec)
605 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &
608 & ad_t(:,:,:,linp,:))
614 ad_t(i,j,k,linp,it)=ad_t(i,j,k,linp,it)* &
615 & vnormr(i,j,k,rec,it)
622# ifdef ADJUST_BOUNDARY
634 & ad_zeta_obc(:,ib,ir,linp))
636 IF (lconvolve(ib))
THEN
639 ad_zeta_obc(j,ib,ir,linp)=ad_zeta_obc(j,ib,ir,linp)* &
644 ad_zeta_obc(i,ib,ir,linp)=ad_zeta_obc(i,ib,ir,linp)* &
663 & ad_ubar_obc(:,ib,ir,linp))
665 IF (lconvolve(ib))
THEN
668 ad_ubar_obc(j,ib,ir,linp)=ad_ubar_obc(j,ib,ir,linp)* &
673 ad_ubar_obc(i,ib,ir,linp)=ad_ubar_obc(i,ib,ir,linp)* &
692 & ad_vbar_obc(:,ib,ir,linp))
694 IF (lconvolve(ib))
THEN
697 ad_vbar_obc(j,ib,ir,linp)=ad_vbar_obc(j,ib,ir,linp)* &
702 ad_vbar_obc(i,ib,ir,linp)=ad_vbar_obc(i,ib,ir,linp)* &
720 & lbij, ubij, 1, n(ng), &
723 & ad_u_obc(:,:,ib,ir,linp))
725 IF (lconvolve(ib))
THEN
729 ad_u_obc(j,k,ib,ir,linp)=ad_u_obc(j,k,ib,ir,linp)* &
736 ad_u_obc(i,k,ib,ir,linp)=ad_u_obc(i,k,ib,ir,linp)* &
753 & lbij, ubij, 1, n(ng), &
756 & ad_v_obc(:,:,ib,ir,linp))
758 IF (lconvolve(ib))
THEN
762 ad_v_obc(j,k,ib,ir,linp)=ad_v_obc(j,k,ib,ir,linp)* &
769 ad_v_obc(i,k,ib,ir,linp)=ad_v_obc(i,k,ib,ir,linp)* &
784 IF (.not.lweak.and.
lobc(ib,
istvar(it),ng))
THEN
787 & lbij, ubij, 1, n(ng), &
790 & ad_t_obc(:,:,ib,ir,linp,it))
792 IF (lconvolve(ib))
THEN
796 ad_t_obc(j,k,ib,ir,linp,it)= &
797 & ad_t_obc(j,k,ib,ir,linp,it)* &
798 & vnormrobc(j,k,ib,it)
804 ad_t_obc(i,k,ib,ir,linp,it)= &
805 & ad_t_obc(i,k,ib,ir,linp,it)* &
806 & vnormrobc(i,k,ib,it)
818# ifdef ADJUST_WSTRESS
825 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
828 & ad_ustr(:,:,:,linp), &
829 & ad_vstr(:,:,:,linp))
834 ad_ustr(i,j,k,linp)=ad_ustr(i,j,k,linp)*hnormsus(i,j)
839 ad_vstr(i,j,k,linp)=ad_vstr(i,j,k,linp)*hnormsvs(i,j)
854 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
857 & ad_tflux(:,:,:,linp,it))
862 ad_tflux(i,j,k,linp,it)=ad_tflux(i,j,k,linp,it)* &
882 & lbi, ubi, lbj, ubj, &
883 & imins, imaxs, jmins, jmaxs, &
888 & pm, pn, pmon_u, pnom_v, &
890 & rmask, umask, vmask, &
897 & lbi, ubi, lbj, ubj, &
898 & imins, imaxs, jmins, jmaxs, &
903 & pm, pn, pmon_r, pnom_p, &
910 & lbi, ubi, lbj, ubj, &
911 & imins, imaxs, jmins, jmaxs, &
916 & pm, pn, pmon_p, pnom_r, &
926 & lbi, ubi, lbj, ubj, 1, n(ng), &
927 & imins, imaxs, jmins, jmaxs, &
935# ifdef GEOPOTENTIAL_HCONV
941# ifdef GEOPOTENTIAL_HCONV
942 & pmask, rmask, umask, vmask, &
951 & lbi, ubi, lbj, ubj, 1, n(ng), &
952 & imins, imaxs, jmins, jmaxs, &
960# ifdef GEOPOTENTIAL_HCONV
966# ifdef GEOPOTENTIAL_HCONV
967 & pmask, rmask, umask, vmask, &
980 & lbi, ubi, lbj, ubj, 1, n(ng), &
981 & imins, imaxs, jmins, jmaxs, &
989# ifdef GEOPOTENTIAL_HCONV
995 & rmask, umask, vmask, &
998 & ad_t(:,:,:,linp,it))
1002# ifdef ADJUST_BOUNDARY
1019 & lbi, ubi, lbj, ubj, &
1020 & imins, imaxs, jmins, jmaxs, &
1025 & pm, pn, pmon_u, pnom_v, &
1027 & rmask, umask, vmask, &
1029 & ad_zeta_obc(:,ib,ir,linp))
1042 & lbi, ubi, lbj, ubj, &
1043 & imins, imaxs, jmins, jmaxs, &
1048 & pm, pn, pmon_r, pnom_p, &
1052 & ad_ubar_obc(:,ib,ir,linp))
1065 & lbi, ubi, lbj, ubj, &
1066 & imins, imaxs, jmins, jmaxs, &
1071 & pm, pn, pmon_p, pnom_r, &
1075 & ad_vbar_obc(:,ib,ir,linp))
1090 & lbi, ubi, lbj, ubj, 1, n(ng), &
1091 & imins, imaxs, jmins, jmaxs, &
1098 & pm, pn, pmon_r, pnom_p, &
1103 & ad_u_obc(:,:,ib,ir,linp))
1116 & lbi, ubi, lbj, ubj, 1, n(ng), &
1117 & imins, imaxs, jmins, jmaxs, &
1124 & pm, pn, pmon_p, pnom_r, &
1129 & ad_v_obc(:,:,ib,ir,linp))
1140 IF (.not.lweak.and.
lobc(ib,is,ng))
THEN
1144 & lbi, ubi, lbj, ubj, 1, n(ng), &
1145 & imins, imaxs, jmins, jmaxs, &
1152 & pm, pn, pmon_u, pnom_v, &
1154 & rmask, umask, vmask, &
1157 & ad_t_obc(:,:,ib,ir,linp,it))
1165# if defined ADJUST_WSTRESS || defined ADJUST_STFLUX
1174# ifdef ADJUST_WSTRESS
1178 IF (.not.lweak)
THEN
1181 & lbi, ubi, lbj, ubj, &
1182 & imins, imaxs, jmins, jmaxs, &
1187 & pm, pn, pmon_r, pnom_p, &
1191 & ad_ustr(:,:,k,linp))
1194 & lbi, ubi, lbj, ubj, &
1195 & imins, imaxs, jmins, jmaxs, &
1200 & pm, pn, pmon_p, pnom_r, &
1204 & ad_vstr(:,:,k,linp))
1208# if defined ADJUST_STFLUX && defined SOLVE3D
1212 IF (.not.lweak)
THEN
1218 & lbi, ubi, lbj, ubj, &
1219 & imins, imaxs, jmins, jmaxs, &
1224 & pm, pn, pmon_u, pnom_v, &
1226 & rmask, umask, vmask, &
1228 & ad_tflux(:,:,k,linp,it))
1245 & lbi, ubi, lbj, ubj, &
1248 & ad_zeta(:,:,linp), &
1249 & ad_ubar(:,:,linp), &
1250 & ad_vbar(:,:,linp))
1254 ad_zeta(i,j,linp)=ad_zeta(i,j,linp)/ &
1255 & sqrt(om_r(i,j)*on_r(i,j))
1263 ad_ubar(i,j,linp)=ad_ubar(i,j,linp)/ &
1264 & sqrt(om_u(i,j)*on_u(i,j))
1269 ad_vbar(i,j,linp)=ad_vbar(i,j,linp)/ &
1270 & sqrt(om_v(i,j)*on_v(i,j))
1279 & lbi, ubi, lbj, ubj, 1, n(ng), &
1282 & ad_u(:,:,:,linp), &
1287 cff=om_u(i,j)*on_u(i,j)*0.5_r8
1289 ad_u(i,j,k,linp)=ad_u(i,j,k,linp)/ &
1290 & sqrt(cff*(hz(i-1,j,k)+hz(i,j,k)))
1296 cff=om_v(i,j)*on_v(i,j)*0.5_r8
1298 ad_v(i,j,k,linp)=ad_v(i,j,k,linp)/ &
1299 & sqrt(cff*(hz(i,j-1,k)+hz(i,j,k)))
1308 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &
1311 & ad_t(:,:,:,linp,:))
1315 cff=om_r(i,j)*on_r(i,j)
1317 fac=1.0_r8/sqrt(cff*hz(i,j,k))
1319 ad_t(i,j,k,linp,it)=fac*ad_t(i,j,k,linp,it)
1326# ifdef ADJUST_BOUNDARY
1338 & ad_zeta_obc(:,ib,ir,linp))
1340 IF (lconvolve(ib))
THEN
1344 ad_zeta_obc(j,ib,ir,linp)=ad_zeta_obc(j,ib,ir,linp)/ &
1350 ad_zeta_obc(i,ib,ir,linp)=ad_zeta_obc(i,ib,ir,linp)/ &
1369 & ad_ubar_obc(:,ib,ir,linp))
1371 IF (lconvolve(ib))
THEN
1375 ad_ubar_obc(j,ib,ir,linp)=ad_ubar_obc(j,ib,ir,linp)/ &
1381 ad_ubar_obc(i,ib,ir,linp)=ad_ubar_obc(i,ib,ir,linp)/ &
1400 & ad_vbar_obc(:,ib,ir,linp))
1402 IF (lconvolve(ib))
THEN
1406 ad_vbar_obc(j,ib,ir,linp)=ad_vbar_obc(j,ib,ir,linp)/ &
1412 ad_vbar_obc(i,ib,ir,linp)=ad_vbar_obc(i,ib,ir,linp)/ &
1430 & lbij, ubij, 1, n(ng), &
1433 & ad_u_obc(:,:,ib,ir,linp))
1435 IF (lconvolve(ib))
THEN
1439 cff=on_u(i,j)*0.5_r8
1441 ad_u_obc(j,k,ib,ir,linp)=ad_u_obc(j,k,ib,ir,linp)/ &
1450 cff=om_u(i,j)*0.5_r8
1452 ad_u_obc(i,k,ib,ir,linp)=ad_u_obc(i,k,ib,ir,linp)/ &
1471 & lbij, ubij, 1, n(ng), &
1474 & ad_v_obc(:,:,ib,ir,linp))
1476 IF (lconvolve(ib))
THEN
1480 cff=on_v(i,j)*0.5_r8
1482 ad_v_obc(j,k,ib,ir,linp)=ad_v_obc(j,k,ib,ir,linp)/ &
1491 cff=om_v(i,j)*0.5_r8
1493 ad_v_obc(i,k,ib,ir,linp)=ad_v_obc(i,k,ib,ir,linp)/ &
1510 IF (.not.lweak.and.
lobc(ib,
istvar(it),ng))
THEN
1513 & lbij, ubij, 1, n(ng), &
1516 & ad_t_obc(:,:,ib,ir,linp,it))
1518 IF (lconvolve(ib))
THEN
1524 ad_t_obc(j,k,ib,ir,linp,it)= &
1525 & ad_t_obc(j,k,ib,ir,linp,it)/ &
1526 & sqrt(cff*hz(i,j,k))
1534 ad_t_obc(i,k,ib,ir,linp,it)= &
1535 & ad_t_obc(i,k,ib,ir,linp,it)/ &
1536 & sqrt(cff*hz(i,j,k))
1548# ifdef ADJUST_WSTRESS
1552 IF (.not.lweak)
THEN
1555 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
1558 & ad_ustr(:,:,:,linp), &
1559 & ad_vstr(:,:,:,linp))
1564 ad_ustr(i,j,k,linp)=ad_ustr(i,j,k,linp)/ &
1565 & sqrt(om_u(i,j)*on_u(i,j))
1570 ad_vstr(i,j,k,linp)=ad_vstr(i,j,k,linp)/ &
1571 & sqrt(om_v(i,j)*on_v(i,j))
1578# if defined ADJUST_STFLUX && defined SOLVE3D
1582 IF (.not.lweak)
THEN
1587 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
1590 & ad_tflux(:,:,:,linp,it))
1596 fac=1.0_r8/sqrt(om_r(i,j)*on_r(i,j))
1600 ad_tflux(i,j,k,linp,it)=fac*ad_tflux(i,j,k,linp,it)