[Pw_forum] Electrons kinetic energy
Paolo Giannozzi
paolo.giannozzi at uniud.it
Thu Oct 17 18:24:10 CEST 2013
What do you want exactly to calculate? The "average electron
kinetic energy" for norm-conserving pseudopotentials is a
rather simple object. In atomic (Ry) units:
\sum_k \sum_i f_{i,k} <\psi_{i,k}|\nabla^2|\psi_{i,k}> =
\sum_k \sum_i f_{i,k} \sum_G |\psi_i(k+G)|^2 (k+G)^2
where f_{i,k} is the occupancy of Kohn-Sham state \psi_{i,k}
whose plane-wave components are \psi_i(k+G). YOu do not need
the "local kinetic energy density":
\sum_k \sum_i f_{i,k} |\nabla psi_{k,i}(r)|**2
P.
On Wed, 2013-10-16 at 17:04 +0200, Pietro Bonfa' wrote:
> Dear All,
>
> following the recipes given in this thread:
>
> http://qe-forge.org/pipermail/pw_forum/2009-May/087347.html
>
> I added two routines to the pp.x code to calculate the average
> electronic kinetic energy. I started from both the elf.f90 subroutine in
> PP code and from the pw2casino implementation.
>
> It's almost only a matter of copy/paste but there is a thing I cannot
> understand.
>
> Let "kkin" be the variable with the kinetic energy density, following
> the elf.f90 code I have:
>
> 0 ! symmetrize the local kinetic energy if needed
> 1 IF ( .not. gamma_only) THEN
> 2 !
> 3 CALL sym_rho_init ( gamma_only )
> 4 !
> 5 aux(:) = cmplx ( kkin (:), 0.0_dp, kind=dp)
> 6 CALL fwfft ('Dense', aux, dfftp)
> 7 ALLOCATE (aux2(ngm))
> 8 aux2(:) = aux(nl(:))
> 9 !
> 10 ! aux2 contains the local kinetic energy in G-space to be
> symmetrized
> 11 !
> 12 CALL sym_rho ( 1, aux2 )
> 13 !
> 14 aux(:) = (0.0_dp, 0.0_dp)
> 15 aux(nl(:)) = aux2(:)
> 16 DEALLOCATE (aux2)
> 17
> 18 CALL invfft ('Dense', aux, dfftp)
> 19 kkin (:) = dble(aux(:))
> 20 !
> 21 ENDIF
> 22 T = sum( kkin(:) )*omega / ( dfftp%nr1*dfftp%nr2*dfftp%nr3 )
>
> To get the correct kinetic energy (T), with respect to elf.f90, I had to
> change
> CALL fwfft ('Smooth', aux, dfftp)
> to
> CALL fwfft ('Dense', aux, dfftp)
> on line 6 because otherwise I couldn't perform the sum correctly (even
> if using dffts%nr1 nr2 nr3).
>
> With this trick the elf-derived and the pw2casino-derived routines give
> similar results in all the cases I used for testing.
> Nonetheless, I'm completely unfamiliar with the QE implementation, and
> probably there is no need to change Smooth to Dense.
> Moreover, I don't really know if performing sym_rho on the Dense grid is
> fine or not.
>
> Can someone please help me figure out my mistake(s)?
>
> Thanks,
> Pietro
>
> ps: the subroutines are attached.
>
>
> _______________________________________________
> Pw_forum mailing list
> Pw_forum at pwscf.org
> http://pwscf.org/mailman/listinfo/pw_forum
--
Paolo Giannozzi, Dept. Chemistry&Physics&Environment,
Univ. Udine, via delle Scienze 208, 33100 Udine, Italy
Phone +39-0432-558216, fax +39-0432-558222
More information about the users
mailing list