c c ---------------------------------------------------------------------- c subroutine fft3hr(x,nu,nv,nw) include 'dmheader.fh' c 3-d Hermitian to Real FFT c In: complex x(h,k,l) (l=0...nl/2) c Out: real x(u,v,w) c (complex elements are in odd l planes) real x(0:*) integer nu,nv,nw,nuv,nuvw integer d(5) c nuv=nu*nv nuvw=nuv*nw c Transform h to u d(1)=nuvw d(2)=1 d(3)=2*nuv d(4)=nuv d(5)=nu call cmplft(x(0),x(nuv),nu,d) c Transform k to v d(1)=nuvw d(2)=nu d(3)=2*nuv d(4)=nu d(5)=1 call cmplft(x(0),x(nuv),nv,d) c Hermitian transform l to w d(1)=nuvw d(2)=2*nuv d(3)=nuvw d(4)=nuv d(5)=1 call hermft(x(0),x(nuv),nw/2,d) return c end c c ---------------------------------------------------------------------- c subroutine fft3rh(x,nu,nv,nw) include 'dmheader.fh' c 3-d Real to Hermitian FFT c In: real x(u,v,w) c Out: complex x(h,k,l) (l=0...nl/2) c (complex elements are in odd l planes) c x MUST BE LARGE ENOUGH TO HOLD ((w+2)*u*v) ELEMENTS integer nu,nv,nw,nuv,nuvw real x(0:*) integer d(5) c nuv=nu*nv nuvw=nuv*nw c Real transform l to w c *** NOTE THAT THE w=nw/2 ELEMENTS ARE LOST *** d(1)=nuvw d(2)=2*nuv d(3)=nuvw d(4)=nuv d(5)=1 call realft(x(0),x(nuv),nw/2,d) c Transform k to v d(1)=nuvw d(2)=nu d(3)=2*nuv d(4)=nu d(5)=1 call cmplft(x(0),x(nuv),nv,d) c Transform h to u d(1)=nuvw d(2)=1 d(3)=2*nuv d(4)=nuv d(5)=nu call cmplft(x(0),x(nuv),nu,d) return c end c c ---------------------------------------------------------------------- c