SUBROUTINE FIELD(ZK,VK,VR,KTX,KTY,IKTX,IKTY,N,N2,LWRK, 4,1
     .     FF1,FF2,FF3,WORK,TRIGS,IFAX,ZI,PXLIM,L,flag)
C     
C     CALCULATES VARIOUS FIELDS, E.G. STREAM FUNCTION, FOR LOOKING AT.
C     
      IMPLICIT NONE
      INTEGER  N,N2,LWRK,IFAX(10),KX,KY,PXLIM
      INTEGER  KTX,KTY,IKTX,IKTY,IKX,IKY,INKY
      INTEGER  L(PXLIM,IKTY),flag
C     
      REAL     TRIGS(N), VR(N,N), WK
      REAL     WORK(LWRK)
      REAL     FF1(N2,N2),FF2(N2,N2),FF3(N2,N2)
      COMPLEX  ZK(IKTX,IKTY),ZI,VK(IKTX,IKTY)
      EXTERNAL KR
C     
c     flag = 1 ---> calculate vorticity_z = dv/dx
c     
      if (flag.eq.1) then
         DO IKX = 1, IKTX
            KX = IKX-1 
            DO  IKY = 1, IKTY
               KY = IKY - KTY - 1
               WK = MAX( FLOAT(KX*KX+KY*KY) ,0.001 ) 
               VK(IKX,IKY)  = L(IKX+KTX,IKY)*CMPLX(0.,1.)*KX*ZK(IKX,IKY)
            enddo
         end do
      endif
C     
C     
c     flag = 2 ---> calculate vorticity_x = -dv/dz
c     
      if (flag.eq.2) then
         DO IKX = 1, IKTX
            KX = IKX-1 
            DO IKY = 1, IKTY
               KY = IKY - KTY - 1
               WK = MAX( FLOAT(KX*KX+KY*KY) ,0.001 ) 
               VK(IKX,IKY) = -L(IKX+KTX,IKY)*CMPLX(0.,1.)*KY*ZK(IKX,IKY)
            enddo
         enddo
      endif
C     
c     
c     flag = 3 ---> calculate u
c     
      if (flag.eq.3) then
         DO IKX = 1, IKTX
            KX = IKX-1 
            DO IKY = 1, IKTY
               KY = IKY - KTY - 1
               WK = MAX( FLOAT(KX*KX+KY*KY) ,0.001 ) 
               VK(IKX,IKY) = +L(IKX+KTX,IKY)*CMPLX(0.,1.)*KY*ZK(IKX,IKY)/WK
            enddo
         enddo
      endif
C     
c     
c     flag = 4 ---> calculate w
c     
      if (flag.eq.4) then
         DO IKX = 1, IKTX
            KX = IKX-1 
            DO IKY = 1, IKTY
               KY = IKY - KTY - 1
               WK = MAX( FLOAT(KX*KX+KY*KY) ,0.001 ) 
               VK(IKX,IKY) = -L(IKX+KTX,IKY)*CMPLX(0.,1.)*KX*ZK(IKX,IKY)/WK
            enddo
         enddo
      endif
C     
      DO 15 IKY=1,KTY
         KY   =  IKY - KTY - 1
         INKY = - KY + KTY + 1
         VK(1,IKY) = CONJG(VK(1,INKY))
 15   CONTINUE
C     
      CALL KR(VK,VR,KTX,KTY,IKTX,IKTY,N,N2,LWRK, 
     .     FF1,FF2,FF3,WORK,TRIGS,IFAX,ZI)
C     
      RETURN
      END