copyright (C) 2001 MSC-RPN COMM %%%MC2%%% ***s/r brook_3d *subroutine brook_3d 1,8 implicit none * ** #include "nesting.cdk"
#include "dynmem.cdk"
#include "tracers.cdk"
#include "nestpnt.cdk"
#include "yomdyn.cdk"
#include "yomdyn1.cdk"
#include "consdyn_8.cdk"
#include "levels.cdk"
#include "partopo.cdk"
#include "brook.cdk"
#include "bcsdim.cdk"
#include "bcsmem.cdk"
* integer i,j,k,n,gnix,gnjy,dim,kc, $ id,indn,indw,inde,ofn,ofw,ofe real up1(gni+2*hx,gnj+2*hy,gnk),s,d pointer (pas1 ,s(*)), (pad1 ,d(*)) * *--------------------------------------------------------------------- * gnix = gni+2*hx gnjy = gnj+2*hy * if (myproc.eq.0) then * print*, 'EXTERNAL FROUDE NUMBER = U0/sqrt(G*D0) = ', $ brook_flo/sqrt(grav_8*htop) * endif * * Initialize all fields to zero except wind along X-axis * do k=1,gnk if(k.eq.1) then do j=1-hy,ldnj+hy do i=1-hx,ldni+hx ppp(i,j,0) = 0. end do end do endif do j=1-hy,ldnj+hy do i=1-hx,ldni+hx uup(i,j,k) = brook_flo vvp(i,j,k) = 0. hup(i,j,k) = 0. wwp(i,j,k) = 0. bbp(i,j,k) = 0. ppp(i,j,k) = 0. end do end do end do * c---- A Buble is introduced as a tracer if (myproc.eq.0) then kc=0 do k=1,gnk-1 if (zm(k).lt.blb_zp) kc=k enddo print *,"kc=",kc," : ",zm(kc) do k=1,gnk do j=1,gnjy do i=1,gnix c up1(i,j,k)=100./(1.+ c $ (real(k-kc)/real(blb_zs))**4.+ c $ (real(i-gnix/4)/real(blb_xs))**4.) c up1(i,j,k)= min(5,max(5-abs(i-gnix/4),0)) up1(i,j,k)= 1. end do end do end do endif call glbdist2
(up1,trp ,minx,maxx,miny,maxy,gni+hx,gnj+hy,gnk) c---- * dim = ndynvar*dim3d+dim2d pas1 = pappp pad1 = papp0 do i=1,dim d(i) = s(i) end do * 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 call trnes
(uup,bcs_uu(bcs_is),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) call trnes
(vvp,bcs_vv(bcs_is),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) call trnes
(wwp,bcs_ww(bcs_is),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) call trnes
(bbp,bcs_bb(bcs_is),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) call trnes
(ppp,bcs_pp(bcs_is),bcs_pp(indn) ,bcs_pp(indw) , $ bcs_pp(inde) ,minx,maxx,miny,maxy, $ minxs,maxxs,minys,maxys,minxw,maxxw,minyw,maxyw,gnk+1) call trnes
(hup,bcs_hu(bcs_is),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) do n = 1, ntr id = (n-1)*bcs_sz+1 call trnes
(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) end do if (ctebcs) then do i=1,(ntr+6)*bcs_sz+bcs_sz/gnk bcs_ppa(i) = bcs_pp(i) end do endif * if (gnpilver.gt.0) then do k=1,gnk do j=1-hy,ldnj+hy do i=1-hx,ldni+hx ppntt(i,j,k) = ppp(i,j,k) uuntt(i,j,k) = uup(i,j,k) vvntt(i,j,k) = vvp(i,j,k) wwntt(i,j,k) = wwp(i,j,k) bbntt(i,j,k) = bbp(i,j,k) huntt(i,j,k) = hup(i,j,k) end do end do end do do n = 1, ntr do k=1,gnk do j=1-hy,ldnj+hy do i=1-hx,ldni+hx trntt(i,j,k,n) = trp(i,j,k,n) end do end do end do end do do j=1-hy,ldnj+hy do i=1-hx,ldni+hx ppntt(i,j,0) = ppp(i,j,0) end do end do * if (ctebcs) then do k=1,gnk do j=1-hy,ldnj+hy do i=1-hx,ldni+hx ppnta(i,j,k) = ppp(i,j,k) uunta(i,j,k) = uup(i,j,k) vvnta(i,j,k) = vvp(i,j,k) wwnta(i,j,k) = wwp(i,j,k) bbnta(i,j,k) = bbp(i,j,k) hunta(i,j,k) = hup(i,j,k) end do end do do n=1,ntr do j=1-hy,ldnj+hy do i=1-hx,ldni+hx trnta(i,j,k,n) = trp(i,j,k,n) end do end do end do end do do j=1-hy,ldnj+hy do i=1-hx,ldni+hx ppnta(i,j,0) = ppp(i,j,0) end do end do endif endif c print*, 'gnpilver: ',gnpilver c call mc2stop(-1) * if (myproc.eq.0) then write (6,602) endif * 602 format (/'INITIALIZATION OF BROOK PROBLEM COMPLETED') *--------------------------------------------------------------------- return end