Page 1 of 1

Kinetic Energy Term

Posted: Mon Jul 24, 2006 6:26 pm
by xsavvas
Dear VASPmaster,

I have a simple question. I want to calculate the contribution
of the electrons kinetic energy, ie:

Code: Select all

             h^2   N         *       2    
 T    = -  ---  Sum  <Psi |grad |Psi>
             2 m  i=1                    

where N is the total number of electrons.

I found out that in the file elf.F is actually calculated.
So I just averaged it and multiplied it with the volume of the
system (see below). The result that I get I think is in eV.
Are all these correct or am I totally wrong?

Thank you very much!!


PS: Of course in the INCAR file I set: LELF = .TRUE.


Part of the elf.F file:

Code: Select all

      SUBROUTINE ELFCAL(CHDEN,LAPLAC,CKINE,CGRDSQ,GRID,LATT_CUR)
      USE prec
      USE mpimy
      USE mgrid
      USE constant
      USE lattice
      IMPLICIT COMPLEX(q) (C)
      IMPLICIT REAL(q) (A-B,D-H,O-Z)

      TYPE (grid_3d) GRID
      TYPE (latt)        LATT_CUR

      RGRID CHDEN(GRID%RL%NP),CKINE(GRID%RL%NP),CGRDSQ(GRID%RL%NP)
      RGRID LAPLAC(GRID%RL%NP)
!===========================================
!  calculate ELF (e.g.: Nature, 371(1994)683-686)
!              _
!              h^2    *    2         T.........kinetic energy
! T    = - 2 --- Psi grad Psi   T+TCORR...pos.definite kinetic energy
!              2 m                   TBOS......T of an ideal Bose-gas
!               _                                (=infimum of T+TCORR)
!             1 h^2      2           DH........T of hom.non-interact.e- - gas
! TCORR= - ---  grad rho                    (acc.to Fermi)
!             2 2 m                  ELF.......electron-localization-function
!               _             2
!             1 h^2 |grad rho|
! TBOS = - --- ----------       D = T + TCORR - TBOS
!             4 2 m    rho
!               _                                \                             1
!            3 h^2        2/3  5/3          =====>    ELF = ------------
! DH   = - --- (3 Pi^2)  rho                /                           D   2
!             5 2 m                                                   1 + ( --- )
!                                                                                DH
!===========================================
      PISQ   = PI*PI
      FIVTHI = 5._q/3._q

      Ttot = 0.0d0
      DO N=1,GRID%RL%NP
       T    = REAL( CKINE(N) ,KIND=q)
       Ttot = Ttot + T
       TCORR= REAL( LAPLAC(N) ,KIND=q) *HSQDTM/2._q
!      write(*,*) "KINE = ",Ttot,T,N,Ttot/real(N)
       TBOS = HSQDTM/4._q* REAL( CGRDSQ(N)/CHDEN(N) ,KIND=q)
       DH = 0.2_q*HSQDTM/PISQ* (3*PISQ* REAL( CHDEN(N) ,KIND=q) )**FIVTHI
       CKINE(N)=1/(1+((T+TCORR-TBOS)/MAX(DH,1E-8_q))**2)
      ENDDO
       write(*,*) "KINE = ",Ttot*LATT_CUR%OMEGA/real(N)

      RETURN

      END
<span class='smallblacktext'>[ Edited ]</span>

Kinetic Energy Term

Posted: Mon Jul 24, 2006 9:53 pm
by cpp6f
For pseudopotential calculations the kinetic energy is somewhat ill defined. If the phi in your equation is the pseudo-wavefunction, then you will not get the true expectation value of the kinetic energy of the actual wavefunction. This pseudo-kinetic energy is the most you can get out of vasp, as the Dij terms in the us pseudopotential combine the kinetic, coulombic, and exchange-correlation energies associated with each nonlocal projection operator. If you want the pseudo-kinetic energy, I have a modified version of vasp that will calculate it and print it in the OUTCAR file. I don't know the legalities of me sending this to you would be, though, so I would need an okay from the admin.

Kinetic Energy Term

Posted: Wed Jul 26, 2006 2:23 pm
by xsavvas
Hello,
If there is no problem (as you said) it would be great if you could sent it to me.
Thank you very much for your help.

Kinetic Energy Term

Posted: Wed Nov 09, 2011 8:38 pm
by sfli
Dear my friends!
I also need to calculate the electronic kinetic energy term, however, it is difficult for me to modify the code.
So, could you please also send me the modified version of vasp if it is possible?
Thanks a lot!