TALK=T;RUN(1,1)
PHOTON USE p;;;;;; vi 1 2 3 gr x m gr y m gr z m pause vi z gr z m dump gr pause gr off red set prop off con prps z 1 fi;.001 dump prps pause con off red vec z 1 sh dump vecs pause vec off red con u1 z 1 fi;.001 dump conu1 pause con off red con p1 z 1 fi;.001 dump conp1 ENDUSE TEXT(Parameterised inclined-plated flow :B103 Display Air flows steadily between eight slightly-inclined steel plates, which do not quite touch at their their ends. Body-fitted coordinates are used; and the turbulence model is LVEL. Some problem-defining parameters can be set interactively, via readvdu commands Enddis Groups 2 to 6. Geometry and grid Declarations REAL(XLEN,XCO,XI,X0,XDX,XDY,XDZ,FNX,LPERCENT,DUMMY) REAL(YLEN,YCO,YI,Y0,YDX,YDY,YDZ,FNY,YDISP) REAL(ZLEN,ZCO,ZI,Z0,ZDX,ZDY,ZDZ,FNZ) REAL(INVEL) INTEGER(IXP,IYP,IZP,IX1,IX2,IY1,IY2,IFINE) BOOLEAN(READGRID) grid-creation setting READGRID=T inlet velocity setting INVEL=1.0 geometry settings XLEN=1.0; YLEN=0.1; ZLEN=1.0 ; YDISP=YLEN LPERCENT=100 grid fineness setting IFINE=1 Interactive setting of parameters if(iqalib.ne.0) then + ans=y endif label ask mesgm(Steady flow of air between slightly-inclined steel plates ----------- messages to displau current options mesg(length in flow direction is :xlen: m mesg(thickness of air space plus plates is :ylen: m mesg(displacement of plate ends normal to flow is :ydisp: m mesg(length per cent is :lpercent: mesg(inlet velocity of air is :invel: if(ifine.eq.1) then mesg(grid fineness is coarse endif if(ifine.eq.2) then mesg(grid fineness is medium endif if(ifine.eq.3) then mesg(grid fineness is finest endif mesg(readgrid option is :readgrid: ---------------------------- end of messages ----------------- start of interactive input mesgm(data OK ?(Y/n) readvdu(ans,char,y) if(:ans:.eq.y) then goto continue endif ! all options will now be presented, in turn mesg(insert new flow length? readvdu(xlen,real,xlen) mesg(insert new thickness? readvdu(ylen,real,ylen) mesg(insert new displacement? readvdu(ydisp,real,ydisp) mesg(insert new length percentage? readvdu(lpercent,real,lpercent) mesg(insert new inlet velocity? readvdu(invel,real,invel) mesg(change grid fineness? 1 coarse, 2 medium, 3 finest readvdu(ifine,int,ifine) mesg(change grid setting method? (y/N) readvdu(ans,char,n) if(:ans:.eq.y) then readgrid=.not.:readgrid: endif goto ask ----------------- end of interactive input label continue ----------------- start of execution if(ifine.eq.1) then NX=40; NY=20 ; NZ=1 ! coarse grid endif if(ifine.eq.2) then NX=80;NY=40;NZ=1 ! medium grid endif if(ifine.eq.3) then NX=160;NY=80;NZ=1 ! finest grid endif FNX=NX;FNY=NY;FNZ=NZ BFC=T if(readgrid) then if(ifine.eq.1) then readco(*/../d_earth/d_opt/d_bfc/inplib/103_1) endif if(ifine.eq.2) then readco(*/../d_earth/d_opt/d_bfc/inplib/103_2) endif if(ifine.eq.3) then readco(*/../d_earth/d_opt/d_bfc/inplib/103_3) endif else mesg(creating bfc grid; Please wait x0 = 0.; y0 = 0.; z0 = 0. xdx = xlen/fnx; ydy = ylen/fny; zdz = zlen/fnz ydx = ydisp/fnx goto next do ixx =0,nx xi=ixx if(ixx.lt.(nx/2+1)) then ! upstream half if(ixx.lt.(nx/4+1)) then ! ist quarter y0 = y0 + ydx else ! 2nd quarter y0= y0 - ydx endif else if(ixx.lt.(3*nx/4+1)) then ! downstream half y0 = y0 + ydx ! third quarter else y0= y0 - ydx ! fourth quarter endif endif do izz =0,nz zi=izz do iyy =0,ny yi=iyy xco = x0 + xdx*xi ! corner coordinates yco = y0 + ydy*yi zco = z0 + zdz*zi ixp=ixx+1 iyp=iyy+1 izp=izz+1 xc(ixp,iyp,izp)=xco yc(ixp,iyp,izp)=yco zc(ixp,iyp,izp)=zco setpt(ixp,iyp,izp,xco,yco,zco) ! equivalent to the above 3 settings enddo enddo enddo endif label next Group 7 store(prps,enut,wdis) #solvel turmod(lvel) gcv=t Group 11 fiinit(u1)=2.0*invel fiinit(prps)=air20 dummy=1.0 - lpercent*0.01 ! fraction cut off dummy dummy=dummy*fnx*0.25 ! proportion of cells cut off dummy ixp=dummy ! number of cells cut off ix1=1+ixp; ix2 = nx/4 -ixp iy1=1; iy2=ny/4 patch(slab1,inival,ix1,ix2,iy1,iy2,1,nz,1,1) coval(slab1,prps,0.0,steel) iy1=3*ny/4+1; iy2=ny patch(slab2,inival,ix1,ix2,iy1,iy2,1,nz,1,1) coval(slab2,prps,0.0,steel) ix1=nx/4+1+ixp; ix2 = nx/2 -ixp iy1=1; iy2=ny/4 patch(slab3,inival,ix1,ix2,iy1,iy2,1,nz,1,1) coval(slab3,prps,0.0,steel) iy1=3*ny/4+1; iy2=ny patch(slab4,inival,ix1,ix2,iy1,iy2,1,nz,1,1) coval(slab4,prps,0.0,steel) ix1=nx/2+1+ixp; ix2 = 3*nx/4-ixp iy1=1; iy2=ny/4 patch(slab5,inival,ix1,ix2,iy1,iy2,1,nz,1,1) coval(slab5,prps,0.0,steel) iy1=3*ny/4+1; iy2=ny patch(slab6,inival,ix1,ix2,iy1,iy2,1,nz,1,1) coval(slab6,prps,0.0,steel) ix1=3*nx/4+1+ixp; ix2 = nx -ixp iy1=1; iy2=ny/4 patch(slab7,inival,ix1,ix2,iy1,iy2,1,nz,1,1) coval(slab7,prps,0.0,steel) iy1=3*ny/4+1; iy2=ny patch(slab8,inival,ix1,ix2,iy1,iy2,1,nz,1,1) coval(slab8,prps,0.0,steel) Group 13 patch(westin,west,1,1,1,ny,1,nz,1,1) coval(westin,p1,fixflu,invel*1.189) coval(westin,u1,onlyms,invel) patch(eastout,east,nx,nx,1,ny,1,nz,1,1) coval(eastout,p1,fixp,0.0) if(lpercent.ge.100) then patch(westin,west,1,1,1,ny/2,1,nz,1,1) patch(eastout,east,nx,nx,1,ny/2,1,nz,1,1) endif #conprom varmin(u1)=-1.e11;varmax(u1)=0.1*invel varmin(v1)=-1.e11;varmax(v1)=0.1*invel #maxmin #endpause tstswp=-1 lsweep=200 nxprin=1;nyprin=1;ixprl=10;iyprl=10 ----------------- end of execution stop