SUBROUTINE sigma_r2g(sigma, sigma_g) ! 6-D fourier transform used for taking Sigma back in to G space after the product has been formed in ! the cell periodic fxns in real space. USE io_files, ONLY : prefix, iunigk USE gwsigma, ONLY : ngmsig, nrsig, nr1sig, nr2sig, nr3sig, nlsig USE qpoint, ONLY : xq, npwq, igkq, nksq, ikks, ikqs USE kinds, ONLY : DP USE control_gw, ONLY : lgamma USE cell_base, ONLY : omega, alat USE wvfct, ONLY : npw,npwx, igk USE freq_gw, ONLY : nwsigma IMPLICIT NONE INTEGER :: ios INTEGER :: ig, igp, ir, irp, iw COMPLEX(DP) :: sigma (nrsig,nrsig,nwsigma,1) COMPLEX(DP) :: sigma_g(ngmsig,ngmsig,nwsigma) COMPLEX(DP) :: aux(nrsig) COMPLEX(DP) :: czero !Again reading in mapping indices for FFTs. do iw = 1, nwsigma do ir = 1, nrsig aux = (0.0d0, 0.0d0) do irp = 1, nrsig aux(irp) = sigma(ir,irp,iw,1) enddo ! call cfft3s ( aux, nr1s, nr2s, nr3s, -1) ! call cft3s (aux, nr1sig, nr2sig, nr3s, ngm1sig, ngm2sig, ngmsig3, -2) call cft3 (aux, nr1sig, nr2sig, nr3sig, nr1sig, nr2sig, nr3sig, -1) do igp = 1, ngmsig sigma (ir,igp,iw,1) = aux( nlsig(igp ) ) enddo enddo do igp = 1, ngmsig aux = czero do ir = 1, nrsig aux(ir) = conjg ( sigma(ir,igp,iw,1) ) enddo ! call cfft3s ( aux, nr1s, nr2s, nr3s, -1) call cft3 (aux, nr1sig, nr2sig, nr3sig, nr1sig, nr2sig, nr3sig, -1) do ig = 1, ngmsig sigma (ig,igp,iw,1) = conjg ( aux( nlsig( ig )) ) * omega enddo enddo enddo ! ! everything beyond ngmsig is garbage ! do ig = ngmsig + 1, nrsig do igp = ngmsig + 1, nrsig do iw = 1, nwsigma sigma (ig,igp,iw,1) = (0.0d0, 0.0d0) enddo enddo enddo ! #ifdef __PARA ! if (me.eq.1.and.mypool.eq.1) then ! #endif sigma_g = sigma(1:ngmsig,1:ngmsig,:,1) ! #ifdef __PARA ! endif ! #endif END SUBROUTINE sigma_r2g