Updates of files with analytical hole range-separated hybrid addition: vdW-DF-ahcx, vdW-DF2-ah, PBE(sol)-ah

This commit is contained in:
hyldgaar 2021-12-04 21:04:44 +01:00
parent bc8b61b890
commit 1da54b297b
5 changed files with 16 additions and 37 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.
!-----------------------------------------------------------------------
!
!
!-----------------------------------------------------------------------