SUBROUTINE fft6_g2r_coulomb_sco (f_g, f_r) ! 6-D fourier transform used for W(G,G') and G(G,G') ! which agrees with convention in FG's paper. 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 gvect, ONLY : ngm, nrxx, g, nr1, nr2, nr3, nrx1, nrx2, nrx3, nl USE gwsigma, ONLY : ngmsco, nrsco, nr1sco, nr2sco, nr3sco, nlsco IMPLICIT NONE INTEGER :: ios INTEGER :: ig, igp, ir, irp COMPLEX(DP) :: czero !Self-Energy Grid COMPLEX(DP), INTENT(INOUT) :: f_g (ngmsco,ngmsco) COMPLEX(DP), INTENT(INOUT) :: f_r (nrsco,nrsco) COMPLEX(DP) :: aux (nrsco) czero = (0.0d0, 0.0d0) f_r(:,:) = czero do ig = 1, ngmsco aux(:) = czero do igp = 1, ngmsco aux(nlsco(igp)) = f_g(ig,igp) enddo call cft3s (aux, nr1sco, nr2sco, nr3sco, nr1sco, nr2sco, nr3sco, +1) do irp = 1, nrsco f_r(ig, irp) = aux(irp) / omega enddo enddo ! the conjg/conjg is to calculate sum_G f(G) exp(-iGr) ! following the convention set in the paper ! [because the standard transform is sum_G f(G) exp(iGr) ] do irp = 1, nrsco aux = czero do ig = 1, ngmsco aux(nlsco(ig)) = conjg( f_r(ig,irp) ) enddo call cft3s (aux, nr1sco, nr2sco, nr3sco, nr1sco, nr2sco, nr3sco, +1) f_r(1:nrsco,irp) = conjg ( aux ) enddo END SUBROUTINE fft6_g2r_coulomb_sco