subroutine kzspacee(ac21,as21,ac11,as11) c c Transform an electron variable from kz space into z space. c implicit none include 'itg.par' include 'itg.cmn' real ac21(lz,mz,nzz),as21(lz,mz,nzz), * ac11(lz,mz,nz,nspecz),as11(lz,mz,nz,nspecz), * ar(lz*nzz*mz),ai(lz*nzz*mz) integer l,m,n,ifail,index,imode,nmodes character init*10 data init /'Initial'/ real trig(2*nzz) ! NAG workspace real work(2*lz*mz*nzz) ! Nag workspace save init, trig, nmodes c c For single-helicity run, skip this subroutine: c if(nd.eq.1) then do 500 m=1,md do 500 l=1,ld ac11(l,m,1,2)=ac21(l,m,1) as11(l,m,1,2)=as21(l,m,1) 500 continue goto 1000 endif c c Initialize: c nmodes=ld*md c c Reorder the terms for NAG: c imode=0 do 300 m=1,md do 300 l=1,ld imode=imode+1 do 300 n=1,nalias index=imode+(n-1)*nmodes ar(index)=ac21(l,m,n) ai(index)=as21(l,m,n) 300 continue c c Do the FFT c ifail=0 call c06frE(nmodes,nalias,ar,ai,init,trig,work,ifail) init='Subsequent' c c Reorder the terms again: c imode=0 do 301 m=1,md do 301 l=1,ld imode=imode+1 do 301 n=1,nalias index=imode+(n-1)*nmodes ac21(l,m,n)=ar(index)/rootn as21(l,m,n)=ai(index)/rootn 301 continue c c Rearrange the modes the way I like them: c do 302 m=1,md do 302 n=1,nddp do 302 l=1,ld ac11(l,m,n,2)=ac21(l,m,n) as11(l,m,n,2)=as21(l,m,n) 302 continue c do 303 m=1,md do 303 n=1,nddm do 303 l=1,ld ac11(l,m,n+nddp,2)=ac21(l,m,n+nadd+nddp) as11(l,m,n+nddp,2)=as21(l,m,n+nadd+nddp) 303 continue c 1000 continue c return end