46 & LBi, UBi, LBj, UBj, LBk, UBk, &
59 integer,
intent(in) :: ng, tile
60 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
63 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
65 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
74# include "set_bounds.h"
82 & lbi, ubi, lbj, ubj, lbk, ubk, &
91 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
98 adfac=0.5_r8*ad_a(iend+1,jend+1,k)
99 ad_a(iend+1,jend ,k)=ad_a(iend+1,jend ,k)+adfac
100 ad_a(iend ,jend+1,k)=ad_a(iend ,jend+1,k)+adfac
101 ad_a(iend+1,jend+1,k)=0.0_r8
105 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
112 adfac=0.5_r8*ad_a(istr-1,jend+1,k)
113 ad_a(istr-1,jend ,k)=ad_a(istr-1,jend ,k)+adfac
114 ad_a(istr ,jend+1,k)=ad_a(istr ,jend+1,k)+adfac
115 ad_a(istr-1,jend+1,k)=0.0_r8
119 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
126 adfac=0.5_r8*ad_a(iend+1,jstr-1,k)
127 ad_a(iend ,jstr-1,k)=ad_a(iend ,jstr-1,k)+adfac
128 ad_a(iend+1,jstr ,k)=ad_a(iend+1,jstr ,k)+adfac
129 ad_a(iend+1,jstr-1,k)=0.0_r8
133 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
140 adfac=0.5_r8*ad_a(istr-1,jstr-1,k)
141 ad_a(istr ,jstr-1,k)=ad_a(istr ,jstr-1,k)+adfac
142 ad_a(istr-1,jstr ,k)=ad_a(istr-1,jstr ,k)+adfac
143 ad_a(istr-1,jstr-1,k)=0.0_r8
154 IF (
domain(ng)%Southern_Edge(tile))
THEN
160 ad_a(i,jstr ,k)=ad_a(i,jstr,k)+ad_a(i,jstr-1,k)
161 ad_a(i,jstr-1,k)=0.0_r8
167 IF (
domain(ng)%Northern_Edge(tile))
THEN
173 ad_a(i,jend ,k)=ad_a(i,jend,k)+ad_a(i,jend+1,k)
174 ad_a(i,jend+1,k)=0.0_r8
186 IF (
domain(ng)%Western_Edge(tile))
THEN
192 ad_a(istr ,j,k)=ad_a(istr,j,k)+ad_a(istr-1,j,k)
193 ad_a(istr-1,j,k)=0.0_r8
199 IF (
domain(ng)%Eastern_Edge(tile))
THEN
205 ad_a(iend ,j,k)=ad_a(iend,j,k)+ad_a(iend+1,j,k)
206 ad_a(iend+1,j,k)=0.0_r8
219 & LBi, UBi, LBj, UBj, LBk, UBk, &
233 integer,
intent(in) :: ng, tile
234 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
237 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
239 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
244 integer :: Imin, Imax
249# include "set_bounds.h"
257 & lbi, ubi, lbj, ubj, lbk, ubk, &
266 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
273 adfac=0.5_r8*ad_a(iend+1,jend+1,k)
274 ad_a(iend+1,jend ,k)=ad_a(iend+1,jend ,k)+adfac
275 ad_a(iend ,jend+1,k)=ad_a(iend ,jend+1,k)+adfac
276 ad_a(iend+1,jend+1,k)=0.0_r8
280 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
287 adfac=0.5_r8*ad_a(istr ,jend+1,k)
288 ad_a(istr ,jend ,k)=ad_a(istr ,jend ,k)+adfac
289 ad_a(istr+1,jend+1,k)=ad_a(istr+1,jend+1,k)+adfac
290 ad_a(istr ,jend+1,k)=0.0_r8
294 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
301 adfac=0.5_r8*ad_a(iend+1,jstr-1,k)
302 ad_a(iend ,jstr-1,k)=ad_a(iend ,jstr-1,k)+adfac
303 ad_a(iend+1,jstr ,k)=ad_a(iend+1,jstr ,k)+adfac
304 ad_a(iend+1,jstr-1,k)=0.0_r8
308 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
315 adfac=0.5_r8*ad_a(istr ,jstr-1,k)
316 ad_a(istr+1,jstr-1,k)=ad_a(istr+1,jstr-1,k)+adfac
317 ad_a(istr ,jstr ,k)=ad_a(istr ,jstr ,k)+adfac
318 ad_a(istr ,jstr-1,k)=0.0_r8
330 IF (
domain(ng)%Southern_Edge(tile))
THEN
346 ad_a(i,jstr-1,k)=ad_a(i,jstr-1,k)* &
347 &
grid(ng)%umask(i,jstr-1)
351 ad_a(i,jstr ,k)=ad_a(i,jstr,k)+ &
352 &
gamma2(ng)*ad_a(i,jstr-1,k)
353 ad_a(i,jstr-1,k)=0.0_r8
363 ad_a(i,jstr ,k)=ad_a(i,jstr,k)+ad_a(i,jstr-1,k)
364 ad_a(i,jstr-1,k)=0.0_r8
371 IF (
domain(ng)%Northern_Edge(tile))
THEN
387 ad_a(i,jend+1,k)=ad_a(i,jend+1,k)* &
388 &
grid(ng)%umask(i,jend+1)
392 ad_a(i,jend ,k)=ad_a(i,jend,k)+ &
393 &
gamma2(ng)*ad_a(i,jend+1,k)
394 ad_a(i,jend+1,k)=0.0_r8
404 ad_a(i,jend ,k)=ad_a(i,jend,k)+ad_a(i,jend+1,k)
405 ad_a(i,jend+1,k)=0.0_r8
418 IF (
domain(ng)%Western_Edge(tile))
THEN
425 ad_a(istr,j,k)=0.0_r8
435 ad_a(istr+1,j,k)=ad_a(istr+1,j,k)+ad_a(istr,j,k)
436 ad_a(istr ,j,k)=0.0_r8
443 IF (
domain(ng)%Eastern_Edge(tile))
THEN
450 ad_a(iend+1,j,k)=0.0_r8
460 ad_a(iend ,j,k)=ad_a(iend,j,k)+ad_a(iend+1,j,k)
461 ad_a(iend+1,j,k)=0.0_r8
475 & LBi, UBi, LBj, UBj, LBk, UBk, &
489 integer,
intent(in) :: ng, tile
490 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
493 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
495 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
500 integer :: Jmin, Jmax
505# include "set_bounds.h"
513 & lbi, ubi, lbj, ubj, lbk, ubk, &
522 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
529 adfac=0.5_r8*ad_a(iend+1,jend+1,k)
530 ad_a(iend+1,jend ,k)=ad_a(iend+1,jend ,k)+adfac
531 ad_a(iend ,jend+1,k)=ad_a(iend ,jend+1,k)+adfac
532 ad_a(iend+1,jend+1,k)=0.0_r8
536 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
543 adfac=0.5_r8*ad_a(istr-1,jend+1,k)
544 ad_a(istr-1,jend ,k)=ad_a(istr-1,jend ,k)+adfac
545 ad_a(istr ,jend+1,k)=ad_a(istr ,jend+1,k)+adfac
546 ad_a(istr-1,jend+1,k)=0.0_r8
550 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
557 adfac=0.5_r8*ad_a(iend+1,jstr ,k)
558 ad_a(iend ,jstr ,k)=ad_a(iend ,jstr ,k)+adfac
559 ad_a(iend+1,jstr+1,k)=ad_a(iend+1,jstr+1,k)+adfac
560 ad_a(iend+1,jstr ,k)=0.0_r8
564 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
571 adfac=0.5_r8*ad_a(istr-1,jstr ,k)
572 ad_a(istr ,jstr ,k)=ad_a(istr ,jstr ,k)+adfac
573 ad_a(istr-1,jstr+1,k)=ad_a(istr-1,jstr+1,k)+adfac
574 ad_a(istr-1,jstr ,k)=0.0_r8
585 IF (
domain(ng)%Southern_Edge(tile))
THEN
592 ad_a(i,jstr,k)=0.0_r8
602 ad_a(i,jstr+1,k)=ad_a(i,jstr+1,k)+ad_a(i,jstr,k)
603 ad_a(i,jstr ,k)=0.0_r8
610 IF (
domain(ng)%Northern_Edge(tile))
THEN
617 ad_a(i,jend+1,k)=0.0_r8
627 ad_a(i,jend ,k)=ad_a(i,jend,k)+ad_a(i,jend+1,k)
628 ad_a(i,jend+1,k)=0.0_r8
642 IF (
domain(ng)%Western_Edge(tile))
THEN
658 ad_a(istr-1,j,k)=ad_a(istr-1,j,k)* &
659 &
grid(ng)%vmask(istr-1,j)
663 ad_a(istr ,j,k)=ad_a(istr,j,k)+ &
664 &
gamma2(ng)*ad_a(istr-1,j,k)
665 ad_a(istr-1,j,k)=0.0_r8
675 ad_a(istr ,j,k)=ad_a(istr,j,k)+ad_a(istr-1,j,k)
676 ad_a(istr-1,j,k)=0.0_r8
683 IF (
domain(ng)%Eastern_Edge(tile))
THEN
699 ad_a(iend+1,j,k)=ad_a(iend+1,j,k)* &
700 &
grid(ng)%vmask(iend+1,j)
704 ad_a(iend ,j,k)=ad_a(iend,j,k)+ &
705 &
gamma2(ng)*ad_a(iend+1,j,k)
706 ad_a(iend+1,j,k)=0.0_r8
716 ad_a(iend ,j,k)=ad_a(iend,j,k)+ad_a(iend+1,j,k)
717 ad_a(iend+1,j,k)=0.0_r8
731 & LBi, UBi, LBj, UBj, LBk, UBk, &
744 integer,
intent(in) :: ng, tile
745 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
748 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
750 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
759# include "set_bounds.h"
767 & lbi, ubi, lbj, ubj, lbk, ubk, &
776 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
783 adfac=0.5_r8*ad_a(iend+1,jend+1,k)
784 ad_a(iend+1,jend ,k)=ad_a(iend+1,jend ,k)+adfac
785 ad_a(iend ,jend+1,k)=ad_a(iend ,jend+1,k)+adfac
786 ad_a(iend+1,jend+1,k)=0.0_r8
790 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
797 adfac=0.5_r8*ad_a(istr-1,jend+1,k)
798 ad_a(istr-1,jend ,k)=ad_a(istr-1,jend ,k)+adfac
799 ad_a(istr ,jend+1,k)=ad_a(istr ,jend+1,k)+adfac
800 ad_a(istr-1,jend+1,k)=0.0_r8
804 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
811 adfac=0.5_r8*ad_a(iend+1,jstr-1,k)
812 ad_a(iend+1,jstr ,k)=ad_a(iend+1,jstr ,k)+adfac
813 ad_a(iend ,jstr-1,k)=ad_a(iend ,jstr-1,k)+adfac
814 ad_a(iend+1,jstr-1,k)=0.0_r8
818 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
825 adfac=0.5_r8*ad_a(istr-1,jstr-1,k)
826 ad_a(istr ,jstr-1,k)=ad_a(istr ,jstr-1,k)+adfac
827 ad_a(istr-1,jstr ,k)=ad_a(istr-1,jstr ,k)+adfac
828 ad_a(istr-1,jstr-1,k)=0.0_r8
839 IF (
domain(ng)%Southern_Edge(tile))
THEN
845 ad_a(i,jstr ,k)=ad_a(i,jstr,k)+ad_a(i,jstr-1,k)
846 ad_a(i,jstr-1,k)=0.0_r8
852 IF (
domain(ng)%Northern_Edge(tile))
THEN
858 ad_a(i,jend ,k)=ad_a(i,jend,k)+ad_a(i,jend+1,k)
859 ad_a(i,jend+1,k)=0.0_r8
871 IF (
domain(ng)%Western_Edge(tile))
THEN
877 ad_a(istr ,j,k)=ad_a(istr,j,k)+ad_a(istr-1,j,k)
878 ad_a(istr-1,j,k)=0.0_r8
884 IF (
domain(ng)%Eastern_Edge(tile))
THEN
890 ad_a(iend ,j,k)=ad_a(iend,j,k)+ad_a(iend+1,j,k)
891 ad_a(iend+1,j,k)=0.0_r8
904 & LBi, UBi, LBj, UBj, LBk, UBk, &
917 integer,
intent(in) :: ng, tile
918 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
921 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
923 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
932# include "set_bounds.h"
940 & lbi, ubi, lbj, ubj, lbk, ubk, &
949 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
956 adfac=0.5_r8*ad_a(iend+1,jend+1,k)
957 ad_a(iend+1,jend ,k)=ad_a(iend+1,jend ,k)+adfac
958 ad_a(iend ,jend+1,k)=ad_a(iend ,jend+1,k)+adfac
959 ad_a(iend+1,jend+1,k)=0.0_r8
963 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
970 adfac=0.5_r8*ad_a(istr-1,jend+1,k)
971 ad_a(istr-1,jend ,k)=ad_a(istr-1,jend ,k)+adfac
972 ad_a(istr ,jend+1,k)=ad_a(istr ,jend+1,k)+adfac
973 ad_a(istr-1,jend+1,k)=0.0_r8
977 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
984 adfac=0.5_r8*ad_a(iend+1,jstr-1,k)
985 ad_a(iend ,jstr-1,k)=ad_a(iend ,jstr-1,k)+adfac
986 ad_a(iend+1,jstr ,k)=ad_a(iend+1,jstr ,k)+adfac
987 ad_a(iend+1,jstr-1,k)=0.0_r8
991 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
998 adfac=0.5_r8*ad_a(istr-1,jstr-1,k)
999 ad_a(istr ,jstr-1,k)=ad_a(istr ,jstr-1,k)+adfac
1000 ad_a(istr-1,jstr ,k)=ad_a(istr-1,jstr ,k)+adfac
1001 ad_a(istr-1,jstr-1,k)=0.0_r8
1012 IF (
domain(ng)%Southern_Edge(tile))
THEN
1018 ad_a(i,jstr ,k)=ad_a(i,jstr,k)+ad_a(i,jstr-1,k)
1019 ad_a(i,jstr-1,k)=0.0_r8
1025 IF (
domain(ng)%Northern_Edge(tile))
THEN
1031 ad_a(i,jend ,k)=ad_a(i,jend,k)+ad_a(i,jend+1,k)
1032 ad_a(i,jend+1,k)=0.0_r8
1044 IF (
domain(ng)%Western_Edge(tile))
THEN
1050 ad_a(istr ,j,k)=ad_a(istr,j,k)+ad_a(istr-1,j,k)
1051 ad_a(istr-1,j,k)=0.0_r8
1057 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1063 ad_a(iend ,j,k)=ad_a(iend,j,k)+ad_a(iend+1,j,k)
1064 ad_a(iend+1,j,k)=0.0_r8
1077 & LBi, UBi, LBj, UBj, LBk, UBk, &
1091 integer,
intent(in) :: ng, tile
1092 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
1094# ifdef ASSUMED_SHAPE
1095 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
1097 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
1102 integer :: Imin, Imax
1107# include "set_bounds.h"
1115 & lbi, ubi, lbj, ubj, lbk, ubk, &
1124 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
1131 adfac=0.5_r8*ad_a(iend+1,jend+1,k)
1132 ad_a(iend+1,jend ,k)=ad_a(iend+1,jend ,k)+adfac
1133 ad_a(iend ,jend+1,k)=ad_a(iend ,jend+1,k)+adfac
1134 ad_a(iend+1,jend+1,k)=0.0_r8
1138 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
1145 adfac=0.5_r8*ad_a(istr ,jend+1,k)
1146 ad_a(istr ,jend ,k)=ad_a(istr ,jend ,k)+adfac
1147 ad_a(istr+1,jend+1,k)=ad_a(istr+1,jend+1,k)+adfac
1148 ad_a(istr ,jend+1,k)=0.0_r8
1152 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
1159 adfac=0.5_r8*ad_a(iend+1,jstr-1,k)
1160 ad_a(iend ,jstr-1,k)=ad_a(iend ,jstr-1,k)+adfac
1161 ad_a(iend+1,jstr ,k)=ad_a(iend+1,jstr ,k)+adfac
1162 ad_a(iend+1,jstr-1,k)=0.0_r8
1166 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
1173 adfac=0.5_r8*ad_a(istr ,jstr-1,k)
1174 ad_a(istr+1,jstr-1,k)=ad_a(istr+1,jstr-1,k)+adfac
1175 ad_a(istr ,jstr ,k)=ad_a(istr ,jstr ,k)+adfac
1176 ad_a(istr ,jstr-1,k)=0.0_r8
1187 IF (
domain(ng)%Southern_Edge(tile))
THEN
1193 ad_a(i,jstr ,k)=ad_a(i,jstr,k)+ad_a(i,jstr-1,k)
1194 ad_a(i,jstr-1,k)=0.0_r8
1200 IF (
domain(ng)%Northern_Edge(tile))
THEN
1206 ad_a(i,jend ,k)=ad_a(i,jend,k)+ad_a(i,jend+1,k)
1207 ad_a(i,jend+1,k)=0.0_r8
1219 IF (
domain(ng)%Western_Edge(tile))
THEN
1225 ad_a(istr+1,j,k)=ad_a(istr+1,j,k)+ad_a(istr,j,k)
1226 ad_a(istr ,j,k)=0.0_r8
1232 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1238 ad_a(iend ,j,k)=ad_a(iend,j,k)+ad_a(iend+1,j,k)
1239 ad_a(iend+1,j,k)=0.0_r8
1252 & LBi, UBi, LBj, UBj, LBk, UBk, &
1266 integer,
intent(in) :: ng, tile
1267 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
1269# ifdef ASSUMED_SHAPE
1270 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
1272 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
1277 integer :: Jmin, Jmax
1282# include "set_bounds.h"
1290 & lbi, ubi, lbj, ubj, lbk, ubk, &
1299 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
1306 adfac=0.5_r8*ad_a(iend+1,jend+1,k)
1307 ad_a(iend+1,jend ,k)=ad_a(iend+1,jend ,k)+adfac
1308 ad_a(iend ,jend+1,k)=ad_a(iend ,jend+1,k)+adfac
1309 ad_a(iend+1,jend+1,k)=0.0_r8
1313 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
1320 adfac=0.5_r8*ad_a(istr-1,jend+1,k)
1321 ad_a(istr-1,jend ,k)=ad_a(istr-1,jend ,k)+adfac
1322 ad_a(istr ,jend+1,k)=ad_a(istr ,jend+1,k)+adfac
1323 ad_a(istr-1,jend+1,k)=0.0_r8
1327 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
1334 adfac=0.5_r8*ad_a(iend+1,jstr ,k)
1335 ad_a(iend ,jstr ,k)=ad_a(iend ,jstr ,k)+adfac
1336 ad_a(iend+1,jstr+1,k)=ad_a(iend+1,jstr+1,k)+adfac
1337 ad_a(iend+1,jstr ,k)=0.0_r8
1341 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
1348 adfac=0.5_r8*ad_a(istr-1,jstr ,k)
1349 ad_a(istr ,jstr ,k)=ad_a(istr ,jstr ,k)+adfac
1350 ad_a(istr-1,jstr+1,k)=ad_a(istr-1,jstr+1,k)+adfac
1351 ad_a(istr-1,jstr ,k)=0.0_r8
1362 IF (
domain(ng)%Southern_Edge(tile))
THEN
1368 ad_a(i,jstr+1,k)=ad_a(i,jstr+1,k)+ad_a(i,jstr,k)
1369 ad_a(i,jstr ,k)=0.0_r8
1375 IF (
domain(ng)%Northern_Edge(tile))
THEN
1381 ad_a(i,jend ,k)=ad_a(i,jend,k)+ad_a(i,jend+1,k)
1382 ad_a(i,jend+1,k)=0.0_r8
1394 IF (
domain(ng)%Western_Edge(tile))
THEN
1400 ad_a(istr ,j,k)=ad_a(istr,j,k)+ad_a(istr-1,j,k)
1401 ad_a(istr-1,j,k)=0.0_r8
1407 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1413 ad_a(iend ,j,k)=ad_a(iend,j,k)+ad_a(iend+1,j,k)
1414 ad_a(iend+1,j,k)=0.0_r8