54 & LBi, UBi, LBj, UBj, UBk, UBt, &
55 & IminS, ImaxS, JminS, JmaxS, &
69 integer,
intent(in) :: ng, tile, itrc, ic
70 integer,
intent(in) :: lbi, ubi, lbj, ubj, ubk, ubt
71 integer,
intent(in) :: imins, imaxs, jmins, jmaxs
72 integer,
intent(in) :: nstp, nout
75 real(r8),
intent(inout) :: tl_t(lbi:,lbj:,:,:,:)
77 real(r8),
intent(inout) :: tl_t(lbi:ubi,lbj:ubj,ubk,3,ubt)
84 real(r8) :: ce, cx, cff
85 real(r8) :: obc_in, obc_out, tau
87 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_grad
89# include "set_bounds.h"
95 IF (
domain(ng)%Western_Edge(tile))
THEN
100 IF (
iic(ng).ne.0)
THEN
106 tl_grad(istr-1,j)=0.0_r8
110# if defined CELERITY_READ && defined FORWARD_READ
113 obc_out=
clima(ng)%Tnudgcof(istr-1,j,k,ic)
114 obc_in =
obcfac(ng)*obc_out
119 IF (
boundary(ng)%t_west_Cx(j,k,itrc).lt. &
133 cff=
boundary(ng)%t_west_C2(j,k,itrc)
143 tl_t(istr-1,j,k,nout,itrc)=(cff* &
144 & tl_t(istr-1,j,k,nstp, &
147 & tl_t(istr ,j,k,nout, &
150 & tl_grad(istr-1,j )- &
152 & tl_grad(istr-1,j+1))/ &
162 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr-1,j,k,nout, &
165 & tl_t(istr-1,j,k,nstp, &
172 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr-1,j,k,nout, &
174 &
grid(ng)%rmask(istr-1,j)
189# ifdef ADJUST_BOUNDARY
191 tl_t(istr-1,j,k,nout,itrc)=
boundary(ng)% &
192 & tl_t_west(j,k,itrc)
194 tl_t(istr-1,j,k,nout,itrc)=0.0_r8
197 tl_t(istr-1,j,k,nout,itrc)=0.0_r8
204 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr-1,j,k,nout,itrc)* &
205 &
grid(ng)%rmask(istr-1,j)
219 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr,j,k,nout,itrc)
224 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr-1,j,k,nout,itrc)* &
225 &
grid(ng)%rmask(istr-1,j)
239 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr,j,k,nout,itrc)
244 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr-1,j,k,nout,itrc)* &
245 &
grid(ng)%rmask(istr-1,j)
257 IF (
domain(ng)%Eastern_Edge(tile))
THEN
262 IF (
iic(ng).ne.0)
THEN
268 tl_grad(iend+1,j)=0.0_r8
272# if defined CELERITY_READ && defined FORWARD_READ
275 obc_out=
clima(ng)%Tnudgcof(iend+1,j,k,ic)
276 obc_in =
obcfac(ng)*obc_out
281 IF (
boundary(ng)%t_east_Cx(j,k,itrc).lt. &
295 cff=
boundary(ng)%t_east_C2(j,k,itrc)
305 tl_t(iend+1,j,k,nout,itrc)=(cff* &
306 & tl_t(iend+1,j,k,nstp, &
309 & tl_t(iend ,j,k,nout, &
312 & tl_grad(iend+1,j )- &
314 & tl_grad(iend+1,j+1))/ &
324 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout, &
327 & tl_t(iend+1,j,k,nstp, &
334 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout, &
336 &
grid(ng)%rmask(iend+1,j)
351# ifdef ADJUST_BOUNDARY
353 tl_t(iend+1,j,k,nout,itrc)=
boundary(ng)% &
354 & tl_t_east(j,k,itrc)
356 tl_t(iend+1,j,k,nout,itrc)=0.0_r8
359 tl_t(iend+1,j,k,nout,itrc)=0.0_r8
365 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout,itrc)* &
366 &
grid(ng)%rmask(iend+1,j)
380 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend,j,k,nout,itrc)
385 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout,itrc)* &
386 &
grid(ng)%rmask(iend+1,j)
400 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend,j,k,nout,itrc)
405 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout,itrc)* &
406 &
grid(ng)%rmask(iend+1,j)
418 IF (
domain(ng)%Southern_Edge(tile))
THEN
423 IF (
iic(ng).ne.0)
THEN
429 tl_grad(i,jstr-1)=0.0_r8
433# if defined CELERITY_READ && defined FORWARD_READ
436 obc_out=
clima(ng)%Tnudgcof(i,jstr-1,k,ic)
437 obc_in =
obcfac(ng)*obc_out
442 IF (
boundary(ng)%t_south_Ce(i,k,itrc).lt. &
451 cx=
boundary(ng)%t_south_Cx(i,k,itrc)
455 ce=
boundary(ng)%t_south_Ce(i,k,itrc)
456 cff=
boundary(ng)%t_south_C2(i,k,itrc)
466 tl_t(i,jstr-1,k,nout,itrc)=(cff* &
467 & tl_t(i,jstr-1,k,nstp, &
470 & tl_t(i,jstr ,k,nout, &
473 & tl_grad(i ,jstr-1)- &
475 & tl_grad(i+1,jstr-1))/ &
485 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout, &
488 & tl_t(i,jstr-1,k,nstp, &
495 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout, &
497 &
grid(ng)%rmask(i,jstr-1)
512# ifdef ADJUST_BOUNDARY
514 tl_t(i,jstr-1,k,nout,itrc)=
boundary(ng)% &
515 & tl_t_south(i,k,itrc)
517 tl_t(i,jstr-1,k,nout,itrc)=0.0_r8
520 tl_t(i,jstr-1,k,nout,itrc)=0.0_r8
526 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout,itrc)* &
527 &
grid(ng)%rmask(i,jstr-1)
541 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr,k,nout,itrc)
546 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout,itrc)* &
547 &
grid(ng)%rmask(i,jstr-1)
561 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr,k,nout,itrc)
566 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout,itrc)* &
567 &
grid(ng)%rmask(i,jstr-1)
579 IF (
domain(ng)%Northern_Edge(tile))
THEN
584 IF (
iic(ng).ne.0)
THEN
590 tl_grad(i,jend+1)=0.0_r8
594# if defined CELERITY_READ && defined FORWARD_READ
597 obc_out=
clima(ng)%Tnudgcof(i,jend+1,k,ic)
598 obc_in =
obcfac(ng)*obc_out
603 IF (
boundary(ng)%t_north_Ce(i,k,itrc).lt. &
612 cx=
boundary(ng)%t_north_Cx(i,k,itrc)
616 ce=
boundary(ng)%t_north_Ce(i,k,itrc)
617 cff=
boundary(ng)%t_north_C2(i,k,itrc)
627 tl_t(i,jend+1,k,nout,itrc)=(cff* &
628 & tl_t(i,jend+1,k,nstp, &
631 & tl_t(i,jend ,k,nout, &
634 & tl_grad(i ,jend+1)- &
636 & tl_grad(i+1,jend+1))/ &
646 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout, &
649 & tl_t(i,jend+1,k,nstp, &
656 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout, &
658 &
grid(ng)%rmask(i,jend+1)
673# ifdef ADJUST_BOUNDARY
675 tl_t(i,jend+1,k,nout,itrc)=
boundary(ng)% &
676 & tl_t_north(i,k,itrc)
678 tl_t(i,jend+1,k,nout,itrc)=0.0_r8
681 tl_t(i,jend+1,k,nout,itrc)=0.0_r8
687 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout,itrc)* &
688 &
grid(ng)%rmask(i,jend+1)
702 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend,k,nout,itrc)
707 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout,itrc)* &
708 &
grid(ng)%rmask(i,jend+1)
722 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend,k,nout,itrc)
727 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout,itrc)* &
728 &
grid(ng)%rmask(i,jend+1)
741 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
751 tl_t(istr-1,jstr-1,k,nout,itrc)=0.5_r8* &
752 & (tl_t(istr ,jstr-1,k, &
754 & tl_t(istr-1,jstr ,k, &
759 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
769 tl_t(iend+1,jstr-1,k,nout,itrc)=0.5_r8* &
770 & (tl_t(iend ,jstr-1,k, &
772 & tl_t(iend+1,jstr ,k, &
777 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
787 tl_t(istr-1,jend+1,k,nout,itrc)=0.5_r8* &
788 & (tl_t(istr-1,jend ,k, &
790 & tl_t(istr ,jend+1,k, &
795 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
805 tl_t(iend+1,jend+1,k,nout,itrc)=0.5_r8* &
806 & (tl_t(iend+1,jend ,k, &
808 & tl_t(iend ,jend+1,k, &