9subroutine xc_pwca(n,rhoup,rhodn,ex,ec,vxup,vxdn,vcup,vcdn)
32integer,
intent(in) :: n
33real(8),
intent(in) :: rhoup(n),rhodn(n)
34real(8),
intent(out) :: ex(n),ec(n)
35real(8),
intent(out) :: vxup(n),vxdn(n)
36real(8),
intent(out) :: vcup(n),vcdn(n)
39real(8),
parameter :: pi=3.1415926535897932385d0
40real(8),
parameter :: thrd=1.d0/3.d0, thrd4=4.d0/3.d0
41real(8),
parameter :: d2f0=1.709921d0
42real(8),
parameter :: a(3)=[ 0.0310907d0, 0.01554535d0, 0.0168869d0 ]
43real(8),
parameter :: a1(3)=[ 0.21370d0, 0.20548d0, 0.11125d0 ]
44real(8),
parameter :: b1(3)=[ 7.5957d0, 14.1189d0, 10.357d0 ]
45real(8),
parameter :: b2(3)=[ 3.5876d0, 6.1977d0, 3.6231d0 ]
46real(8),
parameter :: b3(3)=[ 1.6382d0, 3.3662d0, 0.88026d0 ]
47real(8),
parameter :: b4(3)=[ 0.49294d0, 0.62517d0, 0.49671d0 ]
48real(8) p1,p2,p3,rup,rdn,r,ri,ri2
49real(8) rs,rs2,rs12,rs32,rsi,rs12i
50real(8) mz,z,z3,z4,drs,dzu,dzd
51real(8) fz,dfz,ders,dez,deu,ded
52real(8) a2,ec0,dec0,ec1,dec1,ac,dac
53real(8) t1,t2,t3,t4,t5,t6,t7,dt1,dt2
56 write(*,
'("Error(xc_pwca): n < 1 : ",I8)') n
63p2=t1*(9.d0*pi/4.d0)**thrd
64p3=1.d0/(2.d0**thrd4-2.d0)
66 rup=rhoup(i); rdn=rhodn(i)
69 if ((rup < 0.d0).or.(rdn < 0.d0).or.(r < 1.d-20))
then
131 t1=a2*(b1(1)*rs12+b2(1)*rs+b3(1)*rs32+b4(1)*rs2)
132 dt1=a2*(0.5d0*b1(1)*rs12i+b2(1)+1.5d0*b3(1)*rs12+2.d0*b4(1)*rs)
140 dec0=-a2*(a1(1)*t5+t4*t3*dt2)
143 t1=a2*(b1(2)*rs12+b2(2)*rs+b3(2)*rs32+b4(2)*rs2)
144 dt1=a2*(0.5d0*b1(2)*rs12i+b2(2)+1.5d0*b3(2)*rs12+2.d0*b4(2)*rs)
152 dec1=-a2*(a1(2)*t5+t4*t3*dt2)
155 t1=a2*(b1(3)*rs12+b2(3)*rs+b3(3)*rs32+b4(3)*rs2)
156 dt1=a2*(0.5d0*b1(3)*rs12i+b2(3)+1.5d0*b3(3)*rs12+2.d0*b4(3)*rs)
164 dac=a2*(a1(3)*t5+t4*t3*dt2)
170 ec(i)=ec0+ac*t2+t3*t4
173 ders=dec0+dac*t2+t5*t4
176 dez=(ac/d2f0)*(dfz*t1-t6)+t3*(dfz*z4+t6)