123 lines
3.9 KiB
Fortran
123 lines
3.9 KiB
Fortran
|
!
|
||
|
!=======================================================================
|
||
|
!
|
||
|
MODULE DELTA_KIN
|
||
|
!
|
||
|
USE ACCURACY_REAL
|
||
|
!
|
||
|
CONTAINS
|
||
|
!
|
||
|
!------ 1) 3D case --------------------------------------------
|
||
|
!
|
||
|
!=======================================================================
|
||
|
!
|
||
|
SUBROUTINE DELTA_KIN_3D(EC_TYPE,IMODE,IDERIV,RS,T,I_DE,DT,DT2)
|
||
|
!
|
||
|
! This subroutine computes delta_t and delta_t2 values for 3D systems
|
||
|
!
|
||
|
!
|
||
|
! References: (1) J. Toulouse, Phys. Rev. B 72, 035117 (2005)
|
||
|
!
|
||
|
! They are defined, in terms of the kinetic energy, as
|
||
|
!
|
||
|
! < t > - < t >
|
||
|
! 0
|
||
|
! delta_t = ----------------
|
||
|
!
|
||
|
! < t >
|
||
|
! 0
|
||
|
!
|
||
|
!
|
||
|
! 2 2
|
||
|
! < t > - < t >
|
||
|
! 0
|
||
|
! delta_t2 = ----------------
|
||
|
! 2
|
||
|
! < t >
|
||
|
! 0
|
||
|
!
|
||
|
!
|
||
|
! Input parameters:
|
||
|
!
|
||
|
! * EC_TYPE : type of correlation energy functional
|
||
|
! * IMODE : choice of parameters
|
||
|
! IMODE = 1 : no spin polarization
|
||
|
! IMODE = 2 : fully spin-polarized
|
||
|
! * IDERIV : type of n_point formula used for derivation (n = IDERIV)
|
||
|
! * RS : Wigner-Seitz radius of electron (in units of a_0)
|
||
|
! * T : temperature (SI)
|
||
|
! * I_DE : type of parametrization of delta_t2
|
||
|
! I_DE = 1 : RPA
|
||
|
! I_DE = 2 : GW
|
||
|
! I_DE = 3 : Gori-Giorgi and Ziesche
|
||
|
!
|
||
|
!
|
||
|
! Output parameters:
|
||
|
!
|
||
|
! * DT : delta_t
|
||
|
! * DT2 : delta_t2
|
||
|
!
|
||
|
!
|
||
|
!
|
||
|
! Author : D. Sébilleau
|
||
|
!
|
||
|
! Last modified : 30 Oct 2020
|
||
|
!
|
||
|
!
|
||
|
!
|
||
|
USE REAL_NUMBERS, ONLY : TWO,FIVE,THIRD
|
||
|
USE FERMI_AU, ONLY : EF_AU
|
||
|
!
|
||
|
USE CORRELATION_ENERGIES
|
||
|
!
|
||
|
IMPLICIT NONE
|
||
|
!
|
||
|
CHARACTER (LEN = 6) :: EC_TYPE
|
||
|
!
|
||
|
INTEGER, INTENT(IN) :: IMODE,IDERIV,I_DE
|
||
|
!
|
||
|
REAL (WP), INTENT(IN) :: RS,T
|
||
|
REAL (WP), INTENT(OUT) :: DT,DT2
|
||
|
!
|
||
|
REAL (WP) :: EC,D_EC_1,D_EC_2
|
||
|
REAL (WP) :: EF
|
||
|
REAL (WP) :: D1(3:6),D2(3:6),D3(3:6)
|
||
|
REAL (WP) :: U,U3,U4,U5,U6
|
||
|
!
|
||
|
REAL (WP) :: SQRT
|
||
|
!
|
||
|
DATA D1 / 0.093623E0_WP, 0.194288E0_WP, 0.051445E0_WP, 0.005449E0_WP / ! RPA
|
||
|
DATA D2 / 0.126362E0_WP, 0.001428E0_WP, 0.014278E0_WP, -0.004522E0_WP / ! GW
|
||
|
DATA D3 / 0.271191E0_WP, -0.009998E0_WP, -0.036383E0_WP, 0.006706E0_WP / ! GZ
|
||
|
!
|
||
|
U = SQRT(RS) !
|
||
|
U3 = U * U * U !
|
||
|
U4 = U3 * U !
|
||
|
U5 = U4 * U !
|
||
|
U6 = U5 * U !
|
||
|
!
|
||
|
! Correlation energy and its derivatives
|
||
|
!
|
||
|
EC = EC_3D(EC_TYPE,1,RS,T) !
|
||
|
CALL DERIVE_EC_3D(EC_TYPE,1,5,RS,T,D_EC_1,D_EC_2) !
|
||
|
!
|
||
|
! E_F in Rydberg
|
||
|
!
|
||
|
EF = TWO * EF_AU ! EF_AU in Hartree
|
||
|
!
|
||
|
DT = - FIVE * THIRD * (EC + RS * D_EC_1) / EF !
|
||
|
!
|
||
|
! Parametrization of delta_t2
|
||
|
!
|
||
|
IF(I_DE == 1) THEN !
|
||
|
DT2 = D1(3) * U3 + D1(4) * U4 + D1(5) * U5 + D1(6) * U6 !
|
||
|
ELSE IF(I_DE == 2) THEN !
|
||
|
DT2 = D2(3) * U3 + D2(4) * U4 + D2(5) * U5 + D2(6) * U6 ! ref. (1) eq. (B1)
|
||
|
ELSE IF(I_DE == 3) THEN !
|
||
|
DT2 = D3(3) * U3 + D3(4) * U4 + D3(5) * U5 + D3(6) * U6 !
|
||
|
END IF !
|
||
|
!
|
||
|
END SUBROUTINE DELTA_KIN_3D
|
||
|
!
|
||
|
END MODULE DELTA_KIN
|