SUBROUTINE H(Z,S,dl_v,itime) 8,2

      IMPLICIT NONE
      include 'champ.cdk' 
      include 'chobs.cdk'


      COMPLEX Z(IKTX,IKTY),S(IKTX,IKTY)
      REAL    dl_v(2*N*N)
      REAL    U(N,N),W(N,N)
      REAL    KX,KY,KW,JX,INKY
      INTEGER    IR
      INTEGER    itime


      DO IKX=1,IKTX
       KX = FLOAT(IKX-1)
       DO IKY=1,IKTY
         KY = FLOAT(IKY - KTY - 1)
         KW = MAX(KX*KX+KY*KY ,0.001 )
         UK(IKX,IKY)= L(IKX+KTX,IKY)*ZI*KY*Z(IKX,IKY)/KW
         WK(IKX,IKY)=-L(IKX+KTX,IKY)*ZI*KX*Z(IKX,IKY)/KW
       ENDDO
      ENDDO
      DO 15 IKY=1,KTY
        KY   =  IKY - KTY - 1
        INKY = - KY + KTY + 1
        UK(1,IKY) = CONJG(UK(1,INKY))
        WK(1,IKY) = CONJG(WK(1,INKY))
 15   CONTINUE

      CALL KR(UK,U,KTX,KTY,IKTX,IKTY,N,N2,LWRK,
     .                  FF1,FF2,FF3,WORK,TRIGS,IFAX,ZI)
      CALL KR(WK,W,KTX,KTY,IKTX,IKTY,N,N2,LWRK,
     .                  FF1,FF2,FF3,WORK,TRIGS,IFAX,ZI)

     
      IR = 0
      DO IW=1,N
       DO JW = 1,N
        dl_v(IR+1) = U(IW,JW)*PZ(IW,JW,itime)
        dl_v(IR+2) = W(IW,JW)*PZ(IW,JW,itime)
        IR = IR + 2
       END DO 
      END DO

      RETURN
      END