mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-11-09 06:53:38 +01:00
29 lines
1.1 KiB
Fortran
29 lines
1.1 KiB
Fortran
|
double precision function ec_lyp2(RhoA,RhoB,GA,GB,GAB)
|
||
|
include 'constants.include.F'
|
||
|
implicit none
|
||
|
double precision, intent(in) :: RhoA,RhoB,GA,GB,GAB
|
||
|
double precision :: Tol,caa,cab,cac,cad,cae,RA,RB,comega,cdelta,cLaa,cLbb,cLab,E
|
||
|
ec_lyp2 = 0.d0
|
||
|
Tol=1D-14
|
||
|
E=2.718281828459045D0
|
||
|
caa=0.04918D0
|
||
|
cab=0.132D0
|
||
|
cac=0.2533D0
|
||
|
cad=0.349D0
|
||
|
cae=(2D0**(11D0/3D0))*((3D0/10D0)*((3D0*(Pi**2D0))**(2D0/3D0)))
|
||
|
|
||
|
|
||
|
RA = MAX(RhoA,0D0)
|
||
|
RB = MAX(RhoB,0D0)
|
||
|
IF ((RA.gt.Tol).OR.(RB.gt.Tol)) THEN
|
||
|
IF ((RA.gt.Tol).AND.(RB.gt.Tol)) THEN
|
||
|
comega = 1D0/(E**(cac/(RA+RB)**(1D0/3D0))*(RA+RB)**(10D0/3D0)*(cad+(RA+RB)**(1D0/3D0)))
|
||
|
cdelta = (cac+cad+(cac*cad)/(RA+RB)**(1D0/3D0))/(cad+(RA+RB)**(1D0/3D0))
|
||
|
cLaa = (cab*comega*RB*(RA-3D0*cdelta*RA-9D0*RB-((-11D0+cdelta)*RA**2D0)/(RA+RB)))/9D0
|
||
|
cLbb = (cab*comega*RA*(-9D0*RA+(RB*(RA-3D0*cdelta*RA-4D0*(-3D0+cdelta)*RB))/(RA+RB)))/9D0
|
||
|
cLab = cab*comega*(((47D0-7D0*cdelta)*RA*RB)/9D0-(4D0*(RA+RB)**2D0)/3D0)
|
||
|
ec_lyp2 = -(caa*(cLaa*GA+cLab*GAB+cLbb*GB+cab*cae*comega*RA*RB*(RA**(8D0/3D0)+RB**(8D0/3D0))+(4D0*RA*RB)/(RA+RB+cad*(RA+RB)**(2D0/3D0))))
|
||
|
endif
|
||
|
endif
|
||
|
end
|