61 & LBi, UBi, LBj, UBj, &
62 & IminS, ImaxS, JminS, JmaxS, &
63 & Nghost, NHsteps, DTsizeH, &
65 & pm, pn, pmon_u, pnom_v, &
67 & rmask, umask, vmask, &
82 integer,
intent(in) :: ng, tile, model
83 integer,
intent(in) :: LBi, UBi, LBj, UBj
84 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
85 integer,
intent(in) :: Nghost, NHsteps
87 real(r8),
intent(in) :: DTsizeH
90 real(r8),
intent(in) :: pm(LBi:,LBj:)
91 real(r8),
intent(in) :: pn(LBi:,LBj:)
92 real(r8),
intent(in) :: pmon_u(LBi:,LBj:)
93 real(r8),
intent(in) :: pnom_v(LBi:,LBj:)
95 real(r8),
intent(in) :: rmask(LBi:,LBj:)
96 real(r8),
intent(in) :: umask(LBi:,LBj:)
97 real(r8),
intent(in) :: vmask(LBi:,LBj:)
99 real(r8),
intent(in) :: Kh(LBi:,LBj:)
100 real(r8),
intent(inout) :: ad_A(LBi:,LBj:)
102 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
103 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
104 real(r8),
intent(in) :: pmon_u(LBi:UBi,LBj:UBj)
105 real(r8),
intent(in) :: pnom_v(LBi:UBi,LBj:UBj)
107 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
108 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
109 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
111 real(r8),
intent(in) :: Kh(LBi:UBi,LBj:UBj)
112 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj)
117 integer :: Nnew, Nold, Nsav, i, j, step
119 real(r8) :: adfac, cff
121 real(r8),
dimension(LBi:UBi,LBj:UBj,2) :: ad_Awrk
123 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_FE
124 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_FX
125 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Hfac
127# include "set_bounds.h"
133 ad_awrk(lbi:ubi,lbj:ubj,1:2)=0.0_r8
135 ad_fe(imins:imaxs,jmins:jmaxs)=0.0_r8
136 ad_fx(imins:imaxs,jmins:jmaxs)=0.0_r8
147 hfac(i,j)=dtsizeh*pm(i,j)*pn(i,j)
165 & lbi, ubi, lbj, ubj, &
175 & lbi, ubi, lbj, ubj, &
181 ad_awrk(i,j,nold)=ad_awrk(i,j,nold)+ad_a(i,j)
209 & lbi, ubi, lbj, ubj, &
219 & lbi, ubi, lbj, ubj, &
231 adfac=hfac(i,j)*ad_awrk(i,j,nnew)
232 ad_fe(i,j )=ad_fe(i,j )-adfac
233 ad_fe(i,j+1)=ad_fe(i,j+1)+adfac
234 ad_fx(i ,j)=ad_fx(i ,j)-adfac
235 ad_fx(i+1,j)=ad_fx(i+1,j)+adfac
236 ad_awrk(i,j,nold)=ad_awrk(i,j,nold)+ad_awrk(i,j,nnew)
237 ad_awrk(i,j,nnew)=0.0_r8
248 ad_fe(i,j)=ad_fe(i,j)*vmask(i,j)
253 adfac=pnom_v(i,j)*0.5_r8*(kh(i,j-1)+kh(i,j))*ad_fe(i,j)
254 ad_awrk(i,j-1,nold)=ad_awrk(i,j-1,nold)-adfac
255 ad_awrk(i,j ,nold)=ad_awrk(i,j ,nold)+adfac
264 ad_fx(i,j)=ad_fx(i,j)*umask(i,j)
269 adfac=pmon_u(i,j)*0.5_r8*(kh(i-1,j)+kh(i,j))*ad_fx(i,j)
270 ad_awrk(i-1,j,nold)=ad_awrk(i-1,j,nold)-adfac
271 ad_awrk(i ,j,nold)=ad_awrk(i ,j,nold)+adfac
284 ad_a(i,j)=ad_a(i,j)+ad_awrk(i,j,nold)
285 ad_awrk(i,j,nold)=0.0_r8
296 & lbi, ubi, lbj, ubj, &
306 & lbi, ubi, lbj, ubj, &
314 & LBi, UBi, LBj, UBj, &
315 & IminS, ImaxS, JminS, JmaxS, &
316 & Nghost, NHsteps, DTsizeH, &
318 & pm, pn, pmon_r, pnom_p, &
335 integer,
intent(in) :: ng, tile, model
336 integer,
intent(in) :: LBi, UBi, LBj, UBj
337 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
338 integer,
intent(in) :: Nghost, NHsteps
340 real(r8),
intent(in) :: DTsizeH
343 real(r8),
intent(in) :: pm(LBi:,LBj:)
344 real(r8),
intent(in) :: pn(LBi:,LBj:)
345 real(r8),
intent(in) :: pmon_r(LBi:,LBj:)
346 real(r8),
intent(in) :: pnom_p(LBi:,LBj:)
348 real(r8),
intent(in) :: umask(LBi:,LBj:)
349 real(r8),
intent(in) :: pmask(LBi:,LBj:)
351 real(r8),
intent(in) :: Kh(LBi:,LBj:)
352 real(r8),
intent(inout) :: ad_A(LBi:,LBj:)
354 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
355 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
356 real(r8),
intent(in) :: pmon_r(LBi:UBi,LBj:UBj)
357 real(r8),
intent(in) :: pnom_p(LBi:UBi,LBj:UBj)
359 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
360 real(r8),
intent(in) :: pmask(LBi:UBi,LBj:UBj)
362 real(r8),
intent(in) :: Kh(LBi:UBi,LBj:UBj)
363 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj)
368 integer :: Nnew, Nold, Nsav, i, j, step
370 real(r8) :: adfac, cff
372 real(r8),
dimension(LBi:UBi,LBj:UBj,2) :: ad_Awrk
374 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_FE
375 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_FX
376 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Hfac
378# include "set_bounds.h"
384 ad_awrk(lbi:ubi,lbj:ubj,1:2)=0.0_r8
386 ad_fe(imins:imaxs,jmins:jmaxs)=0.0_r8
387 ad_fx(imins:imaxs,jmins:jmaxs)=0.0_r8
399 hfac(i,j)=cff*(pm(i-1,j)+pm(i,j))*(pn(i-1,j)+pn(i,j))
417 & lbi, ubi, lbj, ubj, &
427 & lbi, ubi, lbj, ubj, &
433 ad_awrk(i,j,nold)=ad_awrk(i,j,nold)+ad_a(i,j)
461 & lbi, ubi, lbj, ubj, &
471 & lbi, ubi, lbj, ubj, &
483 adfac=hfac(i,j)*ad_awrk(i,j,nnew)
484 ad_fe(i,j )=ad_fe(i,j )-adfac
485 ad_fe(i,j+1)=ad_fe(i,j+1)+adfac
486 ad_fx(i-1,j)=ad_fx(i-1,j)-adfac
487 ad_fx(i ,j)=ad_fx(i ,j)+adfac
488 ad_awrk(i,j,nold)=ad_awrk(i,j,nold)+ad_awrk(i,j,nnew)
489 ad_awrk(i,j,nnew)=0.0_r8
500 ad_fe(i,j)=ad_fe(i,j)*pmask(i,j)
506 adfac=pnom_p(i,j)*0.25_r8*(kh(i-1,j )+kh(i,j )+ &
507 & kh(i-1,j-1)+kh(i,j-1))* &
509 ad_awrk(i,j-1,nold)=ad_awrk(i,j-1,nold)-adfac
510 ad_awrk(i,j ,nold)=ad_awrk(i,j ,nold)+adfac
519 adfac=pmon_r(i,j)*kh(i,j)*ad_fx(i,j)
520 ad_awrk(i ,j,nold)=ad_awrk(i ,j,nold)-adfac
521 ad_awrk(i+1,j,nold)=ad_awrk(i+1,j,nold)+adfac
534 ad_a(i,j)=ad_a(i,j)+ad_awrk(i,j,nold)
535 ad_awrk(i,j,nold)=0.0_r8
546 & lbi, ubi, lbj, ubj, &
556 & lbi, ubi, lbj, ubj, &
564 & LBi, UBi, LBj, UBj, &
565 & IminS, ImaxS, JminS, JmaxS, &
566 & Nghost, NHsteps, DTsizeH, &
568 & pm, pn, pmon_p, pnom_r, &
585 integer,
intent(in) :: ng, tile, model
586 integer,
intent(in) :: LBi, UBi, LBj, UBj
587 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
588 integer,
intent(in) :: Nghost, NHsteps
590 real(r8),
intent(in) :: DTsizeH
593 real(r8),
intent(in) :: pm(LBi:,LBj:)
594 real(r8),
intent(in) :: pn(LBi:,LBj:)
595 real(r8),
intent(in) :: pmon_p(LBi:,LBj:)
596 real(r8),
intent(in) :: pnom_r(LBi:,LBj:)
598 real(r8),
intent(in) :: vmask(LBi:,LBj:)
599 real(r8),
intent(in) :: pmask(LBi:,LBj:)
601 real(r8),
intent(in) :: Kh(LBi:,LBj:)
602 real(r8),
intent(inout) :: ad_A(LBi:,LBj:)
604 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
605 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
606 real(r8),
intent(in) :: pmon_p(LBi:UBi,LBj:UBj)
607 real(r8),
intent(in) :: pnom_r(LBi:UBi,LBj:UBj)
609 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
610 real(r8),
intent(in) :: pmask(LBi:UBi,LBj:UBj)
612 real(r8),
intent(in) :: Kh(LBi:UBi,LBj:UBj)
613 real(r8),
intent(inout) :: ad_A(LBi:UBi,LBj:UBj)
618 integer :: Nnew, Nold, Nsav, i, j, step
620 real(r8) :: adfac, cff
622 real(r8),
dimension(LBi:UBi,LBj:UBj,2) :: ad_Awrk
624 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_FE
625 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_FX
626 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Hfac
628# include "set_bounds.h"
634 ad_awrk(lbi:ubi,lbj:ubj,1:2)=0.0_r8
636 ad_fe(imins:imaxs,jmins:jmaxs)=0.0_r8
637 ad_fx(imins:imaxs,jmins:jmaxs)=0.0_r8
649 hfac(i,j)=cff*(pm(i,j-1)+pm(i,j))*(pn(i,j-1)+pn(i,j))
667 & lbi, ubi, lbj, ubj, &
677 & lbi, ubi, lbj, ubj, &
683 ad_awrk(i,j,nold)=ad_awrk(i,j,nold)+ad_a(i,j)
711 & lbi, ubi, lbj, ubj, &
721 & lbi, ubi, lbj, ubj, &
733 adfac=hfac(i,j)*ad_awrk(i,j,nnew)
734 ad_fe(i,j-1)=ad_fe(i,j-1)-adfac
735 ad_fe(i,j )=ad_fe(i,j )+adfac
736 ad_fx(i ,j)=ad_fx(i ,j)-adfac
737 ad_fx(i+1,j)=ad_fx(i+1,j)+adfac
738 ad_awrk(i,j,nold)=ad_awrk(i,j,nold)+ad_awrk(i,j,nnew)
739 ad_awrk(i,j,nnew)=0.0_r8
750 adfac=pnom_r(i,j)*kh(i,j)*ad_fe(i,j)
751 ad_awrk(i,j ,nold)=ad_awrk(i,j ,nold)-adfac
752 ad_awrk(i,j+1,nold)=ad_awrk(i,j+1,nold)+adfac
761 ad_fx(i,j)=ad_fx(i,j)*pmask(i,j)
767 adfac=pmon_p(i,j)*0.25_r8*(kh(i-1,j )+kh(i,j )+ &
768 & kh(i-1,j-1)+kh(i,j-1))* &
770 ad_awrk(i-1,j,nold)=ad_awrk(i-1,j,nold)-adfac
771 ad_awrk(i ,j,nold)=ad_awrk(i ,j,nold)+adfac
784 ad_a(i,j)=ad_a(i,j)+ad_awrk(i,j,nold)
785 ad_awrk(i,j,nold)=0.0_r8
796 & lbi, ubi, lbj, ubj, &
806 & lbi, ubi, lbj, ubj, &
subroutine ad_conv_u2d_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, nghost, nhsteps, dtsizeh, kh, pm, pn, pmon_r, pnom_p, umask, pmask, ad_a)
subroutine ad_conv_r2d_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, nghost, nhsteps, dtsizeh, kh, pm, pn, pmon_u, pnom_v, rmask, umask, vmask, ad_a)
subroutine ad_conv_v2d_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, nghost, nhsteps, dtsizeh, kh, pm, pn, pmon_p, pnom_r, vmask, pmask, ad_a)
subroutine ad_mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, ad_a, ad_b, ad_c, ad_d)