19real(8) xrk(nkpt),xmk(ndmag,nkpt)
23complex(8),
allocatable :: evecsv(:,:),evecsvt(:,:)
25complex(8),
external :: zdotc
31allocate(evecsv(nstsv,nstsv),evecsvt(nstsv,nstsv))
42 if (
spinpol) xmk(1:ndmag,ik)=0.d0
49 z1=zdotc(nstsv,evecsv(:,jst),1,evecsvt(:,ist),1)
50 zv(1:nstsv)=zv(1:nstsv)+z1*evecsv(1:nstsv,jst)
55 t1=dble(zdotc(
nstfv,zv,1,zv,1))
56 t2=dble(zdotc(
nstfv,zv(i),1,zv(i),1))
58 xmk(ndmag,ik)=xmk(ndmag,ik)+t1-t2
60 z1=zdotc(
nstfv,zv,1,zv(i),1)
61 xmk(1,ik)=xmk(1,ik)+2.d0*z1%re
62 xmk(2,ik)=xmk(2,ik)+2.d0*z1%im
65 xrk(ik)=xrk(ik)+
occmax*dble(zdotc(nstsv,zv,1,zv,1))
70deallocate(evecsv,evecsvt)
77 call mpi_bcast(xrk(ik),1,mpi_double_precision,lp,
mpicom,
ierror)
78 call mpi_bcast(xmk(:,ik),3,mpi_double_precision,lp,
mpicom,
ierror)
82xchg=sum(
wkpt(1:nkpt)*xrk(1:nkpt))
85 write(fext,
'("_TS",I8.8,".OUT")')
itimes
87 open(50,file=
'XRHOK'//trim(fext),form=
'FORMATTED',action=
'WRITE')
89 write(50,
'(I6,4G18.10)') ik,
vkl(:,ik),xrk(ik)
94 open(50,file=
'XMAGK'//trim(fext),form=
'FORMATTED',action=
'WRITE')
96 write(50,
'(I6,6G18.10)') ik,
vkl(:,ik),xmk(:,ik)
102 open(50,file=
'XCHARGE_TD.OUT',form=
'FORMATTED',position=
'APPEND')
real(8), dimension(:), allocatable wkpt
real(8), dimension(:,:), allocatable vkl
real(8), dimension(:,:), allocatable evalsv