copyright (C) 2001 MSC-RPN COMM %%%MC2%%% *subroutine glb_bound (wall,slab) 1,22 implicit none * logical wall,slab # #include "dynmem.cdk"
#include "bcsdim.cdk"
#include "bcsmem.cdk"
#include "nestpnt.cdk"
#include "partopo.cdk"
#include "levels.cdk"
* integer n,ofn,ofw,ofe,id,indn,indw,inde real wk1(dim3d) * *---------------------------------------------------------------------- * if (north+south+east+west.eq.0) goto 9988 * * Update exterior halo * ofn = (bcs_in-bcs_is)/gnk ofw = (bcs_iw-bcs_in)/gnk ofe = (bcs_ie-bcs_iw)/gnk indn = bcs_in + ofn indw = bcs_iw + ofn + ofw inde = bcs_ie + ofn + ofw + ofe * if (wall) then call mirror
else * call filbo
(ppp,bcs_pp,bcs_pp(indn),bcs_pp(indw),bcs_pp(inde), $ "q",minx,maxx,miny,maxy,minxs,maxxs,minys,maxys, $ minxw,maxxw,minyw,maxyw,gnk+1) call filbo
$ (uup,bcs_uu,bcs_uu(bcs_in),bcs_uu(bcs_iw),bcs_uu(bcs_ie),"u", $ minx,maxx,miny,maxy,minxs,maxxs,minys,maxys, $ minxw,maxxw,minyw,maxyw,gnk) call filbo
$ (vvp,bcs_vv,bcs_vv(bcs_in),bcs_vv(bcs_iw),bcs_vv(bcs_ie),"v", $ minx,maxx,miny,maxy,minxs,maxxs,minys,maxys, $ minxw,maxxw,minyw,maxyw,gnk) call filbo
$ (wwp,bcs_ww,bcs_ww(bcs_in),bcs_ww(bcs_iw),bcs_ww(bcs_ie),"q", $ minx,maxx,miny,maxy,minxs,maxxs,minys,maxys, $ minxw,maxxw,minyw,maxyw,gnk) call filbo
$ (bbp,bcs_bb,bcs_bb(bcs_in),bcs_bb(bcs_iw),bcs_bb(bcs_ie),"q", $ minx,maxx,miny,maxy,minxs,maxxs,minys,maxys, $ minxw,maxxw,minyw,maxyw,gnk) call filbo
$ (hup,bcs_hu,bcs_hu(bcs_in),bcs_hu(bcs_iw),bcs_hu(bcs_ie),"q", $ minx,maxx,miny,maxy,minxs,maxxs,minys,maxys, $ minxw,maxxw,minyw,maxyw,gnk) do n=1,ntr id = (n-1)*bcs_sz+1 call filbo
(trp(1-hx,1-hy,1,n),bcs_tr(id),bcs_tr(id+bcs_in-1), $ bcs_tr(id+bcs_iw-1),bcs_tr(id+bcs_ie-1),"q", $ minx,maxx,miny,maxy,minxs,maxxs,minys,maxys, $ minxw,maxxw,minyw,maxyw,gnk) enddo * endif * * **** Horizontal blending (gravity wave absorber) **** * * hblen_x: # of points for blending along x (west and east ) * hblen_y: # of points for blending along y (south and north) * if ((hblen_x.gt.0).or.(hblen_y.gt.0)) then * call nesajr
( ppp,bcs_pp,bcs_pp(indn),bcs_pp(indw),bcs_pp(inde), $ minx,maxx,miny,maxy,minxs,maxxs,minys,maxys,minxw, $ maxxw,minyw,maxyw,gnk+1,1,1 ) call nesajr
( uup,bcs_uu,bcs_uu(bcs_in),bcs_uu(bcs_iw), $ bcs_uu(bcs_ie),minx,maxx,miny,maxy,minxs,maxxs, $ minys,maxys,minxw,maxxw,minyw,maxyw,gnk,0,1 ) call nesajr
( vvp,bcs_vv,bcs_vv(bcs_in),bcs_vv(bcs_iw), $ bcs_vv(bcs_ie),minx,maxx,miny,maxy,minxs,maxxs, $ minys,maxys,minxw,maxxw,minyw,maxyw,gnk,1,0 ) call nesajr
( wwp,bcs_ww,bcs_ww(bcs_in),bcs_ww(bcs_iw), $ bcs_ww(bcs_ie),minx,maxx,miny,maxy,minxs,maxxs, $ minys,maxys,minxw,maxxw,minyw,maxyw,gnk,1,1 ) call nesajr
( bbp,bcs_bb,bcs_bb(bcs_in),bcs_bb(bcs_iw), $ bcs_bb(bcs_ie),minx,maxx,miny,maxy,minxs,maxxs, $ minys,maxys,minxw,maxxw,minyw,maxyw,gnk,1,1 ) call nesajr
( hup,bcs_hu,bcs_hu(bcs_in),bcs_hu(bcs_iw), $ bcs_hu(bcs_ie),minx,maxx,miny,maxy,minxs,maxxs, $ minys,maxys,minxw,maxxw,minyw,maxyw,gnk,1,1 ) do n=1,ntr id = (n-1)*bcs_sz+1 call nesajr
(trp(1-hx,1-hy,1,n),bcs_tr(id),bcs_tr(id+bcs_in-1), $ bcs_tr(id+bcs_iw-1),bcs_tr(id+bcs_ie-1),minx,maxx,miny,maxy, $ minxs,maxxs,minys,maxys,minxw,maxxw,minyw,maxyw,gnk,1,1) end do * endif * * **** Vetical blending (gravity wave absorber) **** * * * Le pilotage vertical des variables uu,vv,bb,pp,hu,ww tel que * * decrit par les relation (4.2.1)-(4.2.2). La variable grspng * * controle l'epaisseur de la zone de pilotage verticale, elle est * * exprimee en km. Cette variable est passee en "common block" dans * * nestz.cdk. * 9988 if (gnpilver.gt.0) then call davvert6
(uup,uuntt,minx,maxx,miny,maxy,gnk,zm, $ gnpilver,grpilver) call davvert6
(vvp,vvntt,minx,maxx,miny,maxy,gnk,zm, $ gnpilver,grpilver) call davvert6
(wwp,wwntt,minx,maxx,miny,maxy,gnk,zt, $ gnpilver,grpilver) call davvert6
(bbp,bbntt,minx,maxx,miny,maxy,gnk,ztr, $ gnpilver,grpilver) * * en general le pilotage de la pression n'est pas necessaire * c call davvert6 (ppp(minx,miny,1),ppntt(minx,miny,1), c $ minx,maxx,miny,maxy,gnk,zm, c $ gnpilver,grpilver) * call davvert6
(hup,huntt,minx,maxx,miny,maxy,gnk,ztr, $ gnpilver,grpilver) endif * if (gnpvw.gt.0) then do n=1,dim3d wk1(n) = 0. end do call davvert6
(wwp,wk1 ,minx,maxx,miny,maxy,gnk,zt, $ gnpvw,grpilver) endif * if (slab) call slabsym
*---------------------------------------------------------------------- return end