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 tl_t(istr-1,j,k,nout,itrc)=
boundary(ng)% &
190 & tl_t_west(j,k,itrc)
195 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr-1,j,k,nout,itrc)* &
196 &
grid(ng)%rmask(istr-1,j)
210 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr,j,k,nout,itrc)
215 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr-1,j,k,nout,itrc)* &
216 &
grid(ng)%rmask(istr-1,j)
230 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr,j,k,nout,itrc)
235 tl_t(istr-1,j,k,nout,itrc)=tl_t(istr-1,j,k,nout,itrc)* &
236 &
grid(ng)%rmask(istr-1,j)
248 IF (
domain(ng)%Eastern_Edge(tile))
THEN
253 IF (
iic(ng).ne.0)
THEN
259 tl_grad(iend+1,j)=0.0_r8
263# if defined CELERITY_READ && defined FORWARD_READ
266 obc_out=
clima(ng)%Tnudgcof(iend+1,j,k,ic)
267 obc_in =
obcfac(ng)*obc_out
272 IF (
boundary(ng)%t_east_Cx(j,k,itrc).lt. &
286 cff=
boundary(ng)%t_east_C2(j,k,itrc)
296 tl_t(iend+1,j,k,nout,itrc)=(cff* &
297 & tl_t(iend+1,j,k,nstp, &
300 & tl_t(iend ,j,k,nout, &
303 & tl_grad(iend+1,j )- &
305 & tl_grad(iend+1,j+1))/ &
315 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout, &
318 & tl_t(iend+1,j,k,nstp, &
325 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout, &
327 &
grid(ng)%rmask(iend+1,j)
342 tl_t(iend+1,j,k,nout,itrc)=
boundary(ng)% &
343 & tl_t_east(j,k,itrc)
348 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout,itrc)* &
349 &
grid(ng)%rmask(iend+1,j)
363 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend,j,k,nout,itrc)
368 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout,itrc)* &
369 &
grid(ng)%rmask(iend+1,j)
383 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend,j,k,nout,itrc)
388 tl_t(iend+1,j,k,nout,itrc)=tl_t(iend+1,j,k,nout,itrc)* &
389 &
grid(ng)%rmask(iend+1,j)
401 IF (
domain(ng)%Southern_Edge(tile))
THEN
406 IF (
iic(ng).ne.0)
THEN
412 tl_grad(i,jstr-1)=0.0_r8
416# if defined CELERITY_READ && defined FORWARD_READ
419 obc_out=
clima(ng)%Tnudgcof(i,jstr-1,k,ic)
420 obc_in =
obcfac(ng)*obc_out
425 IF (
boundary(ng)%t_south_Ce(i,k,itrc).lt. &
434 cx=
boundary(ng)%t_south_Cx(i,k,itrc)
438 ce=
boundary(ng)%t_south_Ce(i,k,itrc)
439 cff=
boundary(ng)%t_south_C2(i,k,itrc)
449 tl_t(i,jstr-1,k,nout,itrc)=(cff* &
450 & tl_t(i,jstr-1,k,nstp, &
453 & tl_t(i,jstr ,k,nout, &
456 & tl_grad(i ,jstr-1)- &
458 & tl_grad(i+1,jstr-1))/ &
468 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout, &
471 & tl_t(i,jstr-1,k,nstp, &
478 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout, &
480 &
grid(ng)%rmask(i,jstr-1)
495 tl_t(i,jstr-1,k,nout,itrc)=
boundary(ng)% &
496 & tl_t_south(i,k,itrc)
501 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout,itrc)* &
502 &
grid(ng)%rmask(i,jstr-1)
516 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr,k,nout,itrc)
521 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout,itrc)* &
522 &
grid(ng)%rmask(i,jstr-1)
536 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr,k,nout,itrc)
541 tl_t(i,jstr-1,k,nout,itrc)=tl_t(i,jstr-1,k,nout,itrc)* &
542 &
grid(ng)%rmask(i,jstr-1)
554 IF (
domain(ng)%Northern_Edge(tile))
THEN
559 IF (
iic(ng).ne.0)
THEN
565 tl_grad(i,jend+1)=0.0_r8
569# if defined CELERITY_READ && defined FORWARD_READ
572 obc_out=
clima(ng)%Tnudgcof(i,jend+1,k,ic)
573 obc_in =
obcfac(ng)*obc_out
578 IF (
boundary(ng)%t_north_Ce(i,k,itrc).lt. &
587 cx=
boundary(ng)%t_north_Cx(i,k,itrc)
591 ce=
boundary(ng)%t_north_Ce(i,k,itrc)
592 cff=
boundary(ng)%t_north_C2(i,k,itrc)
602 tl_t(i,jend+1,k,nout,itrc)=(cff* &
603 & tl_t(i,jend+1,k,nstp, &
606 & tl_t(i,jend ,k,nout, &
609 & tl_grad(i ,jend+1)- &
611 & tl_grad(i+1,jend+1))/ &
621 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout, &
624 & tl_t(i,jend+1,k,nstp, &
631 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout, &
633 &
grid(ng)%rmask(i,jend+1)
648 tl_t(i,jend+1,k,nout,itrc)=
boundary(ng)% &
649 & tl_t_north(i,k,itrc)
654 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout,itrc)* &
655 &
grid(ng)%rmask(i,jend+1)
669 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend,k,nout,itrc)
674 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout,itrc)* &
675 &
grid(ng)%rmask(i,jend+1)
689 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend,k,nout,itrc)
694 tl_t(i,jend+1,k,nout,itrc)=tl_t(i,jend+1,k,nout,itrc)* &
695 &
grid(ng)%rmask(i,jend+1)
708 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
718 tl_t(istr-1,jstr-1,k,nout,itrc)=0.5_r8* &
719 & (tl_t(istr ,jstr-1,k, &
721 & tl_t(istr-1,jstr ,k, &
726 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
736 tl_t(iend+1,jstr-1,k,nout,itrc)=0.5_r8* &
737 & (tl_t(iend ,jstr-1,k, &
739 & tl_t(iend+1,jstr ,k, &
744 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
754 tl_t(istr-1,jend+1,k,nout,itrc)=0.5_r8* &
755 & (tl_t(istr-1,jend ,k, &
757 & tl_t(istr ,jend+1,k, &
762 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
772 tl_t(iend+1,jend+1,k,nout,itrc)=0.5_r8* &
773 & (tl_t(iend+1,jend ,k, &
775 & tl_t(iend ,jend+1,k, &