47 & LBi, UBi, LBj, UBj, LBk, UBk, &
56 integer,
intent(in) :: ng, tile
57 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
60 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
62 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
67 logical :: EW_exchange
68 logical :: NS_exchange
70 integer :: Imin, Imax, Jmin, Jmax
73# include "set_bounds.h"
81 ew_exchange=
ntilei(ng).eq.1
91 ns_exchange=
ntilej(ng).eq.1
104 IF (ew_exchange.and.ns_exchange)
THEN
105 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
109 ad_a(
lm(ng)-2,
mm(ng)-2,k)=ad_a(
lm(ng)-2,
mm(ng)-2,k)+ &
114 ad_a(
lm(ng)-2,
mm(ng)-1,k)=ad_a(
lm(ng)-2,
mm(ng)-1,k)+ &
119 ad_a(
lm(ng)-2,
mm(ng) ,k)=ad_a(
lm(ng)-2,
mm(ng) ,k)+ &
124 ad_a(
lm(ng)-1,
mm(ng)-2,k)=ad_a(
lm(ng)-1,
mm(ng)-2,k)+ &
129 ad_a(
lm(ng)-1,
mm(ng)-1,k)=ad_a(
lm(ng)-1,
mm(ng)-1,k)+ &
134 ad_a(
lm(ng)-1,
mm(ng) ,k)=ad_a(
lm(ng)-1,
mm(ng) ,k)+ &
139 ad_a(
lm(ng) ,
mm(ng)-2,k)=ad_a(
lm(ng) ,
mm(ng)-2,k)+ &
144 ad_a(
lm(ng) ,
mm(ng)-1,k)=ad_a(
lm(ng) ,
mm(ng)-1,k)+ &
149 ad_a(
lm(ng) ,
mm(ng) ,k)=ad_a(
lm(ng) ,
mm(ng) ,k)+ &
155 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
159 ad_a( 1,
mm(ng)-2,k)=ad_a( 1,
mm(ng)-2,k)+ &
160 & ad_a(
lm(ng)+1,-2,k)
161 ad_a(
lm(ng)+1,-2,k)=0.0_r8
164 ad_a( 1,
mm(ng)-1,k)=ad_a( 1,
mm(ng)-1,k)+ &
165 & ad_a(
lm(ng)+1,-1,k)
166 ad_a(
lm(ng)+1,-1,k)=0.0_r8
169 ad_a( 1,
mm(ng) ,k)=ad_a( 1,
mm(ng) ,k)+ &
170 & ad_a(
lm(ng)+1, 0,k)
171 ad_a(
lm(ng)+1, 0,k)=0.0_r8
174 ad_a( 2,
mm(ng)-2,k)=ad_a( 2,
mm(ng)-2,k)+ &
175 & ad_a(
lm(ng)+2,-2,k)
176 ad_a(
lm(ng)+2,-2,k)=0.0_r8
179 ad_a( 2,
mm(ng)-1,k)=ad_a( 2,
mm(ng)-1,k)+ &
180 & ad_a(
lm(ng)+2,-1,k)
181 ad_a(
lm(ng)+2,-1,k)=0.0_r8
184 ad_a( 2,
mm(ng) ,k)=ad_a( 2,
mm(ng) ,k)+ &
185 & ad_a(
lm(ng)+2, 0,k)
186 ad_a(
lm(ng)+2, 0,k)=0.0_r8
192 ad_a(3 ,
mm(ng)-2,k)=ad_a(3 ,
mm(ng)-2,k)+ &
193 & ad_a(
lm(ng)+3,-2,k)
194 ad_a(
lm(ng)+3,-2,k)=0.0_r8
197 ad_a(3 ,
mm(ng)-1,k)=ad_a(3 ,
mm(ng)-1,k)+ &
198 & ad_a(
lm(ng)+3,-1,k)
199 ad_a(
lm(ng)+3,-1,k)=0.0_r8
202 ad_a(3 ,
mm(ng) ,k)=ad_a(3 ,
mm(ng) ,k)+ &
203 & ad_a(
lm(ng)+3, 0,k)
204 ad_a(
lm(ng)+3, 0,k)=0.0_r8
209 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
213 ad_a(
lm(ng)-2, 1,k)=ad_a(
lm(ng)-2, 1,k)+ &
214 & ad_a(-2,
mm(ng)+1,k)
215 ad_a(-2,
mm(ng)+1,k)=0.0_r8
218 ad_a(
lm(ng)-1, 1,k)=ad_a(
lm(ng)-1, 1,k)+ &
219 & ad_a(-1,
mm(ng)+1,k)
220 ad_a(-1,
mm(ng)+1,k)=0.0_r8
223 ad_a(
lm(ng) , 1,k)=ad_a(
lm(ng) , 1,k)+ &
224 & ad_a( 0,
mm(ng)+1,k)
225 ad_a( 0,
mm(ng)+1,k)=0.0_r8
228 ad_a(
lm(ng)-2, 2,k)=ad_a(
lm(ng)-2, 2,k)+ &
229 & ad_a(-2,
mm(ng)+2,k)
230 ad_a(-2,
mm(ng)+2,k)=0.0_r8
233 ad_a(
lm(ng)-1, 2,k)=ad_a(
lm(ng)-1, 2,k)+ &
234 & ad_a(-1,
mm(ng)+2,k)
235 ad_a(-1,
mm(ng)+2,k)=0.0_r8
238 ad_a(
lm(ng) , 2,k)=ad_a(
lm(ng) , 2,k)+ &
239 & ad_a( 0,
mm(ng)+2,k)
240 ad_a( 0,
mm(ng)+2,k)=0.0_r8
246 ad_a(
lm(ng)-2, 3,k)=ad_a(
lm(ng)-2, 3,k)+ &
247 & ad_a(-2,
mm(ng)+3,k)
248 ad_a(-2,
mm(ng)+3,k)=0.0_r8
251 ad_a(
lm(ng)-1, 3,k)=ad_a(
lm(ng)-1, 3,k)+ &
252 & ad_a(-1,
mm(ng)+3,k)
253 ad_a(-1,
mm(ng)+3,k)=0.0_r8
256 ad_a(
lm(ng) , 3,k)=ad_a(
lm(ng) , 3,k)+ &
257 & ad_a( 0,
mm(ng)+3,k)
258 ad_a( 0,
mm(ng)+3,k)=0.0_r8
263 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
267 ad_a( 1, 1,k)=ad_a( 1, 1,k)+ &
268 & ad_a(
lm(ng)+1,
mm(ng)+1,k)
269 ad_a(
lm(ng)+1,
mm(ng)+1,k)=0.0_r8
272 ad_a( 1, 2,k)=ad_a( 1, 2,k)+ &
273 & ad_a(
lm(ng)+1,
mm(ng)+2,k)
274 ad_a(
lm(ng)+1,
mm(ng)+2,k)=0.0_r8
277 ad_a( 2, 1,k)=ad_a( 2, 1,k)+ &
278 & ad_a(
lm(ng)+2,
mm(ng)+1,k)
279 ad_a(
lm(ng)+2,
mm(ng)+1,k)=0.0_r8
282 ad_a( 2, 2,k)=ad_a( 2, 2,k)+ &
283 & ad_a(
lm(ng)+2,
mm(ng)+2,k)
284 ad_a(
lm(ng)+2,
mm(ng)+2,k)=0.0_r8
290 ad_a( 1, 3,k)=ad_a( 1, 3,k)+ &
291 & ad_a(
lm(ng)+1,
mm(ng)+3,k)
292 ad_a(
lm(ng)+1,
mm(ng)+3,k)=0.0_r8
296 ad_a( 2, 3,k)=ad_a( 2, 3,k)+ &
297 & ad_a(
lm(ng)+2,
mm(ng)+3,k)
298 ad_a(
lm(ng)+2,
mm(ng)+3,k)=0.0_r8
301 ad_a( 3, 1,k)=ad_a( 3, 1,k)+ &
302 & ad_a(
lm(ng)+3,
mm(ng)+1,k)
303 ad_a(
lm(ng)+3,
mm(ng)+1,k)=0.0_r8
306 ad_a( 3, 2,k)=ad_a( 3, 2,k)+ &
307 & ad_a(
lm(ng)+3,
mm(ng)+2,k)
308 ad_a(
lm(ng)+3,
mm(ng)+2,k)=0.0_r8
311 ad_a( 3, 3,k)=ad_a( 3, 3,k)+ &
312 & ad_a(
lm(ng)+3,
mm(ng)+3,k)
313 ad_a(
lm(ng)+3,
mm(ng)+3,k)=0.0_r8
333 IF (ns_exchange)
THEN
334 IF (
domain(ng)%Northern_Edge(tile))
THEN
339 ad_a(i,
mm(ng)-2,k)=ad_a(i,
mm(ng)-2,k)+ &
344 ad_a(i,
mm(ng)-1,k)=ad_a(i,
mm(ng)-1,k)+ &
349 ad_a(i,
mm(ng) ,k)=ad_a(i,
mm(ng) ,k)+ &
356 IF (
domain(ng)%Southern_Edge(tile))
THEN
361 ad_a(i,1,k)=ad_a(i,1,k)+ &
363 ad_a(i,
mm(ng)+1,k)=0.0_r8
366 ad_a(i,2,k)=ad_a(i,2,k)+ &
368 ad_a(i,
mm(ng)+2,k)=0.0_r8
377 ad_a(i,3,k)=ad_a(i,3,k)+ &
379 ad_a(i,
mm(ng)+3,k)=0.0_r8
400 IF (ew_exchange)
THEN
401 IF (
domain(ng)%Eastern_Edge(tile))
THEN
406 ad_a(
lm(ng)-2,j,k)=ad_a(
lm(ng)-2,j,k)+ &
411 ad_a(
lm(ng)-1,j,k)=ad_a(
lm(ng)-1,j,k)+ &
416 ad_a(
lm(ng) ,j,k)=ad_a(
lm(ng) ,j,k)+ &
423 IF (
domain(ng)%Western_Edge(tile))
THEN
428 ad_a(1,j,k)=ad_a(1,j,k)+ &
430 ad_a(
lm(ng)+1,j,k)=0.0_r8
433 ad_a(2,j,k)=ad_a(2,j,k)+ &
435 ad_a(
lm(ng)+2,j,k)=0.0_r8
443 ad_a(3,j,k)=ad_a(3,j,k)+ &
445 ad_a(
lm(ng)+3,j,k)=0.0_r8
459 & LBi, UBi, LBj, UBj, LBk, UBk, &
468 integer,
intent(in) :: ng, tile
469 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
472 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
474 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
479 logical :: EW_exchange
480 logical :: NS_exchange
482 integer :: Imin, Imax, Jmin, Jmax
485# include "set_bounds.h"
493 ew_exchange=
ntilei(ng).eq.1
503 ns_exchange=
ntilej(ng).eq.1
516 IF (ew_exchange.and.ns_exchange)
THEN
517 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
521 ad_a(
lm(ng)-2,
mm(ng)-2,k)=ad_a(
lm(ng)-2,
mm(ng)-2,k)+ &
526 ad_a(
lm(ng)-2,
mm(ng)-1,k)=ad_a(
lm(ng)-2,
mm(ng)-1,k)+ &
531 ad_a(
lm(ng)-2,
mm(ng) ,k)=ad_a(
lm(ng)-2,
mm(ng) ,k)+ &
536 ad_a(
lm(ng)-1,
mm(ng)-2,k)=ad_a(
lm(ng)-1,
mm(ng)-2,k)+ &
541 ad_a(
lm(ng)-1,
mm(ng)-1,k)=ad_a(
lm(ng)-1,
mm(ng)-1,k)+ &
546 ad_a(
lm(ng)-1,
mm(ng) ,k)=ad_a(
lm(ng)-1,
mm(ng) ,k)+ &
551 ad_a(
lm(ng) ,
mm(ng)-2,k)=ad_a(
lm(ng) ,
mm(ng)-2,k)+ &
556 ad_a(
lm(ng) ,
mm(ng)-1,k)=ad_a(
lm(ng) ,
mm(ng)-1,k)+ &
561 ad_a(
lm(ng) ,
mm(ng) ,k)=ad_a(
lm(ng) ,
mm(ng) ,k)+ &
567 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
571 ad_a( 1,
mm(ng)-2,k)=ad_a( 1,
mm(ng)-2,k)+ &
572 & ad_a(
lm(ng)+1,-2,k)
573 ad_a(
lm(ng)+1,-2,k)=0.0_r8
576 ad_a( 1,
mm(ng)-1,k)=ad_a( 1,
mm(ng)-1,k)+ &
577 & ad_a(
lm(ng)+1,-1,k)
578 ad_a(
lm(ng)+1,-1,k)=0.0_r8
581 ad_a( 1,
mm(ng) ,k)=ad_a( 1,
mm(ng) ,k)+ &
582 & ad_a(
lm(ng)+1, 0,k)
583 ad_a(
lm(ng)+1, 0,k)=0.0_r8
586 ad_a( 2,
mm(ng)-2,k)=ad_a( 2,
mm(ng)-2,k)+ &
587 & ad_a(
lm(ng)+2,-2,k)
588 ad_a(
lm(ng)+2,-2,k)=0.0_r8
591 ad_a( 2,
mm(ng)-1,k)=ad_a( 2,
mm(ng)-1,k)+ &
592 & ad_a(
lm(ng)+2,-1,k)
593 ad_a(
lm(ng)+2,-1,k)=0.0_r8
596 ad_a( 2,
mm(ng) ,k)=ad_a( 2,
mm(ng) ,k)+ &
597 & ad_a(
lm(ng)+2, 0,k)
598 ad_a(
lm(ng)+2, 0,k)=0.0_r8
604 ad_a(3 ,
mm(ng)-2,k)=ad_a(3 ,
mm(ng)-2,k)+ &
605 & ad_a(
lm(ng)+3,-2,k)
606 ad_a(
lm(ng)+3,-2,k)=0.0_r8
609 ad_a(3 ,
mm(ng)-1,k)=ad_a(3 ,
mm(ng)-1,k)+ &
610 & ad_a(
lm(ng)+3,-1,k)
611 ad_a(
lm(ng)+3,-1,k)=0.0_r8
614 ad_a(3 ,
mm(ng) ,k)=ad_a(3 ,
mm(ng) ,k)+ &
615 & ad_a(
lm(ng)+3, 0,k)
616 ad_a(
lm(ng)+3, 0,k)=0.0_r8
621 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
625 ad_a(
lm(ng)-2, 1,k)=ad_a(
lm(ng)-2, 1,k)+ &
626 & ad_a(-2,
mm(ng)+1,k)
627 ad_a(-2,
mm(ng)+1,k)=0.0_r8
630 ad_a(
lm(ng)-1, 1,k)=ad_a(
lm(ng)-1, 1,k)+ &
631 & ad_a(-1,
mm(ng)+1,k)
632 ad_a(-1,
mm(ng)+1,k)=0.0_r8
635 ad_a(
lm(ng) , 1,k)=ad_a(
lm(ng) , 1,k)+ &
636 & ad_a( 0,
mm(ng)+1,k)
637 ad_a( 0,
mm(ng)+1,k)=0.0_r8
640 ad_a(
lm(ng)-2, 2,k)=ad_a(
lm(ng)-2, 2,k)+ &
641 & ad_a(-2,
mm(ng)+2,k)
642 ad_a(-2,
mm(ng)+2,k)=0.0_r8
645 ad_a(
lm(ng)-1, 2,k)=ad_a(
lm(ng)-1, 2,k)+ &
646 & ad_a(-1,
mm(ng)+2,k)
647 ad_a(-1,
mm(ng)+2,k)=0.0_r8
650 ad_a(
lm(ng) , 2,k)=ad_a(
lm(ng) , 2,k)+ &
651 & ad_a( 0,
mm(ng)+2,k)
652 ad_a( 0,
mm(ng)+2,k)=0.0_r8
658 ad_a(
lm(ng)-2, 3,k)=ad_a(
lm(ng)-2, 3,k)+ &
659 & ad_a(-2,
mm(ng)+3,k)
660 ad_a(-2,
mm(ng)+3,k)=0.0_r8
663 ad_a(
lm(ng)-1, 3,k)=ad_a(
lm(ng)-1, 3,k)+ &
664 & ad_a(-1,
mm(ng)+3,k)
665 ad_a(-1,
mm(ng)+3,k)=0.0_r8
668 ad_a(
lm(ng) , 3,k)=ad_a(
lm(ng) , 3,k)+ &
669 & ad_a( 0,
mm(ng)+3,k)
670 ad_a( 0,
mm(ng)+3,k)=0.0_r8
675 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
679 ad_a( 1, 1,k)=ad_a( 1, 1,k)+ &
680 & ad_a(
lm(ng)+1,
mm(ng)+1,k)
681 ad_a(
lm(ng)+1,
mm(ng)+1,k)=0.0_r8
684 ad_a( 1, 2,k)=ad_a( 1, 2,k)+ &
685 & ad_a(
lm(ng)+1,
mm(ng)+2,k)
686 ad_a(
lm(ng)+1,
mm(ng)+2,k)=0.0_r8
689 ad_a( 2, 1,k)=ad_a( 2, 1,k)+ &
690 & ad_a(
lm(ng)+2,
mm(ng)+1,k)
691 ad_a(
lm(ng)+2,
mm(ng)+1,k)=0.0_r8
694 ad_a( 2, 2,k)=ad_a( 2, 2,k)+ &
695 & ad_a(
lm(ng)+2,
mm(ng)+2,k)
696 ad_a(
lm(ng)+2,
mm(ng)+2,k)=0.0_r8
702 ad_a( 1, 3,k)=ad_a( 1, 3,k)+ &
703 & ad_a(
lm(ng)+1,
mm(ng)+3,k)
704 ad_a(
lm(ng)+1,
mm(ng)+3,k)=0.0_r8
708 ad_a( 2, 3,k)=ad_a( 2, 3,k)+ &
709 & ad_a(
lm(ng)+2,
mm(ng)+3,k)
710 ad_a(
lm(ng)+2,
mm(ng)+3,k)=0.0_r8
713 ad_a( 3, 1,k)=ad_a( 3, 1,k)+ &
714 & ad_a(
lm(ng)+3,
mm(ng)+1,k)
715 ad_a(
lm(ng)+3,
mm(ng)+1,k)=0.0_r8
718 ad_a( 3, 2,k)=ad_a( 3, 2,k)+ &
719 & ad_a(
lm(ng)+3,
mm(ng)+2,k)
720 ad_a(
lm(ng)+3,
mm(ng)+2,k)=0.0_r8
723 ad_a( 3, 3,k)=ad_a( 3, 3,k)+ &
724 & ad_a(
lm(ng)+3,
mm(ng)+3,k)
725 ad_a(
lm(ng)+3,
mm(ng)+3,k)=0.0_r8
745 IF (ns_exchange)
THEN
746 IF (
domain(ng)%Northern_Edge(tile))
THEN
751 ad_a(i,
mm(ng)-2,k)=ad_a(i,
mm(ng)-2,k)+ &
756 ad_a(i,
mm(ng)-1,k)=ad_a(i,
mm(ng)-1,k)+ &
761 ad_a(i,
mm(ng) ,k)=ad_a(i,
mm(ng) ,k)+ &
768 IF (
domain(ng)%Southern_Edge(tile))
THEN
773 ad_a(i, 1,k)=ad_a(i, 1,k)+ &
775 ad_a(i,
mm(ng)+1,k)=0.0_r8
778 ad_a(i, 2,k)=ad_a(i, 2,k)+ &
780 ad_a(i,
mm(ng)+2,k)=0.0_r8
788 ad_a(i,3,k)=ad_a(i,3,k)+ &
790 ad_a(i,
mm(ng)+3,k)=0.0_r8
811 IF (ew_exchange)
THEN
812 IF (
domain(ng)%Eastern_Edge(tile))
THEN
817 ad_a(
lm(ng)-2,j,k)=ad_a(
lm(ng)-2,j,k)+ &
822 ad_a(
lm(ng)-1,j,k)=ad_a(
lm(ng)-1,j,k)+ &
827 ad_a(
lm(ng) ,j,k)=ad_a(
lm(ng) ,j,k)+ &
834 IF (
domain(ng)%Western_Edge(tile))
THEN
839 ad_a(1,j,k)=ad_a(1,j,k)+ &
841 ad_a(
lm(ng)+1,j,k)=0.0_r8
844 ad_a(2,j,k)=ad_a(2,j,k)+ &
846 ad_a(
lm(ng)+2,j,k)=0.0_r8
854 ad_a(3,j,k)=ad_a(3,j,k)+ &
856 ad_a(
lm(ng)+3,j,k)=0.0_r8
870 & LBi, UBi, LBj, UBj, LBk, UBk, &
879 integer,
intent(in) :: ng, tile
880 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
883 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
885 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
890 logical :: EW_exchange
891 logical :: NS_exchange
893 integer :: Imin, Imax, Jmin, Jmax
896# include "set_bounds.h"
904 ew_exchange=
ntilei(ng).eq.1
914 ns_exchange=
ntilej(ng).eq.1
927 IF (ew_exchange.and.ns_exchange)
THEN
928 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
932 ad_a(
lm(ng)-2,
mm(ng)-2,k)=ad_a(
lm(ng)-2,
mm(ng)-2,k)+ &
937 ad_a(
lm(ng)-2,
mm(ng)-1,k)=ad_a(
lm(ng)-2,
mm(ng)-1,k)+ &
942 ad_a(
lm(ng)-2,
mm(ng) ,k)=ad_a(
lm(ng)-2,
mm(ng) ,k)+ &
947 ad_a(
lm(ng)-1,
mm(ng)-2,k)=ad_a(
lm(ng)-1,
mm(ng)-2,k)+ &
952 ad_a(
lm(ng)-1,
mm(ng)-1,k)=ad_a(
lm(ng)-1,
mm(ng)-1,k)+ &
957 ad_a(
lm(ng)-1,
mm(ng) ,k)=ad_a(
lm(ng)-1,
mm(ng) ,k)+ &
962 ad_a(
lm(ng) ,
mm(ng)-2,k)=ad_a(
lm(ng) ,
mm(ng)-2,k)+ &
967 ad_a(
lm(ng) ,
mm(ng)-1,k)=ad_a(
lm(ng) ,
mm(ng)-1,k)+ &
972 ad_a(
lm(ng) ,
mm(ng) ,k)=ad_a(
lm(ng) ,
mm(ng) ,k)+ &
978 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
982 ad_a( 1,
mm(ng)-2,k)=ad_a( 1,
mm(ng)-2,k)+ &
983 & ad_a(
lm(ng)+1,-2,k)
984 ad_a(
lm(ng)+1,-2,k)=0.0_r8
987 ad_a( 1,
mm(ng)-1,k)=ad_a( 1,
mm(ng)-1,k)+ &
988 & ad_a(
lm(ng)+1,-1,k)
989 ad_a(
lm(ng)+1,-1,k)=0.0_r8
992 ad_a( 1,
mm(ng) ,k)=ad_a( 1,
mm(ng) ,k)+ &
993 & ad_a(
lm(ng)+1, 0,k)
994 ad_a(
lm(ng)+1, 0,k)=0.0_r8
997 ad_a( 2,
mm(ng)-2,k)=ad_a( 2,
mm(ng)-2,k)+ &
998 & ad_a(
lm(ng)+2,-2,k)
999 ad_a(
lm(ng)+2,-2,k)=0.0_r8
1002 ad_a( 2,
mm(ng)-1,k)=ad_a( 2,
mm(ng)-1,k)+ &
1003 & ad_a(
lm(ng)+2,-1,k)
1004 ad_a(
lm(ng)+2,-1,k)=0.0_r8
1007 ad_a( 2,
mm(ng) ,k)=ad_a( 2,
mm(ng) ,k)+ &
1008 & ad_a(
lm(ng)+2, 0,k)
1009 ad_a(
lm(ng)+2, 0,k)=0.0_r8
1015 ad_a(3 ,
mm(ng)-2,k)=ad_a(3 ,
mm(ng)-2,k)+ &
1016 & ad_a(
lm(ng)+3,-2,k)
1017 ad_a(
lm(ng)+3,-2,k)=0.0_r8
1020 ad_a(3 ,
mm(ng)-1,k)=ad_a(3 ,
mm(ng)-1,k)+ &
1021 & ad_a(
lm(ng)+3,-1,k)
1022 ad_a(
lm(ng)+3,-1,k)=0.0_r8
1025 ad_a(3 ,
mm(ng) ,k)=ad_a(3 ,
mm(ng) ,k)+ &
1026 & ad_a(
lm(ng)+3, 0,k)
1027 ad_a(
lm(ng)+3, 0,k)=0.0_r8
1032 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
1036 ad_a(
lm(ng)-2, 1,k)=ad_a(
lm(ng)-2, 1,k)+ &
1037 & ad_a(-2,
mm(ng)+1,k)
1038 ad_a(-2,
mm(ng)+1,k)=0.0_r8
1041 ad_a(
lm(ng)-1, 1,k)=ad_a(
lm(ng)-1, 1,k)+ &
1042 & ad_a(-1,
mm(ng)+1,k)
1043 ad_a(-1,
mm(ng)+1,k)=0.0_r8
1046 ad_a(
lm(ng) , 1,k)=ad_a(
lm(ng) , 1,k)+ &
1047 & ad_a( 0,
mm(ng)+1,k)
1048 ad_a( 0,
mm(ng)+1,k)=0.0_r8
1051 ad_a(
lm(ng)-2, 2,k)=ad_a(
lm(ng)-2, 2,k)+ &
1052 & ad_a(-2,
mm(ng)+2,k)
1053 ad_a(-2,
mm(ng)+2,k)=0.0_r8
1056 ad_a(
lm(ng)-1, 2,k)=ad_a(
lm(ng)-1, 2,k)+ &
1057 & ad_a(-1,
mm(ng)+2,k)
1058 ad_a(-1,
mm(ng)+2,k)=0.0_r8
1061 ad_a(
lm(ng) , 2,k)=ad_a(
lm(ng) , 2,k)+ &
1062 & ad_a( 0,
mm(ng)+2,k)
1063 ad_a( 0,
mm(ng)+2,k)=0.0_r8
1069 ad_a(
lm(ng)-2, 3,k)=ad_a(
lm(ng)-2, 3,k)+ &
1070 & ad_a(-2,
mm(ng)+3,k)
1071 ad_a(-2,
mm(ng)+3,k)=0.0_r8
1074 ad_a(
lm(ng)-1, 3,k)=ad_a(
lm(ng)-1, 3,k)+ &
1075 & ad_a(-1,
mm(ng)+3,k)
1076 ad_a(-1,
mm(ng)+3,k)=0.0_r8
1079 ad_a(
lm(ng) , 3,k)=ad_a(
lm(ng) , 3,k)+ &
1080 & ad_a( 0,
mm(ng)+3,k)
1081 ad_a( 0,
mm(ng)+3,k)=0.0_r8
1086 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
1090 ad_a( 1, 1,k)=ad_a( 1, 1,k)+ &
1091 & ad_a(
lm(ng)+1,
mm(ng)+1,k)
1092 ad_a(
lm(ng)+1,
mm(ng)+1,k)=0.0_r8
1095 ad_a( 1, 2,k)=ad_a( 1, 2,k)+ &
1096 & ad_a(
lm(ng)+1,
mm(ng)+2,k)
1097 ad_a(
lm(ng)+1,
mm(ng)+2,k)=0.0_r8
1100 ad_a( 2, 1,k)=ad_a( 2, 1,k)+ &
1101 & ad_a(
lm(ng)+2,
mm(ng)+1,k)
1102 ad_a(
lm(ng)+2,
mm(ng)+1,k)=0.0_r8
1105 ad_a( 2, 2,k)=ad_a( 2, 2,k)+ &
1106 & ad_a(
lm(ng)+2,
mm(ng)+2,k)
1107 ad_a(
lm(ng)+2,
mm(ng)+2,k)=0.0_r8
1113 ad_a( 1, 3,k)=ad_a( 1, 3,k)+ &
1114 & ad_a(
lm(ng)+1,
mm(ng)+3,k)
1115 ad_a(
lm(ng)+1,
mm(ng)+3,k)=0.0_r8
1119 ad_a( 2, 3,k)=ad_a( 2, 3,k)+ &
1120 & ad_a(
lm(ng)+2,
mm(ng)+3,k)
1121 ad_a(
lm(ng)+2,
mm(ng)+3,k)=0.0_r8
1124 ad_a( 3, 1,k)=ad_a( 3, 1,k)+ &
1125 & ad_a(
lm(ng)+3,
mm(ng)+1,k)
1126 ad_a(
lm(ng)+3,
mm(ng)+1,k)=0.0_r8
1129 ad_a( 3, 2,k)=ad_a( 3, 2,k)+ &
1130 & ad_a(
lm(ng)+3,
mm(ng)+2,k)
1131 ad_a(
lm(ng)+3,
mm(ng)+2,k)=0.0_r8
1134 ad_a( 3, 3,k)=ad_a( 3, 3,k)+ &
1135 & ad_a(
lm(ng)+3,
mm(ng)+3,k)
1136 ad_a(
lm(ng)+3,
mm(ng)+3,k)=0.0_r8
1156 IF (ns_exchange)
THEN
1157 IF (
domain(ng)%Northern_Edge(tile))
THEN
1162 ad_a(i,
mm(ng)-2,k)=ad_a(i,
mm(ng)-2,k)+ &
1167 ad_a(i,
mm(ng)-1,k)=ad_a(i,
mm(ng)-1,k)+ &
1172 ad_a(i,
mm(ng) ,k)=ad_a(i,
mm(ng) ,k)+ &
1179 IF (
domain(ng)%Southern_Edge(tile))
THEN
1184 ad_a(i,1,k)=ad_a(i,1,k)+ &
1185 & ad_a(i,
mm(ng)+1,k)
1186 ad_a(i,
mm(ng)+1,k)=0.0_r8
1189 ad_a(i,2,k)=ad_a(i,2,k)+ &
1190 & ad_a(i,
mm(ng)+2,k)
1191 ad_a(i,
mm(ng)+2,k)=0.0_r8
1199 ad_a(i,3,k)=ad_a(i,3,k)+ &
1200 & ad_a(i,
mm(ng)+3,k)
1201 ad_a(i,
mm(ng)+3,k)=0.0_r8
1222 IF (ew_exchange)
THEN
1223 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1228 ad_a(
lm(ng)-2,j,k)=ad_a(
lm(ng)-2,j,k)+ &
1233 ad_a(
lm(ng)-1,j,k)=ad_a(
lm(ng)-1,j,k)+ &
1238 ad_a(
lm(ng) ,j,k)=ad_a(
lm(ng) ,j,k)+ &
1245 IF (
domain(ng)%Western_Edge(tile))
THEN
1250 ad_a(1,j,k)=ad_a(1,j,k)+ &
1251 & ad_a(
lm(ng)+1,j,k)
1252 ad_a(
lm(ng)+1,j,k)=0.0_r8
1255 ad_a(2,j,k)=ad_a(2,j,k)+ &
1256 & ad_a(
lm(ng)+2,j,k)
1257 ad_a(
lm(ng)+2,j,k)=0.0_r8
1265 ad_a(3,j,k)=ad_a(3,j,k)+ &
1266 & ad_a(
lm(ng)+3,j,k)
1267 ad_a(
lm(ng)+3,j,k)=0.0_r8
1281 & LBi, UBi, LBj, UBj, LBk, UBk, &
1290 integer,
intent(in) :: ng, tile
1291 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
1293# ifdef ASSUMED_SHAPE
1294 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
1296 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
1301 logical :: EW_exchange
1302 logical :: NS_exchange
1304 integer :: Imin, Imax, Jmin, Jmax
1307# include "set_bounds.h"
1315 ew_exchange=
ntilei(ng).eq.1
1325 ns_exchange=
ntilej(ng).eq.1
1338 IF (ew_exchange.and.ns_exchange)
THEN
1339 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
1343 ad_a(
lm(ng)-2,
mm(ng)-2,k)=ad_a(
lm(ng)-2,
mm(ng)-2,k)+ &
1345 ad_a(-2,-2,k)=0.0_r8
1348 ad_a(
lm(ng)-2,
mm(ng)-1,k)=ad_a(
lm(ng)-2,
mm(ng)-1,k)+ &
1350 ad_a(-2,-1,k)=0.0_r8
1353 ad_a(
lm(ng)-2,
mm(ng) ,k)=ad_a(
lm(ng)-2,
mm(ng) ,k)+ &
1355 ad_a(-2, 0,k)=0.0_r8
1358 ad_a(
lm(ng)-1,
mm(ng)-2,k)=ad_a(
lm(ng)-1,
mm(ng)-2,k)+ &
1360 ad_a(-1,-2,k)=0.0_r8
1363 ad_a(
lm(ng)-1,
mm(ng)-1,k)=ad_a(
lm(ng)-1,
mm(ng)-1,k)+ &
1365 ad_a(-1,-1,k)=0.0_r8
1368 ad_a(
lm(ng)-1,
mm(ng) ,k)=ad_a(
lm(ng)-1,
mm(ng) ,k)+ &
1370 ad_a(-1, 0,k)=0.0_r8
1373 ad_a(
lm(ng) ,
mm(ng)-2,k)=ad_a(
lm(ng) ,
mm(ng)-2,k)+ &
1375 ad_a( 0,-2,k)=0.0_r8
1378 ad_a(
lm(ng) ,
mm(ng)-1,k)=ad_a(
lm(ng) ,
mm(ng)-1,k)+ &
1380 ad_a( 0,-1,k)=0.0_r8
1383 ad_a(
lm(ng) ,
mm(ng) ,k)=ad_a(
lm(ng) ,
mm(ng) ,k)+ &
1385 ad_a( 0, 0,k)=0.0_r8
1389 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
1393 ad_a( 1,
mm(ng)-2,k)=ad_a( 1,
mm(ng)-2,k)+ &
1394 & ad_a(
lm(ng)+1,-2,k)
1395 ad_a(
lm(ng)+1,-2,k)=0.0_r8
1398 ad_a( 1,
mm(ng)-1,k)=ad_a( 1,
mm(ng)-1,k)+ &
1399 & ad_a(
lm(ng)+1,-1,k)
1400 ad_a(
lm(ng)+1,-1,k)=0.0_r8
1403 ad_a( 1,
mm(ng) ,k)=ad_a( 1,
mm(ng) ,k)+ &
1404 & ad_a(
lm(ng)+1, 0,k)
1405 ad_a(
lm(ng)+1, 0,k)=0.0_r8
1408 ad_a( 2,
mm(ng)-2,k)=ad_a( 2,
mm(ng)-2,k)+ &
1409 & ad_a(
lm(ng)+2,-2,k)
1410 ad_a(
lm(ng)+2,-2,k)=0.0_r8
1413 ad_a( 2,
mm(ng)-1,k)=ad_a( 2,
mm(ng)-1,k)+ &
1414 & ad_a(
lm(ng)+2,-1,k)
1415 ad_a(
lm(ng)+2,-1,k)=0.0_r8
1418 ad_a( 2,
mm(ng) ,k)=ad_a( 2,
mm(ng) ,k)+ &
1419 & ad_a(
lm(ng)+2, 0,k)
1420 ad_a(
lm(ng)+2, 0,k)=0.0_r8
1426 ad_a(3 ,
mm(ng)-2,k)=ad_a(3 ,
mm(ng)-2,k)+ &
1427 & ad_a(
lm(ng)+3,-2,k)
1428 ad_a(
lm(ng)+3,-2,k)=0.0_r8
1431 ad_a(3 ,
mm(ng)-1,k)=ad_a(3 ,
mm(ng)-1,k)+ &
1432 & ad_a(
lm(ng)+3,-1,k)
1433 ad_a(
lm(ng)+3,-1,k)=0.0_r8
1436 ad_a(3 ,
mm(ng) ,k)=ad_a(3 ,
mm(ng) ,k)+ &
1437 & ad_a(
lm(ng)+3, 0,k)
1438 ad_a(
lm(ng)+3, 0,k)=0.0_r8
1443 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
1447 ad_a(
lm(ng)-2, 1,k)=ad_a(
lm(ng)-2, 1,k)+ &
1448 & ad_a(-2,
mm(ng)+1,k)
1449 ad_a(-2,
mm(ng)+1,k)=0.0_r8
1452 ad_a(
lm(ng)-1, 1,k)=ad_a(
lm(ng)-1, 1,k)+ &
1453 & ad_a(-1,
mm(ng)+1,k)
1454 ad_a(-1,
mm(ng)+1,k)=0.0_r8
1457 ad_a(
lm(ng) , 1,k)=ad_a(
lm(ng) , 1,k)+ &
1458 & ad_a( 0,
mm(ng)+1,k)
1459 ad_a( 0,
mm(ng)+1,k)=0.0_r8
1462 ad_a(
lm(ng)-2, 2,k)=ad_a(
lm(ng)-2, 2,k)+ &
1463 & ad_a(-2,
mm(ng)+2,k)
1464 ad_a(-2,
mm(ng)+2,k)=0.0_r8
1467 ad_a(
lm(ng)-1, 2,k)=ad_a(
lm(ng)-1, 2,k)+ &
1468 & ad_a(-1,
mm(ng)+2,k)
1469 ad_a(-1,
mm(ng)+2,k)=0.0_r8
1472 ad_a(
lm(ng) , 2,k)=ad_a(
lm(ng) , 2,k)+ &
1473 & ad_a( 0,
mm(ng)+2,k)
1474 ad_a( 0,
mm(ng)+2,k)=0.0_r8
1480 ad_a(
lm(ng)-2, 3,k)=ad_a(
lm(ng)-2, 3,k)+ &
1481 & ad_a(-2,
mm(ng)+3,k)
1482 ad_a(-2,
mm(ng)+3,k)=0.0_r8
1485 ad_a(
lm(ng)-1, 3,k)=ad_a(
lm(ng)-1, 3,k)+ &
1486 & ad_a(-1,
mm(ng)+3,k)
1487 ad_a(-1,
mm(ng)+3,k)=0.0_r8
1490 ad_a(
lm(ng) , 3,k)=ad_a(
lm(ng) , 3,k)+ &
1491 & ad_a( 0,
mm(ng)+3,k)
1492 ad_a( 0,
mm(ng)+3,k)=0.0_r8
1497 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
1501 ad_a( 1, 1,k)=ad_a( 1, 1,k)+ &
1502 & ad_a(
lm(ng)+1,
mm(ng)+1,k)
1503 ad_a(
lm(ng)+1,
mm(ng)+1,k)=0.0_r8
1506 ad_a( 1, 2,k)=ad_a( 1, 2,k)+ &
1507 & ad_a(
lm(ng)+1,
mm(ng)+2,k)
1508 ad_a(
lm(ng)+1,
mm(ng)+2,k)=0.0_r8
1511 ad_a( 2, 1,k)=ad_a( 2, 1,k)+ &
1512 & ad_a(
lm(ng)+2,
mm(ng)+1,k)
1513 ad_a(
lm(ng)+2,
mm(ng)+1,k)=0.0_r8
1516 ad_a( 2, 2,k)=ad_a( 2, 2,k)+ &
1517 & ad_a(
lm(ng)+2,
mm(ng)+2,k)
1518 ad_a(
lm(ng)+2,
mm(ng)+2,k)=0.0_r8
1524 ad_a( 1, 3,k)=ad_a( 1, 3,k)+ &
1525 & ad_a(
lm(ng)+1,
mm(ng)+3,k)
1526 ad_a(
lm(ng)+1,
mm(ng)+3,k)=0.0_r8
1529 ad_a( 2, 3,k)=ad_a( 2, 3,k)+ &
1530 & ad_a(
lm(ng)+2,
mm(ng)+3,k)
1531 ad_a(
lm(ng)+2,
mm(ng)+3,k)=0.0_r8
1534 ad_a( 3, 1,k)=ad_a( 3, 1,k)+ &
1535 & ad_a(
lm(ng)+3,
mm(ng)+1,k)
1536 ad_a(
lm(ng)+3,
mm(ng)+1,k)=0.0_r8
1539 ad_a( 3, 2,k)=ad_a( 3, 2,k)+ &
1540 & ad_a(
lm(ng)+3,
mm(ng)+2,k)
1541 ad_a(
lm(ng)+3,
mm(ng)+2,k)=0.0_r8
1544 ad_a( 3, 3,k)=ad_a( 3, 3,k)+ &
1545 & ad_a(
lm(ng)+3,
mm(ng)+3,k)
1546 ad_a(
lm(ng)+3,
mm(ng)+3,k)=0.0_r8
1566 IF (ns_exchange)
THEN
1567 IF (
domain(ng)%Northern_Edge(tile))
THEN
1572 ad_a(i,
mm(ng)-2,k)=ad_a(i,
mm(ng)-2,k)+ &
1577 ad_a(i,
mm(ng)-1,k)=ad_a(i,
mm(ng)-1,k)+ &
1582 ad_a(i,
mm(ng) ,k)=ad_a(i,
mm(ng) ,k)+ &
1589 IF (
domain(ng)%Southern_Edge(tile))
THEN
1594 ad_a(i,1,k)=ad_a(i,1,k)+ &
1595 & ad_a(i,
mm(ng)+1,k)
1596 ad_a(i,
mm(ng)+1,k)=0.0_r8
1599 ad_a(i,2,k)=ad_a(i,2,k)+ &
1600 & ad_a(i,
mm(ng)+2,k)
1601 ad_a(i,
mm(ng)+2,k)=0.0_r8
1609 ad_a(i,3,k)=ad_a(i,3,k)+ &
1610 & ad_a(i,
mm(ng)+3,k)
1611 ad_a(i,
mm(ng)+3,k)=0.0_r8
1632 IF (ew_exchange)
THEN
1633 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1638 ad_a(
lm(ng)-2,j,k)=ad_a(
lm(ng)-2,j,k)+ &
1643 ad_a(
lm(ng)-1,j,k)=ad_a(
lm(ng)-1,j,k)+ &
1648 ad_a(
lm(ng) ,j,k)=ad_a(
lm(ng) ,j,k)+ &
1655 IF (
domain(ng)%Western_Edge(tile))
THEN
1660 ad_a(1,j,k)=ad_a(1,j,k)+ &
1661 & ad_a(
lm(ng)+1,j,k)
1662 ad_a(
lm(ng)+1,j,k)=0.0_r8
1665 ad_a(2,j,k)=ad_a(2,j,k)+ &
1666 & ad_a(
lm(ng)+2,j,k)
1667 ad_a(
lm(ng)+2,j,k)=0.0_r8
1675 ad_a(3,j,k)=ad_a(3,j,k)+ &
1676 & ad_a(
lm(ng)+3,j,k)
1677 ad_a(
lm(ng)+3,j,k)=0.0_r8
1691 & LBi, UBi, LBj, UBj, LBk, UBk, &
1700 integer,
intent(in) :: ng, tile
1701 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBk, UBk
1703# ifdef ASSUMED_SHAPE
1704 real(r8),
intent(inout) :: ad_A(LBi:,LBj:,LBk:)
1706 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj,LBk:UBk)
1711 logical :: EW_exchange
1712 logical :: NS_exchange
1714 integer :: Imin, Imax, Jmin, Jmax
1717# include "set_bounds.h"
1725 ew_exchange=
ntilei(ng).eq.1
1735 ns_exchange=
ntilej(ng).eq.1
1748 IF (ew_exchange.and.ns_exchange)
THEN
1749 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
1753 ad_a(
lm(ng)-2,
mm(ng)-2,k)=ad_a(
lm(ng)-2,
mm(ng)-2,k)+ &
1755 ad_a(-2,-2,k)=0.0_r8
1758 ad_a(
lm(ng)-2,
mm(ng)-1,k)=ad_a(
lm(ng)-2,
mm(ng)-1,k)+ &
1760 ad_a(-2,-1,k)=0.0_r8
1763 ad_a(
lm(ng)-2,
mm(ng) ,k)=ad_a(
lm(ng)-2,
mm(ng) ,k)+ &
1765 ad_a(-2, 0,k)=0.0_r8
1768 ad_a(
lm(ng)-1,
mm(ng)-2,k)=ad_a(
lm(ng)-1,
mm(ng)-2,k)+ &
1770 ad_a(-1,-2,k)=0.0_r8
1773 ad_a(
lm(ng)-1,
mm(ng)-1,k)=ad_a(
lm(ng)-1,
mm(ng)-1,k)+ &
1775 ad_a(-1,-1,k)=0.0_r8
1778 ad_a(
lm(ng)-1,
mm(ng) ,k)=ad_a(
lm(ng)-1,
mm(ng) ,k)+ &
1780 ad_a(-1, 0,k)=0.0_r8
1783 ad_a(
lm(ng) ,
mm(ng)-2,k)=ad_a(
lm(ng) ,
mm(ng)-2,k)+ &
1785 ad_a( 0,-2,k)=0.0_r8
1788 ad_a(
lm(ng) ,
mm(ng)-1,k)=ad_a(
lm(ng) ,
mm(ng)-1,k)+ &
1790 ad_a( 0,-1,k)=0.0_r8
1793 ad_a(
lm(ng) ,
mm(ng) ,k)=ad_a(
lm(ng) ,
mm(ng) ,k)+ &
1795 ad_a( 0, 0,k)=0.0_r8
1799 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
1803 ad_a( 1,
mm(ng)-2,k)=ad_a( 1,
mm(ng)-2,k)+ &
1804 & ad_a(
lm(ng)+1,-2,k)
1805 ad_a(
lm(ng)+1,-2,k)=0.0_r8
1808 ad_a( 1,
mm(ng)-1,k)=ad_a( 1,
mm(ng)-1,k)+ &
1809 & ad_a(
lm(ng)+1,-1,k)
1810 ad_a(
lm(ng)+1,-1,k)=0.0_r8
1813 ad_a( 1,
mm(ng) ,k)=ad_a( 1,
mm(ng) ,k)+ &
1814 & ad_a(
lm(ng)+1, 0,k)
1815 ad_a(
lm(ng)+1, 0,k)=0.0_r8
1818 ad_a( 2,
mm(ng)-2,k)=ad_a( 2,
mm(ng)-2,k)+ &
1819 & ad_a(
lm(ng)+2,-2,k)
1820 ad_a(
lm(ng)+2,-2,k)=0.0_r8
1823 ad_a( 2,
mm(ng)-1,k)=ad_a( 2,
mm(ng)-1,k)+ &
1824 & ad_a(
lm(ng)+2,-1,k)
1825 ad_a(
lm(ng)+2,-1,k)=0.0_r8
1828 ad_a( 2,
mm(ng) ,k)=ad_a( 2,
mm(ng) ,k)+ &
1829 & ad_a(
lm(ng)+2, 0,k)
1830 ad_a(
lm(ng)+2, 0,k)=0.0_r8
1836 ad_a(3 ,
mm(ng)-2,k)=ad_a(3 ,
mm(ng)-2,k)+ &
1837 & ad_a(
lm(ng)+3,-2,k)
1838 ad_a(
lm(ng)+3,-2,k)=0.0_r8
1841 ad_a(3 ,
mm(ng)-1,k)=ad_a(3 ,
mm(ng)-1,k)+ &
1842 & ad_a(
lm(ng)+3,-1,k)
1843 ad_a(
lm(ng)+3,-1,k)=0.0_r8
1846 ad_a(3 ,
mm(ng) ,k)=ad_a(3 ,
mm(ng) ,k)+ &
1847 & ad_a(
lm(ng)+3, 0,k)
1848 ad_a(
lm(ng)+3, 0,k)=0.0_r8
1853 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
1857 ad_a(
lm(ng)-2, 1,k)=ad_a(
lm(ng)-2, 1,k)+ &
1858 & ad_a(-2,
mm(ng)+1,k)
1859 ad_a(-2,
mm(ng)+1,k)=0.0_r8
1862 ad_a(
lm(ng)-1, 1,k)=ad_a(
lm(ng)-1, 1,k)+ &
1863 & ad_a(-1,
mm(ng)+1,k)
1864 ad_a(-1,
mm(ng)+1,k)=0.0_r8
1867 ad_a(
lm(ng) , 1,k)=ad_a(
lm(ng) , 1,k)+ &
1868 & ad_a( 0,
mm(ng)+1,k)
1869 ad_a( 0,
mm(ng)+1,k)=0.0_r8
1872 ad_a(
lm(ng)-2, 2,k)=ad_a(
lm(ng)-2, 2,k)+ &
1873 & ad_a(-2,
mm(ng)+2,k)
1874 ad_a(-2,
mm(ng)+2,k)=0.0_r8
1877 ad_a(
lm(ng)-1, 2,k)=ad_a(
lm(ng)-1, 2,k)+ &
1878 & ad_a(-1,
mm(ng)+2,k)
1879 ad_a(-1,
mm(ng)+2,k)=0.0_r8
1882 ad_a(
lm(ng) , 2,k)=ad_a(
lm(ng) , 2,k)+ &
1883 & ad_a( 0,
mm(ng)+2,k)
1884 ad_a( 0,
mm(ng)+2,k)=0.0_r8
1890 ad_a(
lm(ng)-2, 3,k)=ad_a(
lm(ng)-2, 3,k)+ &
1891 & ad_a(-2,
mm(ng)+3,k)
1892 ad_a(-2,
mm(ng)+3,k)=0.0_r8
1895 ad_a(
lm(ng)-1, 3,k)=ad_a(
lm(ng)-1, 3,k)+ &
1896 & ad_a(-1,
mm(ng)+3,k)
1897 ad_a(-1,
mm(ng)+3,k)=0.0_r8
1900 ad_a(
lm(ng) , 3,k)=ad_a(
lm(ng) , 3,k)+ &
1901 & ad_a( 0,
mm(ng)+3,k)
1902 ad_a( 0,
mm(ng)+3,k)=0.0_r8
1907 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
1911 ad_a( 1, 1,k)=ad_a( 1, 1,k)+ &
1912 & ad_a(
lm(ng)+1,
mm(ng)+1,k)
1913 ad_a(
lm(ng)+1,
mm(ng)+1,k)=0.0_r8
1916 ad_a( 1, 2,k)=ad_a( 1, 2,k)+ &
1917 & ad_a(
lm(ng)+1,
mm(ng)+2,k)
1918 ad_a(
lm(ng)+1,
mm(ng)+2,k)=0.0_r8
1921 ad_a( 2, 1,k)=ad_a( 2, 1,k)+ &
1922 & ad_a(
lm(ng)+2,
mm(ng)+1,k)
1923 ad_a(
lm(ng)+2,
mm(ng)+1,k)=0.0_r8
1926 ad_a( 2, 2,k)=ad_a( 2, 2,k)+ &
1927 & ad_a(
lm(ng)+2,
mm(ng)+2,k)
1928 ad_a(
lm(ng)+2,
mm(ng)+2,k)=0.0_r8
1934 ad_a( 1, 3,k)=ad_a( 1, 3,k)+ &
1935 & ad_a(
lm(ng)+1,
mm(ng)+3,k)
1936 ad_a(
lm(ng)+1,
mm(ng)+3,k)=0.0_r8
1939 ad_a( 2, 3,k)=ad_a( 2, 3,k)+ &
1940 & ad_a(
lm(ng)+2,
mm(ng)+3,k)
1941 ad_a(
lm(ng)+2,
mm(ng)+3,k)=0.0_r8
1944 ad_a( 3, 1,k)=ad_a( 3, 1,k)+ &
1945 & ad_a(
lm(ng)+3,
mm(ng)+1,k)
1946 ad_a(
lm(ng)+3,
mm(ng)+1,k)=0.0_r8
1949 ad_a( 3, 2,k)=ad_a( 3, 2,k)+ &
1950 & ad_a(
lm(ng)+3,
mm(ng)+2,k)
1951 ad_a(
lm(ng)+3,
mm(ng)+2,k)=0.0_r8
1954 ad_a( 3, 3,k)=ad_a( 3, 3,k)+ &
1955 & ad_a(
lm(ng)+3,
mm(ng)+3,k)
1956 ad_a(
lm(ng)+3,
mm(ng)+3,k)=0.0_r8
1976 IF (ns_exchange)
THEN
1977 IF (
domain(ng)%Northern_Edge(tile))
THEN
1982 ad_a(i,
mm(ng)-2,k)=ad_a(i,
mm(ng)-2,k)+ &
1987 ad_a(i,
mm(ng)-1,k)=ad_a(i,
mm(ng)-1,k)+ &
1992 ad_a(i,
mm(ng) ,k)=ad_a(i,
mm(ng) ,k)+ &
1999 IF (
domain(ng)%Southern_Edge(tile))
THEN
2004 ad_a(i,1,k)=ad_a(i,1 ,k)+ &
2005 & ad_a(i,
mm(ng)+1,k)
2006 ad_a(i,
mm(ng)+1,k)=0.0_r8
2009 ad_a(i,2,k)=ad_a(i,2,k)+ &
2010 & ad_a(i,
mm(ng)+2,k)
2011 ad_a(i,
mm(ng)+2,k)=0.0_r8
2019 ad_a(i,3,k)=ad_a(i,3,k)+ &
2020 & ad_a(i,
mm(ng)+3,k)
2021 ad_a(i,
mm(ng)+3,k)=0.0_r8
2042 IF (ew_exchange)
THEN
2043 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2048 ad_a(
lm(ng)-2,j,k)=ad_a(
lm(ng)-2,j,k)+ &
2053 ad_a(
lm(ng)-1,j,k)=ad_a(
lm(ng)-1,j,k)+ &
2058 ad_a(
lm(ng) ,j,k)=ad_a(
lm(ng) ,j,k)+ &
2065 IF (
domain(ng)%Western_Edge(tile))
THEN
2070 ad_a(1,j,k)=ad_a(1,j,k)+ &
2071 & ad_a(
lm(ng)+1,j,k)
2072 ad_a(
lm(ng)+1,j,k)=0.0_r8
2075 ad_a(2,j,k)=ad_a(2,j,k)+ &
2076 & ad_a(
lm(ng)+2,j,k)
2077 ad_a(
lm(ng)+2,j,k)=0.0_r8
2085 ad_a(3,j,k)=ad_a(3,j,k)+ &
2086 & ad_a(
lm(ng)+3,j,k)
2087 ad_a(
lm(ng)+3,j,k)=0.0_r8