48 & LBi, UBi, LBj, UBj, LBk, UBk, LBl, UBl, &
61 integer,
intent(in) :: ng, tile
62 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk, LBl, UBl
65 real(r8),
intent(inout) :: A(LBi:,LBj:,:,LBl:)
67 real(r8),
intent(inout) :: A(LBi:UBi,LBj:UBj,LBk:UBk,LBl:UBl)
74# include "set_bounds.h"
81 IF (
domain(ng)%Eastern_Edge(tile))
THEN
86 a(iend+1,j,k,l)=a(iend,j,k,l)
93 IF (
domain(ng)%Western_Edge(tile))
THEN
98 a(istr-1,j,k,l)=a(istr,j,k,l)
111 IF (
domain(ng)%Northern_Edge(tile))
THEN
116 a(i,jend+1,k,l)=a(i,jend,k,l)
123 IF (
domain(ng)%Southern_Edge(tile))
THEN
128 a(i,jstr-1,k,l)=a(i,jstr,k,l)
141 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
146 a(istr-1,jstr-1,k,l)=0.5_r8*(a(istr ,jstr-1,k,l)+ &
147 & a(istr-1,jstr ,k,l))
152 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
157 a(iend+1,jstr-1,k,l)=0.5_r8*(a(iend ,jstr-1,k,l)+ &
158 & a(iend+1,jstr ,k,l))
163 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
168 a(istr-1,jend+1,k,l)=0.5_r8*(a(istr-1,jend ,k,l)+ &
169 & a(istr ,jend+1,k,l))
174 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
179 a(iend+1,jend+1,k,l)=0.5_r8*(a(iend+1,jend ,k,l)+ &
180 & a(iend ,jend+1,k,l))
193 & lbi, ubi, lbj, ubj, lbk, ubk, lbl, ubl, &
203 & LBi, UBi, LBj, UBj, LBk, UBk, LBl, UBl, &
217 integer,
intent(in) :: ng, tile
218 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk, LBl, UBl
221 real(r8),
intent(inout) :: A(LBi:,LBj:,:,LBl:)
223 real(r8),
intent(inout) :: A(LBi:UBi,LBj:UBj,LBk:UBk,LBl:UBl)
228 integer :: Imin, Imax
229 integer :: i, j, k, l
231# include "set_bounds.h"
238 IF (
domain(ng)%Eastern_Edge(tile))
THEN
244 a(iend+1,j,k,l)=0.0_r8
254 a(iend+1,j,k,l)=a(iend,j,k,l)
262 IF (
domain(ng)%Western_Edge(tile))
THEN
278 a(istr,j,k,l)=a(istr+1,j,k,l)
293 IF (
domain(ng)%Northern_Edge(tile))
THEN
306 a(i,jend+1,k,l)=
gamma2(ng)*a(i,jend,k,l)
308 a(i,jend+1,k,l)=a(i,jend+1,k,l)* &
309 &
grid(ng)%umask(i,jend+1)
320 a(i,jend+1,k,l)=a(i,jend,k,l)
328 IF (
domain(ng)%Southern_Edge(tile))
THEN
341 a(i,jstr-1,k,l)=
gamma2(ng)*a(i,jstr,k,l)
343 a(i,jstr-1,k,l)=a(i,jstr-1,k,l)* &
344 &
grid(ng)%umask(i,jstr-1)
355 a(i,jstr-1,k,l)=a(i,jstr,k,l)
369 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
374 a(istr ,jstr-1,k,l)=0.5_r8*(a(istr+1,jstr-1,k,l)+ &
375 & a(istr ,jstr ,k,l))
380 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
385 a(iend+1,jstr-1,k,l)=0.5_r8*(a(iend ,jstr-1,k,l)+ &
386 & a(iend+1,jstr ,k,l))
391 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
396 a(istr ,jend+1,k,l)=0.5_r8*(a(istr ,jend ,k,l)+ &
397 & a(istr+1,jend+1,k,l))
402 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
407 a(iend+1,jend+1,k,l)=0.5_r8*(a(iend+1,jend ,k,l)+ &
408 & a(iend ,jend+1,k,l))
421 & lbi, ubi, lbj, ubj, lbk, ubk, lbl, ubl, &
431 & LBi, UBi, LBj, UBj, LBk, UBk, LBl, UBl, &
445 integer,
intent(in) :: ng, tile
446 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk, LBl, UBl
449 real(r8),
intent(inout) :: A(LBi:,LBj:,:,LBl:)
451 real(r8),
intent(inout) :: A(LBi:UBi,LBj:UBj,LBk:UBk,LBl:UBl)
456 integer :: Jmin, Jmax
457 integer :: i, j, k, l
459# include "set_bounds.h"
467 IF (
domain(ng)%Eastern_Edge(tile))
THEN
480 a(iend+1,j,k,l)=
gamma2(ng)*a(iend,j,k,l)
482 a(iend+1,j,k,l)=a(iend+1,j,k,l)* &
483 &
grid(ng)%vmask(iend+1,j)
494 a(iend+1,j,k,l)=a(iend,j,k,l)
502 IF (
domain(ng)%Western_Edge(tile))
THEN
515 a(istr-1,j,k,l)=
gamma2(ng)*a(istr,j,k,l)
517 a(istr-1,j,k,l)=a(istr-1,j,k,l)* &
518 &
grid(ng)%vmask(istr-1,j)
529 a(istr-1,j,k,l)=a(istr,j,k,l)
543 IF (
domain(ng)%Northern_Edge(tile))
THEN
549 a(i,jend+1,k,l)=0.0_r8
559 a(i,jend+1,k,l)=a(i,jend,k,l)
567 IF (
domain(ng)%Southern_Edge(tile))
THEN
583 a(i,jstr,k,l)=a(i,jstr+1,k,l)
597 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
602 a(istr-1,jstr ,k,l)=0.5_r8*(a(istr ,jstr ,k,l)+ &
603 & a(istr-1,jstr+1,k,l))
608 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
613 a(iend+1,jstr ,k,l)=0.5_r8*(a(iend ,jstr ,k,l)+ &
614 & a(iend+1,jstr+1,k,l))
619 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
624 a(istr-1,jend+1,k,l)=0.5_r8*(a(istr-1,jend ,k,l)+ &
625 & a(istr ,jend+1,k,l))
630 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
635 a(iend+1,jend+1,k,l)=0.5_r8*(a(iend+1,jend ,k,l)+ &
636 & a(iend ,jend+1,k,l))
649 & lbi, ubi, lbj, ubj, lbk, ubk, lbl, ubl, &
659 & LBi, UBi, LBj, UBj, LBk, UBk, LBl, UBl, &
672 integer,
intent(in) :: ng, tile
673 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk, LBl, UBl
676 real(r8),
intent(inout) :: A(LBi:,LBj:,LBk:,LBl:)
678 real(r8),
intent(inout) :: A(LBi:UBi,LBj:UBj,LBk:UBk,LBl:UBl)
683 integer :: i, j, k, l
685# include "set_bounds.h"
692 IF (
domain(ng)%Eastern_Edge(tile))
THEN
697 a(iend+1,j,k,l)=a(iend,j,k,l)
704 IF (
domain(ng)%Western_Edge(tile))
THEN
709 a(istr-1,j,k,l)=a(istr,j,k,l)
722 IF (
domain(ng)%Northern_Edge(tile))
THEN
727 a(i,jend+1,k,l)=a(i,jend,k,l)
734 IF (
domain(ng)%Southern_Edge(tile))
THEN
739 a(i,jstr-1,k,l)=a(i,jstr,k,l)
752 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
757 a(istr-1,jstr-1,k,l)=0.5_r8*(a(istr ,jstr-1,k,l)+ &
758 & a(istr-1,jstr ,k,l))
763 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
768 a(iend+1,jstr-1,k,l)=0.5_r8*(a(iend ,jstr-1,k,l)+ &
769 & a(iend+1,jstr ,k,l))
774 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
779 a(istr-1,jend+1,k,l)=0.5_r8*(a(istr-1,jend ,k,l)+ &
780 & a(istr ,jend+1,k,l))
785 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
790 a(iend+1,jend+1,k,l)=0.5_r8*(a(iend+1,jend ,k,l)+ &
791 & a(iend ,jend+1,k,l))
804 & lbi, ubi, lbj, ubj, lbk, ubk, lbl, ubl, &