43 & LBi, UBi, LBj, UBj, &
56 integer,
intent(in) :: ng, tile
57 integer,
intent(in) :: LBi, UBi, LBj, UBj
60 real(r8),
intent(inout) :: ad_A(LBi:,LBj:)
62 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj)
71# include "set_bounds.h"
79 & lbi, ubi, lbj, ubj, &
88 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
94 adfac=0.5_r8*ad_a(iend+1,jend+1)
95 ad_a(iend+1,jend )=ad_a(iend+1,jend )+adfac
96 ad_a(iend ,jend+1)=ad_a(iend ,jend+1)+adfac
97 ad_a(iend+1,jend+1)=0.0_r8
100 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
106 adfac=0.5_r8*ad_a(istr-1,jend+1)
107 ad_a(istr-1,jend )=ad_a(istr-1,jend )+adfac
108 ad_a(istr ,jend+1)=ad_a(istr ,jend+1)+adfac
109 ad_a(istr-1,jend+1)=0.0_r8
112 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
118 adfac=0.5_r8*ad_a(iend+1,jstr-1)
119 ad_a(iend ,jstr-1)=ad_a(iend ,jstr-1)+adfac
120 ad_a(iend+1,jstr )=ad_a(iend+1,jstr )+adfac
121 ad_a(iend+1,jstr-1)=0.0_r8
124 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
130 adfac=0.5_r8*ad_a(istr-1,jstr-1)
131 ad_a(istr ,jstr-1)=ad_a(istr ,jstr-1)+adfac
132 ad_a(istr-1,jstr )=ad_a(istr-1,jstr )+adfac
133 ad_a(istr-1,jstr-1)=0.0_r8
143 IF (
domain(ng)%Southern_Edge(tile))
THEN
148 ad_a(i,jstr )=ad_a(i,jstr)+ad_a(i,jstr-1)
149 ad_a(i,jstr-1)=0.0_r8
154 IF (
domain(ng)%Northern_Edge(tile))
THEN
159 ad_a(i,jend )=ad_a(i,jend)+ad_a(i,jend+1)
160 ad_a(i,jend+1)=0.0_r8
171 IF (
domain(ng)%Western_Edge(tile))
THEN
176 ad_a(istr ,j)=ad_a(istr,j)+ad_a(istr-1,j)
177 ad_a(istr-1,j)=0.0_r8
182 IF (
domain(ng)%Eastern_Edge(tile))
THEN
187 ad_a(iend ,j)=ad_a(iend,j)+ad_a(iend+1,j)
188 ad_a(iend+1,j)=0.0_r8
200 & LBi, UBi, LBj, UBj, &
214 integer,
intent(in) :: ng, tile
215 integer,
intent(in) :: LBi, UBi, LBj, UBj
218 real(r8),
intent(inout) :: ad_A(LBi:,LBj:)
220 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj)
225 integer :: Imin, Imax
230# include "set_bounds.h"
238 & lbi, ubi, lbj, ubj, &
247 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
253 adfac=0.5_r8*ad_a(iend+1,jend+1)
254 ad_a(iend+1,jend )=ad_a(iend+1,jend )+adfac
255 ad_a(iend ,jend+1)=ad_a(iend ,jend+1)+adfac
256 ad_a(iend+1,jend+1)=0.0_r8
259 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
265 adfac=0.5_r8*ad_a(istr,jend+1)
266 ad_a(istr ,jend )=ad_a(istr ,jend )+adfac
267 ad_a(istr+1,jend+1)=ad_a(istr+1,jend+1)+adfac
268 ad_a(istr ,jend+1)=0.0_r8
271 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
277 adfac=0.5_r8*ad_a(iend+1,jstr-1)
278 ad_a(iend ,jstr-1)=ad_a(iend ,jstr-1)+adfac
279 ad_a(iend+1,jstr )=ad_a(iend+1,jstr )+adfac
280 ad_a(iend+1,jstr-1)=0.0_r8
283 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
289 adfac=0.5_r8*ad_a(istr,jstr-1)
290 ad_a(istr+1,jstr-1)=ad_a(istr+1,jstr-1)+adfac
291 ad_a(istr ,jstr )=ad_a(istr ,jstr )+adfac
292 ad_a(istr ,jstr-1)=0.0_r8
303 IF (
domain(ng)%Southern_Edge(tile))
THEN
317 ad_a(i,jstr-1)=ad_a(i,jstr-1)*
grid(ng)%umask(i,jstr-1)
321 ad_a(i,jstr)=ad_a(i,jstr)+
gamma2(ng)*ad_a(i,jstr-1)
322 ad_a(i,jstr-1)=0.0_r8
330 ad_a(i,jstr )=ad_a(i,jstr)+ad_a(i,jstr-1)
331 ad_a(i,jstr-1)=0.0_r8
337 IF (
domain(ng)%Northern_Edge(tile))
THEN
351 ad_a(i,jend+1)=ad_a(i,jend+1)*
grid(ng)%umask(i,jend+1)
355 ad_a(i,jend)=ad_a(i,jend)+
gamma2(ng)*ad_a(i,jend+1)
356 ad_a(i,jend+1)=0.0_r8
364 ad_a(i,jend )=ad_a(i,jend)+ad_a(i,jend+1)
365 ad_a(i,jend+1)=0.0_r8
377 IF (
domain(ng)%Western_Edge(tile))
THEN
391 ad_a(istr+1,j)=ad_a(istr+1,j)+ad_a(istr,j)
398 IF (
domain(ng)%Eastern_Edge(tile))
THEN
404 ad_a(iend+1,j)=0.0_r8
412 ad_a(iend ,j)=ad_a(iend,j)+ad_a(iend+1,j)
413 ad_a(iend+1,j)=0.0_r8
426 & LBi, UBi, LBj, UBj, &
440 integer,
intent(in) :: ng, tile
441 integer,
intent(in) :: LBi, UBi, LBj, UBj
444 real(r8),
intent(inout) :: ad_A(LBi:,LBj:)
446 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj)
451 integer :: Jmin, Jmax
456# include "set_bounds.h"
464 & lbi, ubi, lbj, ubj, &
473 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
479 adfac=0.5_r8*ad_a(iend+1,jend+1)
480 ad_a(iend+1,jend )=ad_a(iend+1,jend )+adfac
481 ad_a(iend ,jend+1)=ad_a(iend ,jend+1)+adfac
482 ad_a(iend+1,jend+1)=0.0_r8
485 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
491 adfac=0.5_r8*ad_a(istr-1,jend+1)
492 ad_a(istr-1,jend )=ad_a(istr-1,jend )+adfac
493 ad_a(istr ,jend+1)=ad_a(istr ,jend+1)+adfac
494 ad_a(istr-1,jend+1)=0.0_r8
497 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
503 adfac=0.5_r8*ad_a(iend+1,jstr )
504 ad_a(iend ,jstr )=ad_a(iend ,jstr )+adfac
505 ad_a(iend+1,jstr+1)=ad_a(iend+1,jstr+1)+adfac
506 ad_a(iend+1,jstr )=0.0_r8
509 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
515 adfac=0.5_r8*ad_a(istr-1,jstr )
516 ad_a(istr ,jstr )=ad_a(istr ,jstr )+adfac
517 ad_a(istr-1,jstr+1)=ad_a(istr-1,jstr+1)+adfac
518 ad_a(istr-1,jstr )=0.0_r8
528 IF (
domain(ng)%Southern_Edge(tile))
THEN
542 ad_a(i,jstr+1)=ad_a(i,jstr+1)+ad_a(i,jstr)
549 IF (
domain(ng)%Northern_Edge(tile))
THEN
555 ad_a(i,jend+1)=0.0_r8
563 ad_a(i,jend)=ad_a(i,jend)+ad_a(i,jend+1)
564 ad_a(i,jend+1)=0.0_r8
576 IF (
domain(ng)%Western_Edge(tile))
THEN
590 ad_a(istr-1,j)=ad_a(istr-1,j)*
grid(ng)%vmask(istr-1,j)
594 ad_a(istr ,j)=ad_a(istr,j)+
gamma2(ng)*ad_a(istr-1,j)
595 ad_a(istr-1,j)=0.0_r8
603 ad_a(istr ,j)=ad_a(istr,j)+ad_a(istr-1,j)
604 ad_a(istr-1,j)=0.0_r8
610 IF (
domain(ng)%Eastern_Edge(tile))
THEN
624 ad_a(iend+1,j)=ad_a(iend+1,j)*
grid(ng)%vmask(iend+1,j)
628 ad_a(iend ,j)=ad_a(iend,j)+ad_a(iend+1,j)
629 ad_a(iend+1,j)=0.0_r8
637 ad_a(iend ,j)=ad_a(iend,j)+ad_a(iend+1,j)
638 ad_a(iend+1,j)=0.0_r8
651 & LBi, UBi, LBj, UBj, &
664 integer,
intent(in) :: ng, tile
665 integer,
intent(in) :: LBi, UBi, LBj, UBj
668 real(r8),
intent(inout) :: ad_A(LBi:,LBj:)
670 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj)
679# include "set_bounds.h"
687 & lbi, ubi, lbj, ubj, &
696 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
702 adfac=0.5_r8*ad_a(iend+1,jend+1)
703 ad_a(iend+1,jend )=ad_a(iend+1,jend )+adfac
704 ad_a(iend ,jend+1)=ad_a(iend ,jend+1)+adfac
705 ad_a(iend+1,jend+1)=0.0_r8
708 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
714 adfac=0.5_r8*ad_a(istr-1,jend+1)
715 ad_a(istr-1,jend )=ad_a(istr-1,jend )+adfac
716 ad_a(istr ,jend+1)=ad_a(istr ,jend+1)+adfac
717 ad_a(istr-1,jend+1)=0.0_r8
720 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
726 adfac=0.5_r8*ad_a(iend+1,jstr-1)
727 ad_a(iend ,jstr-1)=ad_a(iend ,jstr-1)+adfac
728 ad_a(iend+1,jstr )=ad_a(iend+1,jstr )+adfac
729 ad_a(iend+1,jstr-1)=0.0_r8
732 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
738 adfac=0.5_r8*ad_a(istr-1,jstr-1)
739 ad_a(istr ,jstr-1)=ad_a(istr ,jstr-1)+adfac
740 ad_a(istr-1,jstr )=ad_a(istr-1,jstr )+adfac
741 ad_a(istr-1,jstr-1)=0.0_r8
751 IF (
domain(ng)%Southern_Edge(tile))
THEN
756 ad_a(i,jstr )=ad_a(i,jstr)+ad_a(i,jstr-1)
757 ad_a(i,jstr-1)=0.0_r8
762 IF (
domain(ng)%Northern_Edge(tile))
THEN
767 ad_a(i,jend )=ad_a(i,jend)+ad_a(i,jend+1)
768 ad_a(i,jend+1)=0.0_r8
779 IF (
domain(ng)%Western_Edge(tile))
THEN
784 ad_a(istr ,j)=ad_a(istr,j)+ad_a(istr-1,j)
785 ad_a(istr-1,j)=0.0_r8
790 IF (
domain(ng)%Eastern_Edge(tile))
THEN
795 ad_a(iend ,j)=ad_a(iend,j)+ad_a(iend+1,j)
796 ad_a(iend+1,j)=0.0_r8
808 & LBi, UBi, LBj, UBj, &
822 integer,
intent(in) :: ng, tile
823 integer,
intent(in) :: LBi, UBi, LBj, UBj
826 real(r8),
intent(inout) :: ad_A(LBi:,LBj:)
828 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj)
833 integer :: Imin, Imax
838# include "set_bounds.h"
846 & lbi, ubi, lbj, ubj, &
855 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
861 adfac=0.5_r8*ad_a(iend+1,jend+1)
862 ad_a(iend+1,jend )=ad_a(iend+1,jend )+adfac
863 ad_a(iend ,jend+1)=ad_a(iend ,jend+1)+adfac
864 ad_a(iend+1,jend+1)=0.0_r8
867 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
873 adfac=0.5_r8*ad_a(istr,jend+1)
874 ad_a(istr ,jend )=ad_a(istr ,jend )+adfac
875 ad_a(istr+1,jend+1)=ad_a(istr+1,jend+1)+adfac
876 ad_a(istr ,jend+1)=0.0_r8
879 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
885 adfac=0.5_r8*ad_a(iend+1,jstr-1)
886 ad_a(iend ,jstr-1)=ad_a(iend ,jstr-1)+adfac
887 ad_a(iend+1,jstr )=ad_a(iend+1,jstr )+adfac
888 ad_a(iend+1,jstr-1)=0.0_r8
891 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
897 adfac=0.5_r8*ad_a(istr,jstr-1)
898 ad_a(istr+1,jstr-1)=ad_a(istr+1,jstr-1)+adfac
899 ad_a(istr ,jstr )=ad_a(istr ,jstr )+adfac
900 ad_a(istr ,jstr-1)=0.0_r8
910 IF (
domain(ng)%Southern_Edge(tile))
THEN
915 ad_a(i,jstr )=ad_a(i,jstr)+ad_a(i,jstr-1)
916 ad_a(i,jstr-1)=0.0_r8
921 IF (
domain(ng)%Northern_Edge(tile))
THEN
926 ad_a(i,jend )=ad_a(i,jend)+ad_a(i,jend+1)
927 ad_a(i,jend+1)=0.0_r8
938 IF (
domain(ng)%Western_Edge(tile))
THEN
943 ad_a(istr+1,j)=ad_a(istr+1,j)+ad_a(istr,j)
949 IF (
domain(ng)%Eastern_Edge(tile))
THEN
954 ad_a(iend ,j)=ad_a(iend,j)+ad_a(iend+1,j)
955 ad_a(iend+1,j)=0.0_r8
967 & LBi, UBi, LBj, UBj, &
981 integer,
intent(in) :: ng, tile
982 integer,
intent(in) :: LBi, UBi, LBj, UBj
985 real(r8),
intent(inout) :: ad_A(LBi:,LBj:)
987 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj)
992 integer :: Jmin, Jmax
997# include "set_bounds.h"
1005 & lbi, ubi, lbj, ubj, &
1014 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
1020 adfac=0.5_r8*ad_a(iend+1,jend+1)
1021 ad_a(iend+1,jend )=ad_a(iend+1,jend )+adfac
1022 ad_a(iend ,jend+1)=ad_a(iend ,jend+1)+adfac
1023 ad_a(iend+1,jend+1)=0.0_r8
1026 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
1032 adfac=0.5_r8*ad_a(istr-1,jend+1)
1033 ad_a(istr-1,jend )=ad_a(istr-1,jend )+adfac
1034 ad_a(istr ,jend+1)=ad_a(istr ,jend+1)+adfac
1035 ad_a(istr-1,jend+1)=0.0_r8
1038 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
1044 adfac=0.5_r8*ad_a(iend+1,jstr )
1045 ad_a(iend ,jstr )=ad_a(iend ,jstr )+adfac
1046 ad_a(iend+1,jstr+1)=ad_a(iend+1,jstr+1)+adfac
1047 ad_a(iend+1,jstr )=0.0_r8
1050 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
1056 adfac=0.5_r8*ad_a(istr-1,jstr )
1057 ad_a(istr ,jstr )=ad_a(istr ,jstr )+adfac
1058 ad_a(istr-1,jstr+1)=ad_a(istr-1,jstr+1)+adfac
1059 ad_a(istr-1,jstr )=0.0_r8
1069 IF (
domain(ng)%Southern_Edge(tile))
THEN
1074 ad_a(i,jstr+1)=ad_a(i,jstr+1)+ad_a(i,jstr)
1080 IF (
domain(ng)%Northern_Edge(tile))
THEN
1085 ad_a(i,jend)=ad_a(i,jend)+ad_a(i,jend+1)
1086 ad_a(i,jend+1)=0.0_r8
1097 IF (
domain(ng)%Western_Edge(tile))
THEN
1102 ad_a(istr ,j)=ad_a(istr,j)+ad_a(istr-1,j)
1103 ad_a(istr-1,j)=0.0_r8
1108 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1113 ad_a(iend ,j)=ad_a(iend,j)+ad_a(iend+1,j)
1114 ad_a(iend+1,j)=0.0_r8