SUBROUTINE RK(ZR,ZK,KTX,KTY,IKTX,IKTY,N,N2,LWRK, 24,3
. FF1,FF2,FF3,WORK,TRIGS,IFAX,ZI)
C
C CALLS GRID POINT - SPECTRAL TRANSFORMS.
C
IMPLICIT NONE
INTEGER N,N2,J,K,LWRK,IFAX(10),KX,KY,IKYR,IKYI
INTEGER KTX,KTY,IKTX,IKTY,NC,I,KR,KI,IKX,IKY
C
REAL TRIGS(3*N/2), ZR(N,N), WORK(LWRK)
REAL FF1(N2,N2),FF2(N2,N2),FF3(N2,N2)
COMPLEX ZI,ZKR,ZKI,ZK(IKTX,IKTY)
EXTERNAL FFT991
C
NC = N2/2
C
DO 35 I=1,N2
DO 35 J=1,N2
FF1(I,J) = 0.0
FF2(I,J) = 0.0
35 FF3(I,J) = 0.0
C
DO 36 I=1,N
DO 36 J=1,N
36 FF1(I,J) = ZR(I,J)
C
CALL FFT991
(FF1,WORK,TRIGS,IFAX,1,N2,N,N,-1)
DO 40 J=1,N
DO 40 K=1,NC
KR = K + K - 1
FF2(J,K) = FF1(KR,J)
40 CONTINUE
C
DO 42 J=1,N
DO 42 K=1,NC
KI = K + K
FF3(J,K) = FF1(KI,J)
42 CONTINUE
C
CALL FFT991
(FF2,WORK,TRIGS,IFAX,1,N2,N,NC,-1)
CALL FFT991
(FF3,WORK,TRIGS,IFAX,1,N2,N,NC,-1)
C
DO 45 IKX=1,IKTX
KX = IKX-1
DO 45 IKY=1,KTY+1
KY = IKY - 1
IKYR = KY + KY + 1
IKYI = KY + KY + 2
ZKR = FF2(IKYR,IKX) + ZI*FF2(IKYI,IKX)
ZKI = FF3(IKYR,IKX) + ZI*FF3(IKYI,IKX)
ZK(IKX,KY+KTY+1) = ZKR + ZI*ZKI
45 CONTINUE
C
DO 55 IKX=1,IKTX
KX = IKX-1
DO 55 IKY=1,KTY
KY = IKY - 1 - KTY
IKYR = - KY - KY + 1
IKYI = - KY - KY + 2
ZKR = FF2(IKYR,IKX) + ZI*FF2(IKYI,IKX)
ZKI = FF3(IKYR,IKX) + ZI*FF3(IKYI,IKX)
ZK(IKX,KY+KTY+1) = CONJG(ZKR) + ZI*CONJG(ZKI)
55 CONTINUE
C
RETURN
END