SUBROUTINE fft6_r2g_green (f_r, f_g) ! 6-D fourier transform used for W(r,r') to W(G, G') ! which agrees with convention in FG's paper. USE io_files, ONLY : prefix, iunigk USE gwsigma, ONLY : ngmsco, nrsco, nr1sco, nr2sco, nr3sco, nlsco USE kinds, ONLY : DP USE cell_base, ONLY : omega, alat USE control_gw, ONLY : lgamma USE wvfct, ONLY : npw,npwx, igk USE qpoint, ONLY : xq, npwq, igkq, nksq, ikks, ikqs USE gsmooth, ONLY : nrxxs, nrx1s, nrx2s, nrx3s, nr1s, nr2s, nr3s, nls USE gvect, ONLY : ngm, nrxx, g, nr1, nr2, nr3, nrx1, nrx2, nrx3, nl IMPLICIT NONE INTEGER :: ios INTEGER :: ig, igp, ir, irp COMPLEX(DP) :: czero COMPLEX(DP) :: f_g(ngmsco,ngmsco) COMPLEX(DP) :: aux(nrsco) COMPLEX(DP) :: f_r (nrsco,nrsco) !EXPLICIT TEST OF FFT do ir = 1, nrsco aux = (0.0d0, 0.0d0) do irp = 1, nrsco aux(irp) = f_r(ir, irp) enddo !HL forward backward works on full grid ! call cft3 (aux, nr1, nr2, nr3, nrx1, nrx2, nrx3, -1) call cft3 (aux, nr1sco, nr2sco, nr3sco, nr1sco, nr2sco, nr3sco, -1) do igp = 1, ngmsco f_r (ir,igp) = aux( nlsco(igkq(igp))) enddo enddo do igp = 1, ngmsco aux = czero do ir = 1, nrsco aux(ir) = conjg ( f_r(ir,igp) ) enddo !HL forward backward works on smooth grid. !call cft3 (aux, nr1, nr2, nr3, nrx1, nrx2, nrx3, -1) call cft3 (aux, nr1sco, nr2sco, nr3sco, nr1sco, nr2sco, nr3sco, -1) do ig = 1, ngmsco !f_r (ig,igp) = conjg ( aux( nl( ig )) ) * omega f_r (ig,igp) = conjg ( aux( nlsco( igkq(ig) )) ) * omega enddo enddo f_g(1:ngmsco,1:ngmsco) = f_r(1:ngmsco, 1:ngmsco) END SUBROUTINE fft6_r2g_coulomb