! !----------------------------------------------------------------------- subroutine h_psi ( psi, hpsi, g2kin, vr) !----------------------------------------------------------------------- ! ! hpsi = H_k | psi > ! use gspace use constants use parameters implicit none ! real(kind=DP) :: psi (ngm), hpsi (ngm), g2kin(ngm) complex(kind=DP) :: vr (nr), psic (nr), rhoca(nr1,nr2,nr3) integer :: ig, ir, i, j, k ! ! ! FFT test ! allocate ( rhoca (nr1, nr2, nr3) ) ! do i = 1, nr1 do j = 1, nr2 do k = 1, nr3 ir = i + (j-1) * nr1 + (k-1) * nr1 * nr2 rhoca (i, j, k) = float(i) vr ( ir ) = rhoca (i, j, k) write (16,'(3i5,f9.5)') i,j,k,real(rhoca (i, j, k)) enddo end do end do ! ! go to G space call cfft3 ( vr, nr1, nr2, nr3, -1) psic = czero do ig = 1, ngm psic ( ig ) = vr ( nl ( ig ) ) ! psic is in order of increasing |G|^2 enddo ! ! now back to R space do ig = 1, ngm vr ( nl ( ig ) ) = psic (ig) enddo call cfft3 ( vr, nr1, nr2, nr3, 1) ! do i = 1, nr1 do j = 1, nr2 do k = 1, nr3 ir = i + (j-1) * nr1 + (k-1) * nr1 * nr2 rhoca (i, j, k) = vr (ir) write (6,'(3i5,f9.5)') i,j,k,real(rhoca (i, j, k)) enddo end do end do ! stop ! return end subroutine h_psi !