7subroutine xc_pbe(n,kappa,mu,beta,rhoup,rhodn,grho,gup,gdn,g2up,g2dn,g3rho, &
8 g3up,g3dn,ex,ec,vxup,vxdn,vcup,vcdn)
45integer,
intent(in) :: n
46real(8),
intent(in) :: kappa,mu,beta
47real(8),
intent(in) :: rhoup(n),rhodn(n)
48real(8),
intent(in) :: grho(n),gup(n),gdn(n)
49real(8),
intent(in) :: g2up(n),g2dn(n)
50real(8),
intent(in) :: g3rho(n),g3up(n),g3dn(n)
51real(8),
intent(out) :: ex(n),ec(n)
52real(8),
intent(out) :: vxup(n),vxdn(n)
53real(8),
intent(out) :: vcup(n),vcdn(n)
56real(8),
parameter :: thrd=1.d0/3.d0
57real(8),
parameter :: thrd2=2.d0/3.d0
58real(8),
parameter :: pi=3.1415926535897932385d0
59real(8) rup,rdn,r,r2,kf,s,u,v
62real(8) g2rho,exup,exdn
64 rup=rhoup(i); rdn=rhodn(i)
67 if ((rup >= 0.d0).and.(rdn >= 0.d0).and.(r > 1.d-12))
then
71 kf=(r2*3.d0*pi**2)**thrd
72 s=gup(i)/(2.d0*kf*rup)
73 u=g3up(i)/((rup**2)*(2.d0*kf)**3)
74 v=g2up(i)/(rup*(2.d0*kf)**2)
75 call x_pbe(kappa,mu,r2,s,u,v,exup,vxup(i))
78 kf=(r2*3.d0*pi**2)**thrd
79 s=gdn(i)/(2.d0*kf*rdn)
80 u=g3dn(i)/((rdn**2)*(2.d0*kf)**3)
81 v=g2dn(i)/(rdn*(2.d0*kf)**2)
82 call x_pbe(kappa,mu,r2,s,u,v,exdn,vxdn(i))
84 ex(i)=(exup*rhoup(i)+exdn*rhodn(i))/r
86 rs=(3.d0/(4.d0*pi*r))**thrd
87 z=(rhoup(i)-rhodn(i))/r
88 g=((1.d0+z)**thrd2+(1.d0-z)**thrd2)/2.d0
89 kf=(r*3.d0*pi**2)**thrd
93 uu=g3rho(i)/((r**2)*ksg**3)
96 ww=(gup(i)**2-gdn(i)**2-z*grho(i)**2)/(r*r*ksg**2)
97 call c_pbe(beta,rs,z,t,uu,vv,ww,ec(i),vcup(i),vcdn(i))
subroutine c_pbe(beta, rs, z, t, uu, vv, ww, ec, vcup, vcdn)
elemental subroutine x_pbe(kappa, mu, rho, s, u, v, ex, vx)
subroutine xc_pbe(n, kappa, mu, beta, rhoup, rhodn, grho, gup, gdn, g2up, g2dn, g3rho, g3up, g3dn, ex, ec, vxup, vxdn, vcup, vcdn)