GROUP 1. Run title and other preliminaries TEXT(Bent-pipe grid, created by gset) DISPLAY This Q1 uses parameterised GSET commands to create a grid for a bent pipe of circular cross-section. It consists of a straight section of length LENG1, a section of length LENG2 bent into a circular arc, and a further straight section of length LENG3. The diameter of the pipe is DIAM. The angle between the two straight sections is ANGLE. ENDDIS TITLE originated by dbs 11.01.94 real(DIAM,leng1,leng2,leng3,angle,ycen,zcen,power) DIAM=0.6;leng1=1.0;angle=-3.14159/2;power=1.0 leng2=leng1;leng3=leng1 integer(lastk,firstk,nz1,nz2,nz3) nz1=10;nz2=10;nz3=10 nx=10;ny=10 mesg(nx=:nx:, ny=:ny:, nz1=:nz1:, nz2=:nz2:, nz3=:nz3:; DIAM=:diam: mesg(leng1=:leng1:, leng2=:leng2:, leng3=:leng3:; angle=:angle: mesg(Do you want to change input data? (y/n) readvdu(ans,char,n) if(:ans:.eq.y) then mesg(change cell numbers? (y/n) readvdu(ans,char,y) if(:ans:.eq.y) then + mesg(nx ? + readvdu(nx,int,nx) + mesg(ny ? + readvdu(ny,int,ny) + mesg(nz1 ? + readvdu(nz1,int,nz1) + mesg(nz2 ? + readvdu(nz2,int,nz2) + mesg(nz3 ? + readvdu(nz3,int,nz3) endif mesg(insert angle if not :angle: readvdu(angle,real,angle) if(:angle:.eq.0) then + angle=0.0001 endif mesg(change sizes? (y/n) readvdu(ans,char,n) if(:ans:.eq.y) then + mesg(leng1 ? + readvdu(leng1,real,leng1) + mesg(leng2 ? + readvdu(leng2,real,leng2) + mesg(leng3 ? + readvdu(leng3,real,leng3) + mesg(diam ? + readvdu(diam,real,diam) endif endif ycen=-leng2/angle;zcen=leng1 nz=nz1+nz2+nz3 GROUP 3. X-direction grid specification cartes=f;xulast=6.2832 grdpwr(x,nx,xulast,1.0) GROUP 4. Y-direction grid specification yvlast=DIAM*0.5 grdpwr(y,ny,yvlast,1.0) GROUP 5. Z-direction grid specification zwlast=leng1*nz/nz1 grdpwr(z,nz,zwlast,1.0) GROUP 6. Body-fitted coordinates or grid distortion bfc=t first 10 cells remain unbent bend the next 10 cells bend the next 10 cells firstk=nz1+1 lastk=firstk+nz2 gset(c,k:lastk:,f,k:firstk:,1,nx,1,ny,rx,angle,ycen,zcen,$ inc,:power:) next 10 cells are straight firstk=lastk lastk=nz+1 real(sl3,cl3) sl3=-sin(angle)*leng3 cl3=cos(angle)*leng3 gset(c,k:lastk:,f,k:firstk:,1,nx,1,ny,+,0,sl3,cl3,inc,:power:) gset(c,k:lastk:,f,k:firstk:,1,nx,1,ny,+,0,sl3,cl3,inc,:power:) view(i,1) view(j,ny+1) GVIEW(P,1,1,1);GDRAW