12logical,
intent(in) :: tsh
13real(8),
intent(out) :: fxcmt(npmtmax,natmtot),fxcir(ngtot)
16integer nr,nri,ir,np,i,n
18real(8),
allocatable :: rho(:),rhoup(:),rhodn(:),mag(:,:)
19real(8),
allocatable :: fxc(:),fxcuu(:),fxcud(:),fxcdd(:)
22allocate(rho(n),fxc(n))
26 allocate(rhoup(n),rhodn(n))
27 allocate(fxcuu(n),fxcud(n),fxcdd(n))
51 t1=sqrt(mag(i,1)**2+mag(i,2)**2+mag(i,3)**2)
52 rhoup(i)=0.5d0*(rho(i)+t1)
53 rhodn(i)=0.5d0*(rho(i)-t1)
59 rhoup(i)=0.5d0*(rho(i)+mag(i,1))
60 rhodn(i)=0.5d0*(rho(i)-mag(i,1))
64 call fxcifc(
fxctype,n=np,rhoup=rhoup,rhodn=rhodn,fxcuu=fxcuu,fxcud=fxcud, &
68 fxc(i)=0.25d0*(fxcuu(i)+2.d0*fxcud(i)+fxcdd(i))
78 call rfsht(nr,nri,fxc,fxcmt(:,ias))
80 fxcmt(1:np,ias)=fxc(1:np)
94 rhoup(ir)=0.5d0*(
rhoir(ir)+t1)
95 rhodn(ir)=0.5d0*(
rhoir(ir)-t1)
105 call fxcifc(
fxctype,n=ngtot,rhoup=rhoup,rhodn=rhodn,fxcuu=fxcuu,fxcud=fxcud, &
108 fxcir(ir)=0.25d0*(fxcuu(ir)+2.d0*fxcud(ir)+fxcdd(ir))
118 deallocate(mag,rhoup,rhodn)
119 deallocate(fxcuu,fxcud,fxcdd)
subroutine fxcifc(fxctype, n, rho, rhoup, rhodn, fxc, fxcuu, fxcud, fxcdd)
integer, dimension(maxspecies) nrmti
real(8), dimension(:,:,:), pointer, contiguous magmt
integer, dimension(maxspecies) nrmt
real(8), dimension(:), pointer, contiguous rhoir
integer, dimension(maxatoms *maxspecies) idxis
real(8), dimension(:,:), pointer, contiguous magir
integer, dimension(maxspecies) npmt
real(8), dimension(:,:), pointer, contiguous rhomt