VMN forms for exchange correlation
double exc(double rs)
{
/* constants */
const double
pi = 4.*atan(1.),
X1 = 0.75*pow(3.0/(2.0*pi),2.0/3.0), /* Exchange energy coeff */
A = 0.0310907,
x0 = -0.10498,
b = 3.72744,
c = 12.9352,
Q = sqrt(4*c-b*b),
X0 = x0*x0+b*x0+c;
double x=sqrt(rs),X=x*x+b*x+c;
return -X1/rs
+ A*(
+log(x*x/X)+2*b/Q*atan(Q/(2*x+b))
-(b*x0)/X0*(
log((x-x0)*(x-x0)/X)+2*(2*x0+b)/Q*atan(Q/(2*x+b))
)
);
}
double excp(double rs)
{
/* constants */
const double
pi = 4.*atan(1.),
X1 = 0.75*pow(3.0/(2.0*pi),2.0/3.0), /* Exchange energy coeff */
A = 0.0310907,
x0 = -0.10498,
b = 3.72744,
c = 12.9352,
Q = sqrt(4*c-b*b),
X0 = x0*x0+b*x0+c;
double x=sqrt(rs),X=x*x+b*x+c;
double dx=0.5/x; /* Chain rule needs dx/drho! */
return dx*(
2*X1/(rs*x)+A*(
2./x-(2*x+b)/X-4*b/(Q*Q+(2*x+b)*(2*x+b))
-(b*x0)/X0*(2/(x-x0)-(2*x+b)/X-4*(2*x0+b)/
(Q*Q+(2*x+b)*(2*x+b)) )
)
);
}
Tomas Arias
2007-03-07