SUBROUTINE FLDMOD(KAPPA,NU,GAMMA,V1,V2,K1,K2,G1,G2,IKTX,IKTY,KTX, 1
     .                  KTY,WN,PXLIM,L,ILAP)
C
C     INITIALISES STUFF LIKE WAVENUMBERS, INDICES, SPECTRA, PHASES, ETC.
C
      IMPLICIT NONE 
      INTEGER  IKX,IKY,IKTX,IKTY,KTX,KTY,PXLIM 
      INTEGER  ILAP,L(PXLIM,IKTY)

      REAL     KX,KY,WK,V1,V2,K1,K2,G1,G2
      REAL     KAPPA(IKTX,IKTY),NU(IKTX,IKTY),GAMMA(IKTX,IKTY)
      REAL     EK,VK
      REAL     WN(PXLIM,IKTY)
c
c
      DO 5 IKX=1,PXLIM
        KX = FLOAT(IKX - KTX - 1)
        DO 5 IKY=1,IKTY
          KY = FLOAT(IKY - KTY - 1)
          L(IKX,IKY)  = 1
          WN(IKX,IKY) = KX*KX + KY*KY
          WK = SQRT(WN(IKX,IKY))
          IF (KX.LT.0)               L(IKX,IKY) =  0
          IF (KX.EQ.0 .AND. KY.LE.0) L(IKX,IKY) =  0
          IF (WK.GT.FLOAT(KTX)-0.5)  L(IKX,IKY) =  0
5     CONTINUE
C
C
      DO 30 IKX=1,IKTX
         KX = FLOAT(IKX-1)
         DO 30 IKY=1,IKTY
            KY = FLOAT(IKY-KTY-1)
            WK = SQRT(KX*KX+KY*KY)
            IF(L(IKX+KTX,IKY).ne.1) GO TO 10
            NU(IKX,IKY)    = V1 + V2*WK**(2*ILAP)
            KAPPA(IKX,IKY) = K1 + K2*WK**(2*ILAP)
            GAMMA(IKX,IKY) = G1 + G2*WK**(2*ILAP)
c
            GO TO 30
10          continue
            NU(IKX,IKY)    = 1000.
            KAPPA(IKX,IKY) = 1000.
            GAMMA(IKX,IKY) = 1000.
30    CONTINUE

c      open (16,file='l64.io',status='unknown')
c      write(16,107) ((L(ikx,iky),ikx=1,ikty),iky=1,ikty)
c 107  format(43I3)
c      close(16)

      RETURN
      END