SUBROUTINE fft6_g2r ( f_g, f_r) USE gsmooth, ONLY : nrxxs, nr1s, nr2s, nr3s, nrx1s, nrx2s, nrx3s, nls, ngms, nrxxs USE kinds, ONLY : DP USE cell_base, ONLY : omega, alat implicit none integer :: ig, igp, ir, irp complex(DP) :: f_r (nrxxs,nrxxs), f_g(ngms,ngms), aux(nrxxs) complex(DP) :: czero czero = (1.0d0, 0.0d0) ! do ig = 1, ngms aux = czero do igp = 1, ngms aux(nls(igp)) = f_g(ig,igp) enddo call cft3s ( aux, nr1s, nr2s, nr3s, 1) f_r(ig,1:nrxxs) = aux / omega enddo ! ! the conjg/conjg is to calculate sum_G f(G) exp(-iGr) ! following teh convention set in the paper ! [because the standard transform is sum_G f(G) exp(iGr) ] ! do irp = 1, nrxxs aux = czero do ig = 1, ngms aux(nls(ig)) = conjg ( f_r(ig,irp) ) enddo call cft3s ( aux, nr1s, nr2s, nr3s, 1) f_r(1:nrxxs,irp) = conjg ( aux ) enddo ! END SUBROUTINE fft6_g2r