mirror of https://gitlab.com/QEF/q-e.git
Added support for the C09 GGA Exchange functional
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@8012 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
6c7d816592
commit
c648b33cde
|
@ -136,6 +136,9 @@ module funct
|
|||
! "wcx" Wu-Cohen igcx =11
|
||||
! "hse" HSE screened exchange igcx =12
|
||||
! "rw86" revised PW86 igcx =13
|
||||
! "pbe" same as PBX, back-comp. igcx =14
|
||||
! "tpss" same as META, back-comp. igcx =15
|
||||
! "c09x" Coooper 09 igcx =16
|
||||
!
|
||||
! Gradient Correction on Correlation:
|
||||
! "nogc" none igcc =0 (default)
|
||||
|
@ -221,7 +224,7 @@ module funct
|
|||
! data
|
||||
integer :: nxc, ncc, ngcx, ngcc, ncnl
|
||||
|
||||
parameter (nxc = 8, ncc =11, ngcx =15, ngcc = 10, ncnl=2)
|
||||
parameter (nxc = 8, ncc =11, ngcx =16, ngcc = 10, ncnl=2)
|
||||
|
||||
character (len=4) :: exc, corr
|
||||
character (len=4) :: gradx, gradc, nonlocc
|
||||
|
@ -232,7 +235,7 @@ module funct
|
|||
'OBW', 'GL' , 'B3LP', 'KZK' /
|
||||
data gradx / 'NOGX', 'B88', 'GGX', 'PBX', 'RPB', 'HCTH', 'OPTX',&
|
||||
'META', 'PB0X', 'B3LP','PSX', 'WCX', 'HSE', 'RW86', 'PBE', &
|
||||
'TPSS' /
|
||||
'TPSS', 'C09X' /
|
||||
|
||||
data gradc / 'NOGC', 'P86', 'GGC', 'BLYP', 'PBC', 'HCTH', 'META',&
|
||||
'B3LP', 'PSC', 'PBE', 'TPSS' /
|
||||
|
@ -329,6 +332,24 @@ CONTAINS
|
|||
call set_dft_value (inlc,0) !Default
|
||||
dft_defined = .true.
|
||||
|
||||
else if ('VDW-DF2-C09' .EQ. TRIM(dftout) ) then
|
||||
! Special case vdW-DF2 with C09 exchange
|
||||
call set_dft_value (iexch, 1)
|
||||
call set_dft_value (icorr, 4)
|
||||
call set_dft_value (igcx, 16)
|
||||
call set_dft_value (igcc, 0)
|
||||
call set_dft_value (inlc, 2)
|
||||
dft_defined = .true.
|
||||
|
||||
else if ('VDW-DF-C09' .EQ. TRIM(dftout) ) then
|
||||
! Special case vdW-DF with C09 exchange
|
||||
call set_dft_value (iexch, 1)
|
||||
call set_dft_value (icorr, 4)
|
||||
call set_dft_value (igcx, 16)
|
||||
call set_dft_value (igcc, 0)
|
||||
call set_dft_value (inlc, 1)
|
||||
dft_defined = .true.
|
||||
|
||||
else if ('VDW-DF2' .EQ. TRIM(dftout) ) then
|
||||
! Special case vdW-DF2
|
||||
call set_dft_value (iexch, 0)
|
||||
|
@ -897,6 +918,10 @@ CONTAINS
|
|||
shortname_ = 'VDW-DF'
|
||||
else if (iexch_==1.and.icorr_==4.and.igcx_==12.and.igcc_==0.and.inlc_==2) then
|
||||
shortname_ = 'VDW-DF2'
|
||||
else if (iexch_==1.and.icorr_==4.and.igcx_==16.and.igcc_==0.and.inlc_==1) then
|
||||
shortname_ = 'VDW-DF-C09'
|
||||
else if (iexch_==1.and.icorr_==4.and.igcx_==16.and.igcc_==0.and.inlc_==2) then
|
||||
shortname_ = 'VDW-DF2-C09'
|
||||
else
|
||||
shortname_ = ' '
|
||||
end if
|
||||
|
@ -1280,6 +1305,8 @@ subroutine gcxc (rho, grho, sx, sc, v1x, v2x, v1c, v2c)
|
|||
endif
|
||||
elseif (igcx ==13) then ! 'rPW86'
|
||||
call rPW86 (rho, grho, sx, v1x, v2x)
|
||||
elseif (igcx ==16) then ! 'C09x'
|
||||
call c09x (rho, grho, sx, v1x, v2x)
|
||||
else
|
||||
sx = 0.0_DP
|
||||
v1x = 0.0_DP
|
||||
|
|
Loading…
Reference in New Issue