This commit is contained in:
Daniel Mejia-Rodriguez 2023-07-13 17:23:06 -07:00 committed by edoapra
parent 0952071094
commit 5efbdff343
No known key found for this signature in database
GPG key ID: 9E6A0B70826967BA
5 changed files with 55 additions and 12 deletions

View file

@ -703,6 +703,7 @@ c
xname(83)=' MN15-L Exchange Functional'
xname(84)=' MN15 Exchange Functional'
xname(85)=' M06-SX Exchange Functional'
xname(87)=' NCAPR GGA Exchange Functional'
c
c Exchange-Correlation combination functional name defaults.
c
@ -785,6 +786,7 @@ c
xcname(84)=' MN15 Method XC Functional'
xcname(85)=' M06-SX Method XC Functional'
xcname(86)=' r^2SCAN0 Method XC Functional'
xcname(87)=' NCAPR Method XC Functional'
c
c place character XC parameters in rtdb
c

View file

@ -153,7 +153,7 @@ c
c r2scan0 ==> 19
c
integer num_dirs, ind, mlen, iline, n, itemp
parameter (num_dirs=168)
parameter (num_dirs=169)
c
character*15 dirs(num_dirs)
character*255 test
@ -212,7 +212,7 @@ c
& 'xscan', 'cscan',
& 'hcth147@tz2p',
W 'wb97','wb97x','wb97x-d3',
& 'xr2scan', 'cr2scan','r2scan0' /
& 'xr2scan', 'cr2scan','r2scan0', 'ncapr' /
c becke97-d, ssb-d
logical disp, dumdirect
integer ivdw
@ -298,7 +298,8 @@ c
& 9710,9720,9650,9660,9615,9616,
& 1947,
& 9410,9420,9430,
& 9661,9662,9670,
& 9661,9662,9670,
& 9730,
& 1999 ) ind
@ -1817,6 +1818,17 @@ c
nlxfac(72) = .true.
xfac(72) = 1.0d0
goto 10
9730 xccomb(87) = .true.
cfac(3) = 1d0
lcfac(3) = .true.
cfac(4) = 1d0
nlcfac(4) = .true.
lxfac(87) = .true.
nlxfac(87) = .true.
xfac(87) = 1.0d0
goto 10
c
c r2SCAN metaGGA
c

View file

@ -1646,6 +1646,7 @@ c Clean scratch space
if (nodezero) call util_flush(LuOut)
c
endif ! gmh
c
enddo ! outer loop over roots
c

View file

@ -1855,15 +1855,32 @@ c
if (.not. do_2nd .and..not. do_3rd) then
call xc_xncap(tol_rho, xfac(72), rho,
& delrho, Amat, Cmat, nq, ipol,
& Ex, qwght, ldew, func)
& Ex, qwght, ldew, func, ' ')
else if (.not. do_3rd) then
call xc_xncap_d2(tol_rho, xfac(72), rho,
& delrho, Amat, Amat2, Cmat, Cmat2, nq, ipol,
& Ex, qwght, ldew, func)
& Ex, qwght, ldew, func, ' ')
else
call xc_xncap_d3(tol_rho, xfac(72), rho,
& delrho, Amat, Amat2, Amat3, Cmat, Cmat2, Cmat3,
& nq, ipol, Ex, qwght, ldew, func)
& nq, ipol, Ex, qwght, ldew, func, ' ')
endif
endif
c
if (abs(xfac(87)).gt.eps)then
if (.not. do_2nd .and..not. do_3rd) then
call xc_xncap(tol_rho, xfac(87), rho,
& delrho, Amat, Cmat, nq, ipol,
& Ex, qwght, ldew, func, 'r')
else if (.not. do_3rd) then
call xc_xncap_d2(tol_rho, xfac(87), rho,
& delrho, Amat, Amat2, Cmat, Cmat2, nq, ipol,
& Ex, qwght, ldew, func, 'r')
else
call xc_xncap_d3(tol_rho, xfac(87), rho,
& delrho, Amat, Amat2, Amat3, Cmat, Cmat2, Cmat3,
& nq, ipol, Ex, qwght, ldew, func, 'r')
endif
endif
c

View file

@ -32,19 +32,23 @@ c
c
#if !defined SECOND_DERIV && !defined THIRD_DERIV
Subroutine xc_xncap(tol_rho, fac, rho, delrho,
& Amat, Cmat, nq, ipol, Ex, qwght,ldew,func)
& Amat, Cmat, nq, ipol, Ex, qwght,ldew,func,
& version)
#elif defined(SECOND_DERIV) && !defined THIRD_DERIV
Subroutine xc_xncap_d2(tol_rho, fac, rho, delrho,
& Amat, Amat2, Cmat, Cmat2, nq, ipol, Ex,
& qwght,ldew,func)
& qwght,ldew,func,
& version)
#else
Subroutine xc_xncap_d3(tol_rho, fac, rho, delrho,
& Amat, Amat2, Amat3, Cmat, Cmat2, Cmat3,
& nq, ipol, Ex, qwght,ldew,func)
& nq, ipol, Ex, qwght,ldew,func,
& version)
#endif
c
implicit none
c
c
character*1 version
double precision fac, Ex
integer nq, ipol
logical ldew
@ -77,8 +81,7 @@ c
double precision ckf, Ax
double precision F43, F13, F23, F49
c
parameter(mu=0.2195149727645171d0, beta=0.01808569669d0)
parameter(zeta=0.30412141859531383d0)
parameter(mu=0.2195149727645171d0)
parameter (F43=4.d0/3.d0, F13=1.d0/3.d0, F23=2.0d0/3.0d0)
parameter (F49=4d0/9d0)
@ -105,6 +108,14 @@ c
d2arcsinh(s) = -s/dsqrt(1d0+s*s)**3
d3arcsinh(s) = (2d0*s*s - 1d0)/dsqrt(1d0+s*s)**5
c
if (version.eq.'r') then
zeta = 0.5d0
beta = 0.017983d0
else
zeta = 0.30412141859531383d0
beta = 0.01808569669d0
endif
pi = acos(-1.d0)
ckf = (3d0*pi*pi)**F13
Ax = -3d0/(4d0*pi)*ckf