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