!-------------------------------------- LICENCE BEGIN ------------------------------------ !Environment Canada - Atmospheric Science and Technology License/Disclaimer, ! version 3; Last Modified: May 7, 2008. !This is free but copyrighted software; you can use/redistribute/modify it under the terms !of the Environment Canada - Atmospheric Science and Technology License/Disclaimer !version 3 or (at your option) any later version that should be found at: !http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html ! !This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; !without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. !See the above mentioned License/Disclaimer for more details. !You should have received a copy of the License/Disclaimer along with this software; !if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec), !CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca !-------------------------------------- LICENCE END -------------------------------------- ***s/r glb_bound_ad - ADJ of glb_bound_tl * #include "model_macros_f.h"*
subroutine glb_bound_ad (),14 * #include "impnone.cdk"
* *author * M.Tanguay * *revision * v3_03 - Tanguay M. - initial MPI version * *object * see id section * *arguments * none * *implicits #include "glb_ld.cdk"
#include "vt0.cdk"
#include "nest.cdk"
#include "tr3d.cdk"
#include "schm.cdk"
#include "lun.cdk"
#include "hblen.cdk"
* integer vmmlod,vmmget,vmmuld external vmmlod,vmmget,vmmuld * integer err,key(60),i,j,k,nvar integer key0 (Tr3d_ntr),key0_, key1 (Tr3d_ntr),key1_,n real tr,tr0 pointer (patr, tr (LDIST_SHAPE,*)),(patr0, tr0 (LDIST_SHAPE,*)) * real*8, parameter :: ZERO_8 = 0.0 * * ______________________________________________________ * if (north+south+west+east.lt.1) return * key1_ = VMM_KEY (nest_tr) key0_ = VMM_KEY (trt0) do n=1,Tr3d_ntr key1 (n) = key1_ + n key0 (n) = key0_ + n end do if (Tr3d_ntr.gt.0) then err = vmmlod(key1, Tr3d_ntr) err = vmmlod(key0, Tr3d_ntr) do n=1,Tr3d_ntr err = vmmget(key1 (n),patr, tr) err = vmmget(key0 (n),patr0, tr0) if ((Hblen_trx.gt.0).or.(Hblen_try.gt.0)) then * call nesajr_ad
(tr0 ,tr ,LDIST_DIM,G_nk ,0,0, $ Hblen_trx,Hblen_try) * endif if (l_west) then do k=1,G_nk do j=1,l_nj do i=1,pil_w * tr (i,j,k) = tr0 (i,j,k) + tr (i,j,k) tr0 (i,j,k) = ZERO_8 * enddo enddo enddo endif if (l_south) then do k=1,G_nk do j=1,pil_s do i=1,l_ni * tr (i,j,k) = tr0 (i,j,k) + tr (i,j,k) tr0 (i,j,k) = ZERO_8 * enddo enddo enddo endif if (l_east) then do k=1,G_nk do j=1,l_nj do i=l_ni-pil_e+1,l_ni * tr (i,j,k) = tr0 (i,j,k) + tr (i,j,k) tr0 (i,j,k) = ZERO_8 * enddo enddo enddo endif if (l_north) then do k=1,G_nk do j=l_nj-pil_n+1,l_nj do i=1,l_ni * tr (i,j,k) = tr0 (i,j,k) + tr (i,j,k) tr0 (i,j,k) = ZERO_8 * enddo enddo enddo endif enddo err = vmmuld(key1, Tr3d_ntr) err = vmmuld(key0, Tr3d_ntr) endif * key(1 )=VMM_KEY(nest_u) key(2 )=VMM_KEY(nest_v) key(3 )=VMM_KEY(nest_t) key(4 )=VMM_KEY(nest_psd) key(5 )=VMM_KEY(nest_pip) key(6 )=VMM_KEY(nest_fip) key(7 )=VMM_KEY(nest_td) key(8 )=VMM_KEY(nest_fi) key(9 )=VMM_KEY(nest_q) key(10)=VMM_KEY(nest_s) key(11)=VMM_KEY(nest_tp) key(12)=VMM_KEY(ut0) key(13)=VMM_KEY(vt0) key(14)=VMM_KEY(tt0) key(15)=VMM_KEY(psdt0) key(16)=VMM_KEY(pipt0) key(17)=VMM_KEY(fipt0) key(18)=VMM_KEY(tdt0) key(19)=VMM_KEY(fit0) key(20)=VMM_KEY(qt0) key(21)=VMM_KEY(st0) key(22)=VMM_KEY(tpt0) nvar = 22 * if (.not.Schm_hydro_L) then key(23)=VMM_KEY(nest_w) key(24)=VMM_KEY(nest_mu) key(25)=VMM_KEY(wt0) key(26)=VMM_KEY(mut0) nvar = 26 endif * err = vmmlod(key,nvar) * err = VMM_GET_VAR(nest_u) err = VMM_GET_VAR(nest_v) err = VMM_GET_VAR(nest_t) err = VMM_GET_VAR(nest_psd) err = VMM_GET_VAR(nest_pip) err = VMM_GET_VAR(nest_fip) err = VMM_GET_VAR(nest_td) err = VMM_GET_VAR(nest_fi) err = VMM_GET_VAR(nest_q) err = VMM_GET_VAR(nest_s) err = VMM_GET_VAR(nest_tp) err = VMM_GET_VAR(ut0) err = VMM_GET_VAR(vt0) err = VMM_GET_VAR(tt0) err = VMM_GET_VAR(psdt0) err = VMM_GET_VAR(pipt0) err = VMM_GET_VAR(fipt0) err = VMM_GET_VAR(tdt0) err = VMM_GET_VAR(fit0) err = VMM_GET_VAR(qt0) err = VMM_GET_VAR(st0) err = VMM_GET_VAR(tpt0) if (.not.Schm_hydro_L) then err = VMM_GET_VAR(nest_w) err = VMM_GET_VAR(nest_mu) err = VMM_GET_VAR(wt0) err = VMM_GET_VAR(mut0) endif * if ((Hblen_massx.gt.0).or.(Hblen_massy.gt.0)) then * call nesajr_ad
(st0 ,nest_s ,LDIST_DIM, 1 ,0,0, $ Hblen_massx,Hblen_massy) call nesajr_ad
(pipt0,nest_pip,LDIST_DIM,G_nk ,0,0, $ Hblen_massx,Hblen_massy) call nesajr_ad
(qt0 ,nest_q ,LDIST_DIM,G_nk ,0,0, $ Hblen_massx,Hblen_massy) call nesajr_ad
(fipt0,nest_fip,LDIST_DIM,G_nk ,0,0, $ Hblen_massx,Hblen_massy) call nesajr_ad
(fit0 ,nest_fi ,LDIST_DIM,G_nk ,0,0, $ Hblen_massx,Hblen_massy) * endif * if ((Hblen_tx.gt.0).or.(Hblen_ty.gt.0)) then * call nesajr_ad
(tpt0,nest_tp,LDIST_DIM,G_nk ,0,0, $ Hblen_tx,Hblen_ty) call nesajr_ad
(tt0 ,nest_t ,LDIST_DIM,G_nk ,0,0, $ Hblen_tx,Hblen_ty) * endif * if ((Hblen_momentx.gt.0).or.(Hblen_momenty.gt.0)) then * if (.not. Schm_hydro_L) then call nesajr_ad
(mut0 ,nest_mu ,LDIST_DIM,G_nk,0,0, $ Hblen_momentx,Hblen_momenty) call nesajr_ad
(wt0 ,nest_w ,LDIST_DIM,G_nk,0,0, $ Hblen_momentx,Hblen_momenty) endif * call nesajr_ad
(psdt0,nest_psd,LDIST_DIM,G_nk,0,0, $ Hblen_momentx,Hblen_momenty) call nesajr_ad
(tdt0 ,nest_td ,LDIST_DIM,G_nk,0,0, $ Hblen_momentx,Hblen_momenty) call nesajr_ad
(vt0 ,nest_v ,LDIST_DIM,G_nk,0,1, $ Hblen_momentx,Hblen_momenty) call nesajr_ad
(ut0 ,nest_u ,LDIST_DIM,G_nk,1,0, $ Hblen_momentx,Hblen_momenty) * endif * if (l_west) then * if (.not. Schm_hydro_L) then do k=1,G_nk do j=1,l_nj do i=1,pil_w * nest_mu(i,j,k) = mut0(i,j,k) + nest_mu(i,j,k) mut0 (i,j,k) = ZERO_8 nest_w (i,j,k) = wt0 (i,j,k) + nest_w (i,j,k) wt0 (i,j,k) = ZERO_8 * end do end do end do endif * do j=1,l_nj do i=1,pil_w * nest_s(i,j) = st0(i,j) + nest_s(i,j) st0 (i,j) = ZERO_8 * end do end do do k=1,G_nk * do j=1,l_njv do i=1,pil_w * nest_v(i,j,k) = vt0(i,j,k) + nest_v(i,j,k) vt0 (i,j,k) = ZERO_8 * end do end do * do j=1,l_nj do i=1,pil_w * nest_tp (i,j,k)= tpt0 (i,j,k) + nest_tp (i,j,k) tpt0 (i,j,k)= ZERO_8 * nest_q (i,j,k)= qt0 (i,j,k) + nest_q (i,j,k) qt0 (i,j,k)= ZERO_8 * nest_fi (i,j,k)= fit0 (i,j,k) + nest_fi (i,j,k) fit0 (i,j,k)= ZERO_8 * nest_td (i,j,k)= tdt0 (i,j,k) + nest_td (i,j,k) tdt0 (i,j,k)= ZERO_8 * nest_fip(i,j,k)= fipt0(i,j,k) + nest_fip(i,j,k) fipt0 (i,j,k)= ZERO_8 * nest_pip(i,j,k)= pipt0(i,j,k) + nest_pip(i,j,k) pipt0 (i,j,k)= ZERO_8 * nest_psd(i,j,k)= psdt0(i,j,k) + nest_psd(i,j,k) psdt0 (i,j,k)= ZERO_8 * nest_t (i,j,k)= tt0 (i,j,k) + nest_t (i,j,k) tt0 (i,j,k)= ZERO_8 * nest_u (i,j,k)= ut0 (i,j,k) + nest_u (i,j,k) ut0 (i,j,k)= ZERO_8 * end do end do * end do endif * if (l_south) then * if (.not. Schm_hydro_L) then do k=1,G_nk do j=1,pil_s do i=1,l_ni * nest_mu(i,j,k) = mut0(i,j,k) + nest_mu(i,j,k) mut0 (i,j,k) = ZERO_8 nest_w (i,j,k) = wt0 (i,j,k) + nest_w (i,j,k) wt0 (i,j,k) = ZERO_8 * end do end do end do endif * do j=1,pil_s do i=1,l_ni * nest_s(i,j) = st0 (i,j) + nest_s(i,j) st0 (i,j) = ZERO_8 * end do end do * do k=1,G_nk * do j=1,pil_s do i=1,l_niu * nest_u(i,j,k) = ut0(i,j,k) + nest_u(i,j,k) ut0 (i,j,k) = ZERO_8 * end do end do * do j=1,pil_s do i=1,l_ni * nest_tp (i,j,k)= tpt0 (i,j,k) + nest_tp (i,j,k) tpt0 (i,j,k)= ZERO_8 * nest_q (i,j,k)= qt0 (i,j,k) + nest_q (i,j,k) qt0 (i,j,k)= ZERO_8 * nest_fi (i,j,k)= fit0 (i,j,k) + nest_fi (i,j,k) fit0 (i,j,k)= ZERO_8 * nest_td (i,j,k)= tdt0 (i,j,k) + nest_td (i,j,k) tdt0 (i,j,k)= ZERO_8 * nest_fip(i,j,k)= fipt0(i,j,k) + nest_fip(i,j,k) fipt0 (i,j,k)= ZERO_8 * nest_pip(i,j,k)= pipt0(i,j,k) + nest_pip(i,j,k) pipt0 (i,j,k)= ZERO_8 * nest_psd(i,j,k)= psdt0(i,j,k) + nest_psd(i,j,k) psdt0 (i,j,k)= ZERO_8 * nest_t (i,j,k)= tt0 (i,j,k) + nest_t (i,j,k) tt0 (i,j,k)= ZERO_8 * nest_v (i,j,k)= vt0 (i,j,k) + nest_v (i,j,k) vt0 (i,j,k)= ZERO_8 * end do end do * end do endif * if (l_east) then * if (.not. Schm_hydro_L) then do k=1,G_nk do j=1,l_nj do i=l_ni-pil_e+1,l_ni * nest_mu(i,j,k) = mut0(i,j,k) + nest_mu(i,j,k) mut0 (i,j,k) = ZERO_8 nest_w (i,j,k) = wt0 (i,j,k) + nest_w (i,j,k) wt0 (i,j,k) = ZERO_8 * end do end do end do endif * do j=1,l_nj do i=l_ni-pil_e+1,l_ni * nest_s(i,j) = st0 (i,j) + nest_s(i,j) st0 (i,j) = ZERO_8 * end do end do * do k=1,G_nk * do j=1,l_njv do i=l_ni-pil_e+1,l_ni * nest_v(i,j,k)= vt0(i,j,k) + nest_v(i,j,k) vt0 (i,j,k)= ZERO_8 * end do end do * do j=1,l_nj do i=l_ni-pil_e,l_niu * nest_u(i,j,k)= ut0(i,j,k) + nest_u(i,j,k) ut0 (i,j,k)= ZERO_8 * end do end do * do j=1,l_nj do i=l_ni-pil_e+1,l_ni * nest_tp (i,j,k)= tpt0 (i,j,k) + nest_tp (i,j,k) tpt0 (i,j,k)= ZERO_8 * nest_q (i,j,k)= qt0 (i,j,k) + nest_q (i,j,k) qt0 (i,j,k)= ZERO_8 * nest_fi (i,j,k)= fit0 (i,j,k) + nest_fi (i,j,k) fit0 (i,j,k)= ZERO_8 * nest_td (i,j,k)= tdt0 (i,j,k) + nest_td (i,j,k) tdt0 (i,j,k)= ZERO_8 * nest_fip(i,j,k)= fipt0(i,j,k) + nest_fip(i,j,k) fipt0 (i,j,k)= ZERO_8 * nest_pip(i,j,k)= pipt0(i,j,k) + nest_pip(i,j,k) pipt0 (i,j,k)= ZERO_8 * nest_psd(i,j,k)= psdt0(i,j,k) + nest_psd(i,j,k) psdt0 (i,j,k)= ZERO_8 * nest_t (i,j,k)= tt0 (i,j,k) + nest_t (i,j,k) tt0 (i,j,k)= ZERO_8 * end do end do * end do endif * if (l_north) then * if (.not. Schm_hydro_L) then do k=1,G_nk do j=l_nj-pil_n+1,l_nj do i=1,l_ni * nest_mu(i,j,k) = mut0(i,j,k) + nest_mu(i,j,k) mut0 (i,j,k) = ZERO_8 nest_w (i,j,k) = wt0 (i,j,k) + nest_w (i,j,k) wt0 (i,j,k) = ZERO_8 * end do end do end do endif * do j=l_nj-pil_n+1,l_nj do i=1,l_ni * nest_s(i,j) = st0 (i,j) + nest_s(i,j) st0 (i,j) = ZERO_8 * end do end do * do k=1,G_nk * do j=l_nj-pil_n,l_njv do i=1,l_ni * nest_v(i,j,k)= vt0(i,j,k) + nest_v(i,j,k) vt0 (i,j,k)= ZERO_8 * end do end do * do j=l_nj-pil_n+1,l_nj do i=1,l_niu * nest_u(i,j,k)= ut0(i,j,k) + nest_u(i,j,k) ut0 (i,j,k)= ZERO_8 * end do end do * do j=l_nj-pil_n+1,l_nj do i=1,l_ni * nest_tp (i,j,k)= tpt0 (i,j,k) + nest_tp (i,j,k) tpt0 (i,j,k)= ZERO_8 * nest_q (i,j,k)= qt0 (i,j,k) + nest_q (i,j,k) qt0 (i,j,k)= ZERO_8 * nest_fi (i,j,k)= fit0 (i,j,k) + nest_fi (i,j,k) fit0 (i,j,k)= ZERO_8 * nest_td (i,j,k)= tdt0 (i,j,k) + nest_td (i,j,k) tdt0 (i,j,k)= ZERO_8 * nest_fip(i,j,k)= fipt0(i,j,k) + nest_fip(i,j,k) fipt0 (i,j,k)= ZERO_8 * nest_pip(i,j,k)= pipt0(i,j,k) + nest_pip(i,j,k) pipt0 (i,j,k)= ZERO_8 * nest_psd(i,j,k)= psdt0(i,j,k) + nest_psd(i,j,k) psdt0 (i,j,k)= ZERO_8 * nest_t (i,j,k)= tt0 (i,j,k) + nest_t (i,j,k) tt0 (i,j,k)= ZERO_8 * end do end do * end do endif * err = vmmuld(key,nvar) * *---------------------------------------------------------------------- return end