SUBROUTINE SPEC (Z,V,IKTX,IKTY,KTX,KTY,N,SPZ,FL,AJ,BJ, 12
     .                                                 GRFLAG,TIME)
C
C     CALCULATES SPECTRA.
C
      IMPLICIT NONE 
      INTEGER  IKX,IKY,IKTX,IKTY,KTX,KTY
      INTEGER  N(KTX),J,FL,GRFLAG
      COMPLEX  Z(IKTX,IKTY),V(IKTX,IKTY)
      REAL     KX,KY,WK,VZ,VQ,E,S,AJ,BJ,TIME,VV
      REAL     SPZ(KTX),AVZ,AVQ,AVT
C
      AVZ = 0.0
      AVT = 0.0
C
      DO 10 J=1,KTX 
        SPZ(J)   = 0.0
        N(J)     = 0
10    CONTINUE
C
      DO 20 IKX=1,IKTX
         KX = FLOAT(IKX-1)
         DO 20 IKY=1,IKTY
            KY = FLOAT(IKY-KTY-1)
            WK = SQRT(KX*KX+KY*KY)
            IF(WK.GT.FLOAT(KTX)-0.5)    GO TO 20
            IF(KX.EQ.0. .AND. KY.LE.0.) GO TO 20
            J = IFIX(WK+0.5)
            IF(J.LE.0 .OR. J.GT.KTX) PRINT *,'SCREW-UP.'
            VZ = REAL( Z(IKX,IKY)*CONJG(Z(IKX,IKY)) )
            VV = REAL( V(IKX,IKY)*CONJG(V(IKX,IKY)) )
c+            SPZ(J) = SPZ(J) + 2.*(VZ/WK**2)
            SPZ(J) = SPZ(J) + VZ/WK**2  
            N(J)   = N(J)   + 2 
20    CONTINUE
C
c+      PRINT *,
c+     .'KINETIC, POTENTIAL & TOTAL ENERGY SPECTRA AT T = ',
c+     .                       TIME   
      WRITE(10,5100) TIME
c
      DO 30 J=1,KTX-1
        E = 0.5*SPZ(J)
        AVZ = AVZ + E
        IF (FL.EQ.0) THEN
c          WRITE( 6,5000) FLOAT(J),E,N(J)
          WRITE(10,5000) FLOAT(J),E,N(J)
        ENDIF
30    CONTINUE
C
c      WRITE(6,5010) AVZ
      WRITE(16,5020) AVZ 
C
      RETURN
5000  FORMAT(1X,F4.0,4X,E15.8,10X,I4)
5100  FORMAT(f10.3)
c5010  FORMAT(1X,'energy   ',E14.8)
5010  FORMAT(E14.8)
5020  FORMAT(E14.8)
      END