mirror of https://gitlab.com/QEF/q-e.git
Updates of files with analytical hole range-separated hybrid addition: vdW-DF-ahcx, vdW-DF2-ah, PBE(sol)-ah
This commit is contained in:
parent
bc8b61b890
commit
1da54b297b
|
@ -283,6 +283,9 @@ MODULE funct
|
|||
! rVV10 R. Sabatini et al. Phys. Rev. B 87, 041108(R) (2013)
|
||||
! ev93 Engel-Vosko, Phys. Rev. B 47, 13164 (1993)
|
||||
! vdW-DF-ahcx V. Shukla, Y. Jiao, iC. M. Frostenson, and P. Hyldgaard, JPCM 34, 025902 (2022)
|
||||
! vdW-DF2-ah V. Shukla, Y. Jiao, iC. M. Frostenson, and P. Hyldgaard, JPCM 34, 025902 (2022)
|
||||
! PBE-ah V. Shukla, Y. Jiao, iC. M. Frostenson, and P. Hyldgaard, JPCM 34, 025902 (2022)
|
||||
! PBESOL-ah V. Shukla, Y. Jiao, iC. M. Frostenson, and P. Hyldgaard, JPCM 34, 025902 (2022)
|
||||
!
|
||||
! NOTE ABOUT HSE: there are two slight deviations with respect to the HSE06
|
||||
! functional as it is in Gaussian code (that is considered as the reference
|
||||
|
@ -454,32 +457,26 @@ CONTAINS
|
|||
CASE( 'VDW-DF-CX0P' )
|
||||
dft_defined = xclib_set_dft_IDs(6,4,31,0,0,0)
|
||||
inlc = 1
|
||||
! Begin PH added
|
||||
! Special case vdW-DF-AHCX
|
||||
CASE( 'VDW-DF-AHCX' )
|
||||
dft_defined = xclib_set_dft_IDs(1,4,32,0,0,0)
|
||||
inlc = 1
|
||||
! End PH added
|
||||
! Special case vdW-DF2-0
|
||||
CASE( 'VDW-DF2-0' )
|
||||
dft_defined = xclib_set_dft_IDs(6,4,30,0,0,0)
|
||||
inlc = 2
|
||||
! Begin PH added
|
||||
! Special case vdW-DF2-AH
|
||||
CASE( 'VDW-DF2-AH' )
|
||||
dft_defined = xclib_set_dft_IDs(1,4,33,0,0,0)
|
||||
inlc = 2
|
||||
! End PH added
|
||||
! Special case vdW-DF2-BR0
|
||||
CASE( 'VDW-DF2-BR0' )
|
||||
dft_defined = xclib_set_dft_IDs(6,4,38,0,0,0)
|
||||
inlc = 2
|
||||
! Begin PH added
|
||||
! Special case vdW-DF2-AHTR
|
||||
CASE( 'VDW-DF2-AHTR' )
|
||||
dft_defined = xclib_set_dft_IDs(1,4,47,0,0,0)
|
||||
inlc = 2
|
||||
! End PH added
|
||||
! Special case vdW-DF-C090
|
||||
CASE( 'VDW-DF-C090' )
|
||||
dft_defined = xclib_set_dft_IDs(6,4,40,0,0,0)
|
||||
|
@ -782,10 +779,8 @@ CONTAINS
|
|||
shortname = 'VDW-DF-CX0'
|
||||
ELSEIF (iexch==6 .AND. icorr==4 .AND. igcx==31 .AND. igcc==0) THEN
|
||||
shortname = 'VDW-DF-CX0P'
|
||||
! Begin PH added
|
||||
ELSEIF (iexch==1 .AND. icorr==4 .AND. igcx==32 .AND. igcc==0) THEN
|
||||
shortname = 'VDW-DF-AHCX'
|
||||
! End PH added
|
||||
ELSEIF (iexch==1 .AND. icorr==4 .AND. igcx==16 .AND. igcc==0) THEN
|
||||
shortname = 'VDW-DF-C09'
|
||||
ELSEIF (iexch==1 .AND. icorr==4 .AND. igcx==24 .AND. igcc==0) THEN
|
||||
|
@ -811,12 +806,10 @@ CONTAINS
|
|||
shortname = 'VDW-DF2-B86R'
|
||||
ELSEIF (iexch==6 .AND. icorr==4 .AND. igcx==30 .AND. igcc==0) THEN
|
||||
shortname = 'VDW-DF2-0'
|
||||
! Begin PH added
|
||||
ELSEIF (iexch==1 .AND. icorr==4 .AND. igcx==33 .AND. igcc==0) THEN
|
||||
shortname = 'VDW-DF2-AH'
|
||||
ELSEIF (iexch==1 .AND. icorr==4 .AND. igcx==47 .AND. igcc==0) THEN
|
||||
shortname = 'VDW-DF2-AHTR'
|
||||
! End PH added
|
||||
ELSEIF (iexch==6 .AND. icorr==4 .AND. igcx==38 .AND. igcc==0) THEN
|
||||
shortname = 'VDW-DF2-BR0'
|
||||
ELSE
|
||||
|
|
|
@ -519,9 +519,8 @@ CONTAINS
|
|||
exx_fraction = 0.25_DP
|
||||
screening_parameter = 0.106_DP
|
||||
ENDIF
|
||||
! Begin PH added
|
||||
! AH-SERIES (vdW-DF-)ahcx (at 32), vdW-DF2-AH (at 33), (vdW-DF2-)ahtr (at
|
||||
! 47)
|
||||
! 47) ! JPCM 34, 025902 (2022)
|
||||
IF ( (igcx ==32 .OR. igcx ==33 .OR. igcx==47) .AND. .NOT.is_libxc(3) ) THEN
|
||||
exx_fraction = 0.20_DP
|
||||
screening_parameter = 0.106_DP
|
||||
|
@ -531,7 +530,6 @@ CONTAINS
|
|||
exx_fraction = 0.20_DP
|
||||
screening_parameter = 0.106_DP
|
||||
ENDIF
|
||||
! End PH added
|
||||
! gau-pbe
|
||||
IF ( igcx ==20 .AND. .NOT.is_libxc(3) ) THEN
|
||||
exx_fraction = 0.24_DP
|
||||
|
|
|
@ -234,14 +234,14 @@ MODULE qe_dft_list
|
|||
DATA dft_full(39)%name / 'R2SCAN' /
|
||||
DATA dft_full(39)%name2 / 'none' /
|
||||
DATA dft_full(39)%IDs(1:6) / 0,0,0,0,7,0 /
|
||||
!
|
||||
! 'AH series for vdW-DFs and analytical-hole PBE(sol)-AH: JPCM 34, 025902 (2022)
|
||||
DATA dft_full(40)%name / 'PBE-AH' /
|
||||
DATA dft_full(40)%name2 / 'none' /
|
||||
DATA dft_full(40)%IDs(1:6) / 1,4,34,4,0,0 / ! PH: sla+pw+hjpb+pbc; Differs from EHPB-based, incl HSE
|
||||
DATA dft_full(40)%IDs(1:6) / 1,4,34,4,0,0 / ! PH: sla+pw+ahpb+pbc; Differs from EHPB-based, incl HSE
|
||||
!
|
||||
DATA dft_full(41)%name / 'PBESOL-AH' /
|
||||
DATA dft_full(41)%name2 / 'none' /
|
||||
DATA dft_full(41)%IDs(1:6) / 1,4,35,8,0,0 / ! PH: sla+pw+hjps+psc
|
||||
DATA dft_full(41)%IDs(1:6) / 1,4,35,8,0,0 / ! PH: sla+pw+ahps+psc
|
||||
!
|
||||
!
|
||||
CONTAINS
|
||||
|
|
|
@ -66,7 +66,7 @@ SUBROUTINE gcxc( length, rho_in, grho_in, sx_out, sc_out, v1x_out, &
|
|||
!
|
||||
! ... local variables
|
||||
!
|
||||
INTEGER :: ir, iflag ! PH added iflag for AH series
|
||||
INTEGER :: ir, iflag ! Added iflag for AH series
|
||||
REAL(DP) :: rho, grho
|
||||
REAL(DP) :: sx, v1x, v2x
|
||||
REAL(DP) :: sx_, v1x_, v2x_
|
||||
|
@ -173,7 +173,6 @@ SUBROUTINE gcxc( length, rho_in, grho_in, sx_out, sc_out, v1x_out, &
|
|||
v2x = v2x - exx_fraction * v2xsr
|
||||
ENDIF
|
||||
!
|
||||
! Begin PH added
|
||||
CASE( 34, 35 ) ! ' AH series for GGA cross checks
|
||||
!
|
||||
iflag = 0
|
||||
|
@ -198,7 +197,7 @@ SUBROUTINE gcxc( length, rho_in, grho_in, sx_out, sc_out, v1x_out, &
|
|||
v2x = v2x - exx_fraction * v2xsr
|
||||
ENDIF
|
||||
!
|
||||
CASE( 32, 33, 47 ) ! 'AH series for vdW-DFs
|
||||
CASE( 32, 33, 47 ) ! 'AH series for vdW-DFs, JPCM 34, 025902 (2022)
|
||||
!
|
||||
iflag = 0
|
||||
if ( igcx == 32) then ! vdW-DF-ahcx
|
||||
|
@ -225,7 +224,6 @@ SUBROUTINE gcxc( length, rho_in, grho_in, sx_out, sc_out, v1x_out, &
|
|||
v2x = v2x - exx_fraction * v2xsr
|
||||
ENDIF
|
||||
!
|
||||
! End PH added
|
||||
CASE( 13 ) ! 'rPW86'
|
||||
!
|
||||
CALL rPW86( rho, grho, sx, v1x, v2x )
|
||||
|
@ -589,10 +587,8 @@ SUBROUTINE gcx_spin( length, rho_in, grho2_in, sx_tot, v1x_out, v2x_out )
|
|||
IF ( igcx==25 ) iflag = 7
|
||||
IF ( igcx==44 ) iflag = 8
|
||||
IF ( igcx==45 ) iflag = 9
|
||||
! Begin PH added
|
||||
IF ( igcx==34 ) iflag = 1
|
||||
IF ( igcx==35 ) iflag = 3
|
||||
! End PH added
|
||||
!
|
||||
rho_up = 2.0_DP * rho_up ; rho_dw = 2.0_DP * rho_dw
|
||||
grho2_up = 4.0_DP * grho2_up ; grho2_dw = 4.0_DP * grho2_dw
|
||||
|
@ -626,7 +622,6 @@ SUBROUTINE gcx_spin( length, rho_in, grho2_in, sx_tot, v1x_out, v2x_out )
|
|||
v2x_up = v2x_up - exx_fraction * v2xsr_up * 2.0_DP
|
||||
v2x_dw = v2x_dw - exx_fraction * v2xsr_dw * 2.0_DP
|
||||
!
|
||||
! Begin PH added AH-based HSE-type cross checks at 0.2 Fock exchange mixing
|
||||
ELSEIF ( igcx == 34 .AND. exx_started ) THEN
|
||||
!
|
||||
CALL axsr( 1, rho_up, grho2_up, sxsr_up, v1xsr_up, &
|
||||
|
@ -655,7 +650,6 @@ SUBROUTINE gcx_spin( length, rho_in, grho2_in, sx_tot, v1x_out, v2x_out )
|
|||
v2x_up = v2x_up - exx_fraction * v2xsr_up * 2.0_DP
|
||||
v2x_dw = v2x_dw - exx_fraction * v2xsr_dw * 2.0_DP
|
||||
!
|
||||
! End PH added AH-based HSE-type cross checks at 0.2 Fock exchange mixing
|
||||
|
||||
ELSEIF ( igcx == 20 .AND. exx_started ) THEN
|
||||
! gau-pbe
|
||||
|
@ -859,14 +853,13 @@ SUBROUTINE gcx_spin( length, rho_in, grho2_in, sx_tot, v1x_out, v2x_out )
|
|||
v2x_dw = (1.0_DP - exx_fraction) * v2x_dw
|
||||
ENDIF
|
||||
!
|
||||
! Begin PH added AH-based vdW-DF RSHs at 0.2 Fock exchange mixing
|
||||
CASE( 32, 33, 47 )
|
||||
CASE( 32, 33, 47 ) ! ! 'AH series for vdW-DFs, JPCM 34, 025902 (2022)
|
||||
!
|
||||
rho_up = 2.0_DP * rho_up ; rho_dw = 2.0_DP * rho_dw
|
||||
grho2_up = 4.0_DP * grho2_up ; grho2_dw = 4.0_DP * grho2_dw
|
||||
!
|
||||
! igcx=32: vdw-df-ahcx,
|
||||
! igcx=33: vdw-df2-AH,
|
||||
! igcx=32: vdw-df-ahcx
|
||||
! igcx=33: vdw-df2-AH
|
||||
! igcx=47: vdw-df2-ahtr
|
||||
!
|
||||
iflag = 0
|
||||
|
@ -909,7 +902,6 @@ SUBROUTINE gcx_spin( length, rho_in, grho2_in, sx_tot, v1x_out, v2x_out )
|
|||
v2x_dw = v2x_dw - exx_fraction * v2xsr_dw * 2.0_DP
|
||||
END IF
|
||||
!
|
||||
! End PH added AH-based vdW-DF RSHs at 0.2 Fock exchange mixing
|
||||
CASE( 40 ) ! 'c090 for vdw-df-c090' etc
|
||||
!
|
||||
rho_up = 2.0_DP * rho_up ; rho_dw = 2.0_DP * rho_dw
|
||||
|
|
|
@ -660,13 +660,11 @@ SUBROUTINE pbexsr( rho, grho, sxsr, v1xsr, v2xsr, omega )
|
|||
END SUBROUTINE pbexsr
|
||||
!
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
!!!! Begin Per Hyldgaard added Oct 2016, GPL, No warranties.
|
||||
! adapted from the original pbesrx version above
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE axsr(IXC,RHO,GRHO,sx,V1X,V2X,OMEGA)
|
||||
!-----------------------------------------------------------------------
|
||||
!!!! Per Hyldgaard, No warranties. adapted from the pbesrx version above
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
! INCLUDE 'cnst.inc'
|
||||
|
@ -717,7 +715,7 @@ END SUBROUTINE pbexsr
|
|||
!
|
||||
! This codes the HJS analytical-xc-hole idea, JCP 128, 194 105 (2008).
|
||||
!
|
||||
! Copyright Per Hyldgaard, GPL, No warranty, 2016.
|
||||
! Copyright Per Hyldgaard, GPL, No warranty, 2016-
|
||||
!
|
||||
! Inputs:
|
||||
! rho - electron density
|
||||
|
@ -810,7 +808,7 @@ END SUBROUTINE pbexsr
|
|||
7.58236D-3, 5.98226D-4, -0.0770547D0, -0.0171561D0 /
|
||||
data b9 / 1.50540D-3, 1.58065D-5, 8.04175D-7, 7.09955D-6, &
|
||||
7.01937D-5, 4.67972D-6, 0.0334840D0, 0.0050552D0 /
|
||||
! End YJ/PH HJS-type parameters
|
||||
! End HJS-type parameters: JPCM 34, 025902 (2022)
|
||||
|
||||
integer*4 i
|
||||
Real*8 s2,s3,s4,s5,s6,s7,s8,s9
|
||||
|
@ -946,8 +944,6 @@ END SUBROUTINE pbexsr
|
|||
END SUBROUTINE wggax_analy_erfc
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
!!!! End Per Hyldgaard added Oct 2016, GPL, No warranties.
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue