### moved final file xch91

parent 8cc55f94
 ... @@ -24,10 +24,7 @@ xc-pot/xcpz.f90 ... @@ -24,10 +24,7 @@ xc-pot/xcpz.f90 xc-pot/xcvwn.f90 xc-pot/xcvwn.f90 xc-pot/xcwgn.f90 xc-pot/xcwgn.f90 xc-pot/xcxal.f90 xc-pot/xcxal.f90 ) xc-pot/xch91.f90 set(fleur_F77 \${fleur_F77} xc-pot/xch91.F ) ) set(inpgen_F90 \${inpgen_F90} set(inpgen_F90 \${inpgen_F90} ... @@ -51,10 +48,5 @@ xc-pot/xcpz.f90 ... @@ -51,10 +48,5 @@ xc-pot/xcpz.f90 xc-pot/xcvwn.f90 xc-pot/xcvwn.f90 xc-pot/xcwgn.f90 xc-pot/xcwgn.f90 xc-pot/xcxal.f90 xc-pot/xcxal.f90 xc-pot/xch91.f90 ) ) set(inpgen_F77 \${inpgen_F77} xc-pot/xch91.F )
 MODULE m_xch91 MODULE m_xch91 c.....----------------------------------------------------------------- !.....----------------------------------------------------------------- c gga91 exchange for a spin-unpolarized electronic system ! gga91 exchange for a spin-unpolarized electronic system c.....----------------------------------------------------------------- !.....----------------------------------------------------------------- c input d: density ! input d: density c s: abs(grad d)/(2*kf*d) ! s: abs(grad d)/(2*kf*d) c u: (grad d)*grad(abs(grad d))/(d**2 * (2*kf)**3) ! u: (grad d)*grad(abs(grad d))/(d**2 * (2*kf)**3) c v: (laplacian d)/(d*(2*kf)**2) ! v: (laplacian d)/(d*(2*kf)**2) c output: exchange energy (ex) and potential (vx) in ry. ! output: exchange energy (ex) and potential (vx) in ry. c kf=cbrt(3*pai**2*d). ! kf=cbrt(3*pai**2*d). c.....----------------------------------------------------------------- !.....----------------------------------------------------------------- CONTAINS CONTAINS SUBROUTINE xch91( SUBROUTINE xch91( & > d,s,u,v, d,s,u,v, & < exl,exg,vxl,vxg) exl,exg,vxl,vxg) IMPLICIT NONE IMPLICIT NONE REAL, INTENT (IN) :: d,s,u,v REAL, INTENT (IN) :: d,s,u,v REAL, INTENT (OUT) :: exl,exg,vxl,vxg REAL, INTENT (OUT) :: exl,exg,vxl,vxg REAL a,a1,a2,a3,a4,ax,b1,ex,f,fac,fs,fss, REAL :: a,a1,a2,a3,a4,ax,b1,ex,f,fac,fs,fss, & + p0,p1,p10,p11,p2,p3,p4,p5,p6,p7,p8,p9,s2,s3,s4, p0,p1,p10,p11,p2,p3,p4,p5,p6,p7,p8,p9,s2,s3,s4, & + thrd,thrd4,vx,a4s2,expsm thrd,thrd4,vx,a4s2,expsm c.....----------------------------------------------------------------- !.....----------------------------------------------------------------- c .. ! .. DATA a1,a2,a3,a4/0.19645,0.27430e0,0.15084e0,100.e0/ DATA a1,a2,a3,a4/0.19645,0.27430e0,0.15084e0,100.e0/ DATA ax,a,b1/-0.7385588e0,7.7956e0,0.004e0/ DATA ax,a,b1/-0.7385588e0,7.7956e0,0.004e0/ DATA thrd,thrd4/0.333333333333e0,1.33333333333e0/ DATA thrd,thrd4/0.333333333333e0,1.33333333333e0/ c.....----------------------------------------------------------------- !.....----------------------------------------------------------------- c expsm: argument of exponential-smallest. ! expsm: argument of exponential-smallest. expsm=minexponent(expsm)/1.5 expsm=minexponent(expsm)/1.5 fac = ax*d**thrd fac = ax*d**thrd ... @@ -44,11 +44,11 @@ c expsm: argument of exponential-smallest. ... @@ -44,11 +44,11 @@ c expsm: argument of exponential-smallest. p4 = 1.e0 + a1*s*p1 + (a2-a3*p2)*s2 p4 = 1.e0 + a1*s*p1 + (a2-a3*p2)*s2 f = p3*p4 f = p3*p4 ex = fac*f ex = fac*f c local exchange exl ! local exchange exl exl = fac exl = fac exg = ex - exl exg = ex - exl c energy done. now the potential: ! energy done. now the potential: p5 = b1*s2 - (a2-a3*p2) p5 = b1*s2 - (a2-a3*p2) p6 = a1*s* (p1+a*s*p0) p6 = a1*s* (p1+a*s*p0) p7 = 2.e0* (a2-a3*p2) + 2.e0*a3*a4*s2*p2 - 4.e0*b1*s2*f p7 = 2.e0* (a2-a3*p2) + 2.e0*a3*a4*s2*p2 - 4.e0*b1*s2*f ... @@ -59,15 +59,15 @@ c energy done. now the potential: ... @@ -59,15 +59,15 @@ c energy done. now the potential: p11 = -p3*p3* (a1*p1+a*a1*s*p0+4.e0*b1*s3) p11 = -p3*p3* (a1*p1+a*a1*s*p0+4.e0*b1*s3) fss = p3*p3* (p5*p9+p6*p8) + 2.e0*p3*p5*p6*p11 + p3*p10 + p7*p11 fss = p3*p3* (p5*p9+p6*p8) + 2.e0*p3*p5*p6*p11 + p3*p10 + p7*p11 vx = fac* (thrd4*f- (u-thrd4*s3)*fss-v*fs) vx = fac* (thrd4*f- (u-thrd4*s3)*fss-v*fs) c local exchange vxl: ! local exchange vxl: vxl = fac*thrd4 vxl = fac*thrd4 vxg = vx - vxl vxg = vx - vxl c in ry and energy density. ! in ry and energy density. exl = exl*2.e0*d exl = exl*2.e0*d exg = exg*2.e0*d exg = exg*2.e0*d vxl = vxl*2. vxl = vxl*2. vxg = vxg*2. vxg = vxg*2. END SUBROUTINE xch91 END SUBROUTINE xch91 END MODULE m_xch91 END MODULE m_xch91
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!