summaryrefslogtreecommitdiff
path: root/src/labat/exchpt.f
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2011-10-08 20:30:28 +0200
committerHenrik Rydberg <rydberg@euromail.se>2011-10-08 20:30:28 +0200
commit5df79c53745fde5d6c3340a2979b1429cd5892c1 (patch)
tree1a81af141708b826e9c61e8a04019994fcca8298 /src/labat/exchpt.f
Initial import of htcd system 1.0
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src/labat/exchpt.f')
-rw-r--r--src/labat/exchpt.f33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/labat/exchpt.f b/src/labat/exchpt.f
new file mode 100644
index 0000000..b44f49e
--- /dev/null
+++ b/src/labat/exchpt.f
@@ -0,0 +1,33 @@
1 subroutine exchpt(d,s,u,v,vx)
2c gga91 exchange potential for a spin-unpolarized electronic system
3c input d : density
4c input s : abs(grad d)/(2*kf*d)
5c input u : (grad d)*grad(abs(grad d))/(d**2 * (2*kf)**3)
6c input v : (laplacian d)/(d*(2*kf)**2)
7c output vx : exchange potential per electron
8 implicit double precision (a-h,o-z)
9 data a1,a2,a3,a4/0.19645d0,0.27430d0,0.15084d0,100.d0/
10 data ax,a,b1/-0.7385588d0,7.7956d0,0.004d0/
11 data thrd,thrd4/0.333333333333d0,1.33333333333d0/
12 fac = ax*d**thrd
13 s2 = s*s
14 s3 = s2*s
15 s4 = s2*s2
16 p0 = 1.d0/dsqrt(1.d0+a*a*s2)
17 p1 = dlog(a*s+1.d0/p0)
18 p2 = dexp(-a4*s2)
19 p3 = 1.d0/(1.d0+a1*s*p1+b1*s4)
20 p4 = 1.d0+a1*s*p1+(a2-a3*p2)*s2
21 f = p3*p4
22 p5 = b1*s2-(a2-a3*p2)
23 p6 = a1*s*(p1+a*s*p0)
24 p7 = 2.d0*(a2-a3*p2)+2.d0*a3*a4*s2*p2-4.d0*b1*s2*f
25 fs = p3*(p3*p5*p6+p7)
26 p8 = 2.d0*s*(b1-a3*a4*p2)
27 p9 = a1*p1+a*a1*s*p0*(3.d0-a*a*s2*p0*p0)
28 p10 = 4.d0*a3*a4*s*p2*(2.d0-a4*s2)-8.d0*b1*s*f-4.d0*b1*s3*fs
29 p11 = -p3*p3*(a1*p1+a*a1*s*p0+4.d0*b1*s3)
30 fss = p3*p3*(p5*p9+p6*p8)+2.d0*p3*p5*p6*p11+p3*p10+p7*p11
31 vx = fac*(thrd4*f-(u-thrd4*s3)*fss-v*fs)
32 return
33 end