210 & LBi, UBi, LBj, UBj, LBij, UBij, &
211 & IminS, ImaxS, JminS, JmaxS, &
212 & nstp, nnew, Linp, Lweak, ifac, &
213 & pm, om_p, om_r, om_u, om_v, &
214 & pn, on_p, on_r, on_u, on_v, &
215 & pmon_p, pmon_r, pmon_u, &
216 & pnom_p, pnom_r, pnom_v, &
218 & rmask, pmask, umask, vmask, &
225# if defined SEDIMENT && defined SED_MORPH
234# ifdef ADJUST_BOUNDARY
236 & VnormRobc, VnormUobc, VnormVobc, &
238 & HnormRobc, HnormUobc, HnormVobc, &
240# ifdef ADJUST_WSTRESS
241 & HnormSUS, HnormSVS, &
243# if defined ADJUST_STFLUX && defined SOLVE3D
247 & VnormR, VnormU, VnormV, &
249 & HnormR, HnormU, HnormV, &
250# ifdef ADJUST_BOUNDARY
252 & tl_t_obc, tl_u_obc, tl_v_obc, &
254 & tl_ubar_obc, tl_vbar_obc, &
257# ifdef ADJUST_WSTRESS
258 & tl_ustr, tl_vstr, &
260# if defined ADJUST_STFLUX && defined SOLVE3D
264 & tl_t, tl_u, tl_v, &
266 & tl_ubar, tl_vbar, &
279# ifdef ADJUST_BOUNDARY
292 logical,
intent(in) :: Lweak
294 integer,
intent(in) :: ng, tile
295 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
296 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
297 integer,
intent(in) :: nstp, nnew, Linp, ifac
300 real(r8),
intent(in) :: pm(LBi:,LBj:)
301 real(r8),
intent(in) :: om_p(LBi:,LBj:)
302 real(r8),
intent(in) :: om_r(LBi:,LBj:)
303 real(r8),
intent(in) :: om_u(LBi:,LBj:)
304 real(r8),
intent(in) :: om_v(LBi:,LBj:)
305 real(r8),
intent(in) :: pn(LBi:,LBj:)
306 real(r8),
intent(in) :: on_p(LBi:,LBj:)
307 real(r8),
intent(in) :: on_r(LBi:,LBj:)
308 real(r8),
intent(in) :: on_u(LBi:,LBj:)
309 real(r8),
intent(in) :: on_v(LBi:,LBj:)
310 real(r8),
intent(in) :: pmon_p(LBi:,LBj:)
311 real(r8),
intent(in) :: pmon_r(LBi:,LBj:)
312 real(r8),
intent(in) :: pmon_u(LBi:,LBj:)
313 real(r8),
intent(in) :: pnom_p(LBi:,LBj:)
314 real(r8),
intent(in) :: pnom_r(LBi:,LBj:)
315 real(r8),
intent(in) :: pnom_v(LBi:,LBj:)
317 real(r8),
intent(in) :: rmask(LBi:,LBj:)
318 real(r8),
intent(in) :: pmask(LBi:,LBj:)
319 real(r8),
intent(in) :: umask(LBi:,LBj:)
320 real(r8),
intent(in) :: vmask(LBi:,LBj:)
322 real(r8),
intent(in) :: Kh(LBi:,LBj:)
324 real(r8),
intent(in) :: Kv(LBi:,LBj:,0:)
326 real(r8),
intent(in) :: zice(LBi:,LBj:)
328# if defined SEDIMENT && defined SED_MORPH
329 real(r8),
intent(inout):: bed_thick(LBi:,LBj:,:)
331 real(r8),
intent(inout) :: h(LBi:,LBj:)
333# ifdef ADJUST_BOUNDARY
335 real(r8),
intent (in) :: VnormRobc(LBij:,:,:,:)
336 real(r8),
intent (in) :: VnormUobc(LBij:,:,:)
337 real(r8),
intent (in) :: VnormVobc(LBij:,:,:)
339 real(r8),
intent (in) :: HnormRobc(LBij:,:)
340 real(r8),
intent (in) :: HnormUobc(LBij:,:)
341 real(r8),
intent (in) :: HnormVobc(LBij:,:)
343# ifdef ADJUST_WSTRESS
344 real(r8),
intent(in) :: HnormSUS(LBi:,LBj:)
345 real(r8),
intent(in) :: HnormSVS(LBi:,LBj:)
347# if defined ADJUST_STFLUX && defined SOLVE3D
348 real(r8),
intent(in) :: HnormSTF(LBi:,LBj:,:)
351 real(r8),
intent(in) :: VnormR(LBi:,LBj:,:,:,:)
352 real(r8),
intent(in) :: VnormU(LBi:,LBj:,:,:)
353 real(r8),
intent(in) :: VnormV(LBi:,LBj:,:,:)
355 real(r8),
intent(in) :: HnormR(LBi:,LBj:,:)
356 real(r8),
intent(in) :: HnormU(LBi:,LBj:,:)
357 real(r8),
intent(in) :: HnormV(LBi:,LBj:,:)
358# ifdef ADJUST_BOUNDARY
360 real(r8),
intent(inout) :: tl_t_obc(LBij:,:,:,:,:,:)
361 real(r8),
intent(inout) :: tl_u_obc(LBij:,:,:,:,:)
362 real(r8),
intent(inout) :: tl_v_obc(LBij:,:,:,:,:)
364 real(r8),
intent(inout) :: tl_ubar_obc(LBij:,:,:,:)
365 real(r8),
intent(inout) :: tl_vbar_obc(LBij:,:,:,:)
366 real(r8),
intent(inout) :: tl_zeta_obc(LBij:,:,:,:)
368# ifdef ADJUST_WSTRESS
369 real(r8),
intent(inout) :: tl_ustr(LBi:,LBj:,:,:)
370 real(r8),
intent(inout) :: tl_vstr(LBi:,LBj:,:,:)
372# if defined ADJUST_STFLUX && defined SOLVE3D
373 real(r8),
intent(inout) :: tl_tflux(LBi:,LBj:,:,:,:)
376 real(r8),
intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
377 real(r8),
intent(inout) :: tl_u(LBi:,LBj:,:,:)
378 real(r8),
intent(inout) :: tl_v(LBi:,LBj:,:,:)
380 real(r8),
intent(inout) :: tl_ubar(LBi:,LBj:,:)
381 real(r8),
intent(inout) :: tl_vbar(LBi:,LBj:,:)
382 real(r8),
intent(inout) :: tl_zeta(LBi:,LBj:,:)
384 real(r8),
intent(out) :: Hz(LBi:,LBj:,:)
385 real(r8),
intent(out) :: z_r(LBi:,LBj:,:)
386 real(r8),
intent(out) :: z_w(LBi:,LBj:,0:)
389 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
390 real(r8),
intent(in) :: om_p(LBi:UBi,LBj:UBj)
391 real(r8),
intent(in) :: om_r(LBi:UBi,LBj:UBj)
392 real(r8),
intent(in) :: om_u(LBi:UBi,LBj:UBj)
393 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
394 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
395 real(r8),
intent(in) :: on_p(LBi:UBi,LBj:UBj)
396 real(r8),
intent(in) :: on_r(LBi:UBi,LBj:UBj)
397 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
398 real(r8),
intent(in) :: on_v(LBi:UBi,LBj:UBj)
399 real(r8),
intent(in) :: pmon_p(LBi:UBi,LBj:UBj)
400 real(r8),
intent(in) :: pmon_r(LBi:UBi,LBj:UBj)
401 real(r8),
intent(in) :: pmon_u(LBi:UBi,LBj:UBj)
402 real(r8),
intent(in) :: pnom_p(LBi:UBi,LBj:UBj)
403 real(r8),
intent(in) :: pnom_r(LBi:UBi,LBj:UBj)
404 real(r8),
intent(in) :: pnom_v(LBi:UBi,LBj:UBj)
406 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
407 real(r8),
intent(in) :: pmask(LBi:UBi,LBj:UBj)
408 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
409 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
411 real(r8),
intent(in) :: Kh(LBi:UBi,LBj:UBj)
413 real(r8),
intent(in) :: Kv(LBi:UBi,LBj:UBj,0:N(ng))
415 real(r8),
intent(in) :: zice(LBi:UBi,LBj:UBj)
417# if defined SEDIMENT && defined SED_MORPH
418 real(r8),
intent(inout):: bed_thick(LBi:UBi,LBj:UBj,:)
420 real(r8),
intent(inout) :: h(LBi:UBi,LBj:UBj)
422# ifdef ADJUST_BOUNDARY
424 real(r8),
intent (in) :: VnormRobc(LBij:UBij,N(ng),4,NT(ng))
425 real(r8),
intent (in) :: VnormUobc(LBij:UBij,N(ng),4)
426 real(r8),
intent (in) :: VnormVobc(LBij:UBij,N(ng),4)
428 real(r8),
intent (in) :: HnormRobc(LBij:UBij,4)
429 real(r8),
intent (in) :: HnormUobc(LBij:UBij,4)
430 real(r8),
intent (in) :: HnormVobc(LBij:UBij,4)
432# ifdef ADJUST_WSTRESS
433 real(r8),
intent(in) :: HnormSUS(LBi:UBi,LBj:UBj)
434 real(r8),
intent(in) :: HnormSVS(LBi:UBi,LBj:UBj)
436# if defined ADJUST_STFLUX && defined SOLVE3D
437 real(r8),
intent(in) :: HnormSTF(LBi:UBi,LBj:UBj,NT(ng))
440 real(r8),
intent(in) :: VnormR(LBi:UBi,LBj:UBj,N(ng),NSA,NT(ng))
441 real(r8),
intent(in) :: VnormU(LBi:UBi,LBj:UBj,NSA,N(ng))
442 real(r8),
intent(in) :: VnormV(LBi:UBi,LBj:UBj,NSA,N(ng))
444 real(r8),
intent(in) :: HnormR(LBi:UBi,LBj:UBj,NSA)
445 real(r8),
intent(in) :: HnormU(LBi:UBi,LBj:UBj,NSA)
446 real(r8),
intent(in) :: HnormV(LBi:UBi,LBj:UBj,NSA)
447# ifdef ADJUST_BOUNDARY
449 real(r8),
intent(inout) :: tl_t_obc(LBij:UBij,N(ng),4, &
450 & Nbrec(ng),2,NT(ng))
451 real(r8),
intent(inout) :: tl_u_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
452 real(r8),
intent(inout) :: tl_v_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
454 real(r8),
intent(inout) :: tl_ubar_obc(LBij:UBij,4,Nbrec(ng),2)
455 real(r8),
intent(inout) :: tl_vbar_obc(LBij:UBij,4,Nbrec(ng),2)
456 real(r8),
intent(inout) :: tl_zeta_obc(LBij:UBij,4,Nbrec(ng),2)
458# ifdef ADJUST_WSTRESS
459 real(r8),
intent(inout) :: tl_ustr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
460 real(r8),
intent(inout) :: tl_vstr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
462# if defined ADJUST_STFLUX && defined SOLVE3D
463 real(r8),
intent(inout) :: tl_tflux(LBi:UBi,LBj:UBj, &
464 & Nfrec(ng),2,NT(ng))
467 real(r8),
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
468 real(r8),
intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
469 real(r8),
intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
471 real(r8),
intent(inout) :: tl_ubar(LBi:UBi,LBj:UBj,:)
472 real(r8),
intent(inout) :: tl_vbar(LBi:UBi,LBj:UBj,:)
473 real(r8),
intent(inout) :: tl_zeta(LBi:UBi,LBj:UBj,:)
475 real(r8),
intent(out) :: Hz(LBi:UBi,LBj:UBj,N(ng))
476 real(r8),
intent(out) :: z_r(LBi:UBi,LBj:UBj,N(ng))
477 real(r8),
intent(out) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
483# ifdef ADJUST_BOUNDARY
484 logical,
dimension(4) :: Lconvolve
486 integer :: i, ib, ir, is, it, j, k, rec
492 real(r8),
dimension(LBi:UBi,LBj:UBj) :: work
495# include "set_bounds.h"
507# ifdef ADJUST_BOUNDARY
531 & lbi, ubi, lbj, ubj, &
532 & imins, imaxs, jmins, jmaxs, &
538# if defined SEDIMENT && defined SED_MORPH
554 tl_zeta(i,j,linp)=tl_zeta(i,j,linp)/ &
555 & sqrt(om_r(i,j)*on_r(i,j))
563 tl_ubar(i,j,linp)=tl_ubar(i,j,linp)/ &
564 & sqrt(om_u(i,j)*on_u(i,j))
569 tl_vbar(i,j,linp)=tl_vbar(i,j,linp)/ &
570 & sqrt(om_v(i,j)*on_v(i,j))
575 & lbi, ubi, lbj, ubj, &
578 & tl_zeta(:,:,linp), &
579 & tl_ubar(:,:,linp), &
588 cff=om_u(i,j)*on_u(i,j)*0.5_r8
590 tl_u(i,j,k,linp)=tl_u(i,j,k,linp)/ &
591 & sqrt(cff*(hz(i-1,j,k)+hz(i,j,k)))
597 cff=om_v(i,j)*on_v(i,j)*0.5_r8
599 tl_v(i,j,k,linp)=tl_v(i,j,k,linp)/ &
600 & sqrt(cff*(hz(i,j-1,k)+hz(i,j,k)))
606 & lbi, ubi, lbj, ubj, 1, n(ng), &
609 & tl_u(:,:,:,linp), &
617 cff=om_r(i,j)*on_r(i,j)
619 fac=1.0_r8/sqrt(cff*hz(i,j,k))
621 tl_t(i,j,k,linp,it)=fac*tl_t(i,j,k,linp,it)
628 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &
631 & tl_t(:,:,:,linp,:))
635# ifdef ADJUST_BOUNDARY
642 IF (lconvolve(ib))
THEN
646 tl_zeta_obc(j,ib,ir,linp)=tl_zeta_obc(j,ib,ir,linp)/ &
652 tl_zeta_obc(i,ib,ir,linp)=tl_zeta_obc(i,ib,ir,linp)/ &
663 & tl_zeta_obc(:,ib,ir,linp))
674 IF (lconvolve(ib))
THEN
678 tl_ubar_obc(j,ib,ir,linp)=tl_ubar_obc(j,ib,ir,linp)/ &
684 tl_ubar_obc(i,ib,ir,linp)=tl_ubar_obc(i,ib,ir,linp)/ &
694 & tl_ubar_obc(:,ib,ir,linp))
705 IF (lconvolve(ib))
THEN
709 tl_vbar_obc(j,ib,ir,linp)=tl_vbar_obc(j,ib,ir,linp)/ &
715 tl_vbar_obc(i,ib,ir,linp)=tl_vbar_obc(i,ib,ir,linp)/ &
725 & tl_vbar_obc(:,ib,ir,linp))
738 IF (lconvolve(ib))
THEN
744 tl_u_obc(j,k,ib,ir,linp)=tl_u_obc(j,k,ib,ir,linp)/ &
755 tl_u_obc(i,k,ib,ir,linp)=tl_u_obc(i,k,ib,ir,linp)/ &
765 & lbij, ubij, 1, n(ng), &
768 & tl_u_obc(:,:,ib,ir,linp))
779 IF (lconvolve(ib))
THEN
785 tl_v_obc(j,k,ib,ir,linp)=tl_v_obc(j,k,ib,ir,linp)/ &
796 tl_v_obc(i,k,ib,ir,linp)=tl_v_obc(i,k,ib,ir,linp)/ &
806 & lbij, ubij, 1, n(ng), &
809 & tl_v_obc(:,:,ib,ir,linp))
820 IF (.not.lweak.and.
lobc(ib,
istvar(it),ng))
THEN
821 IF (lconvolve(ib))
THEN
827 tl_t_obc(j,k,ib,ir,linp,it)= &
828 & tl_t_obc(j,k,ib,ir,linp,it)/ &
829 & sqrt(cff*hz(i,j,k))
837 tl_t_obc(i,k,ib,ir,linp,it)= &
838 & tl_t_obc(i,k,ib,ir,linp,it)/ &
839 & sqrt(cff*hz(i,j,k))
846 & lbij, ubij, 1, n(ng), &
849 & tl_t_obc(:,:,ib,ir,linp,it))
858# ifdef ADJUST_WSTRESS
866 tl_ustr(i,j,ir,linp)=tl_ustr(i,j,ir,linp)/ &
867 & sqrt(om_u(i,j)*on_u(i,j))
872 tl_vstr(i,j,ir,linp)=tl_vstr(i,j,ir,linp)/ &
873 & sqrt(om_v(i,j)*on_v(i,j))
879 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
882 & tl_ustr(:,:,:,linp), &
883 & tl_vstr(:,:,:,linp))
887# if defined ADJUST_STFLUX && defined SOLVE3D
894 fac=1.0_r8/sqrt(om_r(i,j)*on_r(i,j))
898 tl_tflux(i,j,ir,linp,it)=fac*tl_tflux(i,j,ir,linp,it)
908 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
911 & tl_tflux(:,:,:,linp,it))
928 & lbi, ubi, lbj, ubj, &
929 & imins, imaxs, jmins, jmaxs, &
934 & pm, pn, pmon_u, pnom_v, &
936 & rmask, umask, vmask, &
943 & lbi, ubi, lbj, ubj, &
944 & imins, imaxs, jmins, jmaxs, &
949 & pm, pn, pmon_r, pnom_p, &
956 & lbi, ubi, lbj, ubj, &
957 & imins, imaxs, jmins, jmaxs, &
962 & pm, pn, pmon_p, pnom_r, &
972 & lbi, ubi, lbj, ubj, 1, n(ng), &
973 & imins, imaxs, jmins, jmaxs, &
981# ifdef GEOPOTENTIAL_HCONV
987# ifdef GEOPOTENTIAL_HCONV
988 & pmask, rmask, umask, vmask, &
997 & lbi, ubi, lbj, ubj, 1, n(ng), &
998 & imins, imaxs, jmins, jmaxs, &
1006# ifdef GEOPOTENTIAL_HCONV
1012# ifdef GEOPOTENTIAL_HCONV
1013 & pmask, rmask, umask, vmask, &
1026 & lbi, ubi, lbj, ubj, 1, n(ng), &
1027 & imins, imaxs, jmins, jmaxs, &
1035# ifdef GEOPOTENTIAL_HCONV
1041 & rmask, umask, vmask, &
1044 & tl_t(:,:,:,linp,it))
1048# ifdef ADJUST_BOUNDARY
1065 & lbi, ubi, lbj, ubj, &
1066 & imins, imaxs, jmins, jmaxs, &
1071 & pm, pn, pmon_u, pnom_v, &
1073 & rmask, umask, vmask, &
1075 & tl_zeta_obc(:,ib,ir,linp))
1088 & lbi, ubi, lbj, ubj, &
1089 & imins, imaxs, jmins, jmaxs, &
1094 & pm, pn, pmon_r, pnom_p, &
1098 & tl_ubar_obc(:,ib,ir,linp))
1111 & lbi, ubi, lbj, ubj, &
1112 & imins, imaxs, jmins, jmaxs, &
1117 & pm, pn, pmon_p, pnom_r, &
1121 & tl_vbar_obc(:,ib,ir,linp))
1136 & lbi, ubi, lbj, ubj, 1, n(ng), &
1137 & imins, imaxs, jmins, jmaxs, &
1144 & pm, pn, pmon_r, pnom_p, &
1149 & tl_u_obc(:,:,ib,ir,linp))
1162 & lbi, ubi, lbj, ubj, 1, n(ng), &
1163 & imins, imaxs, jmins, jmaxs, &
1170 & pm, pn, pmon_p, pnom_r, &
1175 & tl_v_obc(:,:,ib,ir,linp))
1186 IF (.not.lweak.and.
lobc(ib,is,ng))
THEN
1190 & lbi, ubi, lbj, ubj, 1, n(ng), &
1191 & imins, imaxs, jmins, jmaxs, &
1198 & pm, pn, pmon_u, pnom_v, &
1200 & rmask, umask, vmask, &
1203 & tl_t_obc(:,:,ib,ir,linp,it))
1211# if defined ADJUST_WSTRESS || defined ADJUST_STFLUX
1220# ifdef ADJUST_WSTRESS
1224 IF (.not.lweak)
THEN
1227 & lbi, ubi, lbj, ubj, &
1228 & imins, imaxs, jmins, jmaxs, &
1233 & pm, pn, pmon_r, pnom_p, &
1237 & tl_ustr(:,:,k,linp))
1240 & lbi, ubi, lbj, ubj, &
1241 & imins, imaxs, jmins, jmaxs, &
1246 & pm, pn, pmon_p, pnom_r, &
1250 & tl_vstr(:,:,k,linp))
1254# if defined ADJUST_STFLUX && defined SOLVE3D
1258 IF (.not.lweak)
THEN
1264 & lbi, ubi, lbj, ubj, &
1265 & imins, imaxs, jmins, jmaxs, &
1270 & pm, pn, pmon_u, pnom_v, &
1272 & rmask, umask, vmask, &
1274 & tl_tflux(:,:,k,linp,it))
1291 tl_zeta(i,j,linp)=tl_zeta(i,j,linp)*hnormr(i,j,rec)
1299 tl_ubar(i,j,linp)=tl_ubar(i,j,linp)*hnormu(i,j,rec)
1304 tl_vbar(i,j,linp)=tl_vbar(i,j,linp)*hnormv(i,j,rec)
1309 & lbi, ubi, lbj, ubj, &
1312 & tl_zeta(:,:,linp), &
1313 & tl_ubar(:,:,linp), &
1314 & tl_vbar(:,:,linp))
1323 tl_u(i,j,k,linp)=tl_u(i,j,k,linp)*vnormu(i,j,k,rec)
1328 tl_v(i,j,k,linp)=tl_v(i,j,k,linp)*vnormv(i,j,k,rec)
1334 & lbi, ubi, lbj, ubj, 1, n(ng), &
1337 & tl_u(:,:,:,linp), &
1347 tl_t(i,j,k,linp,it)=tl_t(i,j,k,linp,it)* &
1348 & vnormr(i,j,k,rec,it)
1355 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &
1358 & tl_t(:,:,:,linp,:))
1362# ifdef ADJUST_BOUNDARY
1369 IF (lconvolve(ib))
THEN
1372 tl_zeta_obc(j,ib,ir,linp)=tl_zeta_obc(j,ib,ir,linp)* &
1377 tl_zeta_obc(i,ib,ir,linp)=tl_zeta_obc(i,ib,ir,linp)* &
1387 & tl_zeta_obc(:,ib,ir,linp))
1398 IF (lconvolve(ib))
THEN
1401 tl_ubar_obc(j,ib,ir,linp)=tl_ubar_obc(j,ib,ir,linp)* &
1406 tl_ubar_obc(i,ib,ir,linp)=tl_ubar_obc(i,ib,ir,linp)* &
1416 & tl_ubar_obc(:,ib,ir,linp))
1427 IF (lconvolve(ib))
THEN
1430 tl_vbar_obc(j,ib,ir,linp)=tl_vbar_obc(j,ib,ir,linp)* &
1435 tl_vbar_obc(i,ib,ir,linp)=tl_vbar_obc(i,ib,ir,linp)* &
1445 & tl_vbar_obc(:,ib,ir,linp))
1458 IF (lconvolve(ib))
THEN
1462 tl_u_obc(j,k,ib,ir,linp)=tl_u_obc(j,k,ib,ir,linp)* &
1469 tl_u_obc(i,k,ib,ir,linp)=tl_u_obc(i,k,ib,ir,linp)* &
1477 & lbij, ubij, 1, n(ng), &
1480 & tl_u_obc(:,:,ib,ir,linp))
1491 IF (lconvolve(ib))
THEN
1495 tl_v_obc(j,k,ib,ir,linp)=tl_v_obc(j,k,ib,ir,linp)* &
1502 tl_v_obc(i,k,ib,ir,linp)=tl_v_obc(i,k,ib,ir,linp)* &
1510 & lbij, ubij, 1, n(ng), &
1513 & tl_v_obc(:,:,ib,ir,linp))
1524 IF (.not.lweak.and.
lobc(ib,
istvar(it),ng))
THEN
1525 IF (lconvolve(ib))
THEN
1529 tl_t_obc(j,k,ib,ir,linp,it)= &
1530 & tl_t_obc(j,k,ib,ir,linp,it)* &
1531 & vnormrobc(j,k,ib,it)
1537 tl_t_obc(i,k,ib,ir,linp,it)= &
1538 & tl_t_obc(i,k,ib,ir,linp,it)* &
1539 & vnormrobc(i,k,ib,it)
1546 & lbij, ubij, 1, n(ng), &
1549 & tl_t_obc(:,:,ib,ir,linp,it))
1558# ifdef ADJUST_WSTRESS
1562 IF (.not.lweak)
THEN
1566 tl_ustr(i,j,k,linp)=tl_ustr(i,j,k,linp)*hnormsus(i,j)
1571 tl_vstr(i,j,k,linp)=tl_vstr(i,j,k,linp)*hnormsvs(i,j)
1577 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
1580 & tl_ustr(:,:,:,linp), &
1581 & tl_vstr(:,:,:,linp))
1586# if defined ADJUST_STFLUX && defined SOLVE3D
1590 IF (.not.lweak)
THEN
1596 tl_tflux(i,j,k,linp,it)=tl_tflux(i,j,k,linp,it)* &
1603 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
1606 & tl_tflux(:,:,:,linp,it))