19real(8),
allocatable :: vmt(:,:),vir(:),bmt(:,:,:),bir(:,:)
20complex(8),
allocatable :: evecsv(:,:),evectv(:,:),evecsvt(:,:)
21complex(8),
allocatable :: kmat(:,:),pmat(:,:,:)
22complex(8),
allocatable :: a(:,:),b(:,:),c(:,:)
25 write(*,
'("Error(timestep): itimes >= ntimes : ",2I8)')
itimes,
ntimes
50allocate(evecsv(nstsv,nstsv),evectv(nstsv,nstsv),evecsvt(nstsv,nstsv))
51allocate(kmat(nstsv,nstsv),pmat(nstsv,nstsv,3))
52allocate(a(nstsv,nstsv),b(nstsv,nstsv),c(nstsv,nstsv))
62 call genhmlt(ik,vmt,vir,bmt,bir,kmat,pmat,evectv)
73 call eveqnzh(nstsv,nstsv,evectv,w)
78 call zgemm(
'N',
'N',nstsv,nstsv,nstsv,
zone,evecsv,nstsv,evectv,nstsv,
zzero,a, &
81 if (
tdphi == 0.d0)
then
85 z1=cmplx(cos(t1),sin(t1),8)
86 b(1:nstsv,i)=z1*a(1:nstsv,i)
94 b(1:nstsv,i)=z1*a(1:nstsv,i)
100 call zgemm(
'C',
'N',nstsv,nstsv,nstsv,
zone,a,nstsv,evecsvt,nstsv,
zzero,c,nstsv)
101 call zgemm(
'N',
'N',nstsv,nstsv,nstsv,
zone,b,nstsv,c,nstsv,
zzero,evecsvt,nstsv)
107 call engyknk(ik,kmat,evecsv,evecsvt)
109 call jtotk(ik,pmat,evecsv,evecsvt)
114deallocate(evecsv,evectv,evecsvt)
115deallocate(kmat,pmat,a,b,c)
119if (
spinpol)
deallocate(bmt,bir)
122 call mpi_allreduce(mpi_in_place,
engykn,1,mpi_double_precision,mpi_sum,
mpicom,&
124 call mpi_allreduce(mpi_in_place,
jtot,3,mpi_double_precision,mpi_sum,
mpicom, &
subroutine genhmlt(ik, vmt, vir, bmt, bir, kmat, pmat, h)
real(8), dimension(3) jtot
complex(8), parameter zzero
complex(8), parameter zone
real(8), dimension(:,:), allocatable vkl