CC---PROGRAM TO GENERATE PERTURBED MESH 
C     PROGRAM PERT
      SUBROUTINE ABQMAIN
C
      INCLUDE 'ABA_PARAM.INC'
      DIMENSION ARRAY(513),JRRAY(NPRECD,513)
      EQUIVALENCE(ARRAY(1),JRRAY(1,1))

      DIMENSION RB(5,41),LRUNIT(2,1)
C
C  READ RADIAL EIGENVECTOR VALUES FROM FILE OUTPUT ON UNIT 8
C  WRITE NODAL COORDINATES OF PERTURBED MESH TO UNIT 15
C
      CHARACTER*80 FNAME
      FNAME='bucklecylshell_stri3_n4'
      OPEN(UNIT=15,STATUS='NEW',FILE='CYLIN.NOD')
      NRU=1
      LRUNIT(1,1)=8
      LRUNIT(2,1)=2
      LOUTF=2
      CALL INITPF(FNAME,NRU,LRUNIT,LOUTF)
      JUNIT=8
      CALL DBRNU(JUNIT)
C
      N=4
      DTHETA=180./DBLE(8*N)
      I=0
      J=1
      DO 100 K1=1,99999
      CALL DBFILE(0,ARRAY,JRCD)
      IF(JRCD.NE.0) GO TO 900
      KEY = JRRAY(1,2)
      IF(KEY.NE.101) GO TO 100
      DELR=SQRT(ARRAY(4)**2+ARRAY(6)**2)
      I=I+1
      IF(I.LE.5) GO TO 50
      J=J+1
      I=1
   50 CONTINUE
      RB(I,J)=DELR
  100 CONTINUE
  900 CONTINUE
C
C ADD DIAGNOSTICS TO CHECK IF THE FILE WAS READ PROPERLY.
C
      IF(I.EQ.0) THEN
        WRITE(6,*) ' '
        WRITE(6,*) '***********************************************'
        WRITE(6,*) ' bucklecylshell_stri3_n4.fil NOT READ PROPERLY'
        WRITE(6,*) '             CHECK ASSIGNMENTS '
        WRITE(6,*) '***********************************************'
        WRITE(6,*) ' '
        GO TO 990
      ENDIF
      THETA=0.
      NDST=10
      SIGN=1.
      CALL NGEN(RB,SIGN,THETA,DTHETA,NDST,1,5)
      CALL NGEN(RB,-SIGN,THETA,DTHETA,NDST,4,1)
 990  CONTINUE
      STOP
      END
C
      SUBROUTINE NGEN(RB,SIGN,THETA,DTHETA,NDST,ISTRT,IEND)
      IMPLICIT REAL*8 (A-H,O-Z)
      DIMENSION RB(5,41)
C
C  P = PERTURBATION FACTOR (FRACTION OF CYLINDER THICKNESS)
C  RR = CYLINDER RADIUS
C  H = CYLINDER THICKNESS
C
      P=0.01
      RR=100.
      H=.25
      ZDELT=10.
      NODE=NDST
      Z=0.
      INC=AINT(SIGN)
      DO 60 IROW=ISTRT,IEND,INC
      DO 50 JCOL=1,41
      R=RR+RB(IROW,JCOL)*P*H*SIGN
      WRITE(15,10) NODE,R,THETA,Z
   10 FORMAT(I5,3(',',F11.5))
      NODE=NODE+10
      Z=Z+ZDELT
   50 CONTINUE
      NDST=NDST+1
      NODE=NDST
      Z=0.
      THETA=THETA+DTHETA
   60 CONTINUE
      RETURN
      END

