summaryrefslogtreecommitdiff
path: root/src/labat/ggaec.f
diff options
context:
space:
mode:
Diffstat (limited to 'src/labat/ggaec.f')
-rw-r--r--src/labat/ggaec.f43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/labat/ggaec.f b/src/labat/ggaec.f
new file mode 100644
index 0000000..3177859
--- /dev/null
+++ b/src/labat/ggaec.f
@@ -0,0 +1,43 @@
1 subroutine ggaec(rs,zet,t,ec,h)
2c called by subroutine ggaexc
3c gga91 correlation
4c input rs : seitz radius
5c input zet : relative spin polarization
6c input t : abs(grad d)/(d*2.*ks*g)
7c input : correlation energy per electron (ec)
8c output h : nonlocal part of correlation energy per electron
9 implicit double precision (a-h,o-z)
10 data xnu,cc0,cx,alf/15.75592d0,0.004235d0,-0.001667212d0,0.09d0/
11 data c1,c2,c3,c4/0.002568d0,0.023266d0,7.389d-6,8.723d0/
12 data c5,c6,a4/0.472d0,7.389d-2,100.d0/
13 data thrd2/0.666666666667d0/
14 pi = 4.d0*datan(1.d0)
15 fk = 1.91915829d0/rs
16 sk = dsqrt(4.d0*fk/pi)
17 g = ((1.d0+zet)**thrd2+(1.d0-zet)**thrd2)/2.d0
18 bet = xnu*cc0
19 delt = 2.d0*alf/bet
20 g3 = g**3
21 g4 = g3*g
22 pon = -delt*ec/(g3*bet)
23 b = delt/(dexp(pon)-1.d0)
24 b2 = b*b
25 t2 = t*t
26 t4 = t2*t2
27 rs2 = rs*rs
28 rs3 = rs2*rs
29 q4 = 1.d0+b*t2
30 q5 = 1.d0+b*t2+b2*t4
31 q6 = c1+c2*rs+c3*rs2
32 q7 = 1.d0+c4*rs+c5*rs2+c6*rs3
33 cc = -cx + q6/q7
34 r0 = (sk/fk)**2
35 r1 = a4*r0*g4
36 coeff = cc-cc0-3.d0*cx/7.d0
37 r2 = xnu*coeff*g3
38 r3 = dexp(-r1*t2)
39 h0 = g3*(bet/delt)*dlog(1.d0+delt*q4*t2/q5)
40 h1 = r3*r2*t2
41 h = h0 + h1
42 return
43 end