30 integer ik,ist,ispn,idm
31 integer is,ia,ias,nthd
34 real(8) v(ndmag),t1,t2
36 complex(8) su2(2,2),z1
38 real(8),
allocatable :: evalfv(:,:)
40 real(4),
allocatable :: bc(:,:,:,:),elm(:,:)
41 complex(8),
allocatable :: ulm(:,:,:),dmat(:,:,:,:,:)
42 complex(8),
allocatable :: apwalm(:,:,:,:,:),evecfv(:,:,:),evecsv(:,:)
102 write(*,
'("Info(bandstr): ",I6," of ",I6," k-points")') ik,
nkpt 105 call eveqn(ik,evalfv,evecfv,evecsv)
111 sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn))
116 call gendmatk(tspndg,tlmdg,0,
lmaxdb,ias,
nstsv,[0],
ngk(:,ik),apwalm, &
119 if (.not.tlmdg)
call dmatulm(ulm(:,:,ias),dmat)
132 sm=sm+dble(dmat(lm,ispn,lm,ispn,ist))
142 sm=sm+dble(dmat(lm,ispn,lm,ispn,ist))
151 sm=sm+dble(dmat(lm,ispn,lm,ispn,ist))
153 bc(ispn,ias,ist,ik)=sm
159 t1=dble(dmat(lm,1,lm,1,ist))
160 t2=dble(dmat(lm,2,lm,2,ist))
161 v(ndmag)=v(ndmag)+t1-t2
163 z1=2.d0*dmat(lm,1,lm,2,ist)
168 bc(1:ndmag,ias,ist,ik)=v(1:ndmag)
176 deallocate(evalfv,evecfv,evecsv)
177 if (
task >= 21)
deallocate(dmat,apwalm)
190 open(50,file=
'BAND.OUT',form=
'FORMATTED',action=
'WRITE')
199 write(*,
'("Info(bandstr):")')
200 write(*,
'(" Band structure plot written to BAND.OUT")')
205 write(fname,
'("BAND_S",I2.2,"_A",I4.4,".OUT")') is,ia
206 open(50,file=trim(fname),form=
'FORMATTED',action=
'WRITE')
212 sm=sum(bc(0:
lmaxdb,ias,ist,ik))
213 write(50,
'(2G18.10,F12.6)',advance=
'NO')
dpp1d(ik),
evalsv(ist,ik),sm
215 write(50,
'(F12.6)',advance=
'NO') bc(l,ias,ist,ik)
219 write(50,
'(2G18.10)',advance=
'NO')
dpp1d(ik),
evalsv(ist,ik)
221 write(50,
'(F12.6)',advance=
'NO') bc(lm,ias,ist,ik)
225 write(50,
'(2G18.10,2F12.6)')
dpp1d(ik),
evalsv(ist,ik), &
226 (bc(ispn,ias,ist,ik),ispn=1,
nspinor)
228 write(50,
'(2G18.10,3F12.6)')
dpp1d(ik),
evalsv(ist,ik), &
229 (bc(idm,ias,ist,ik),idm=1,ndmag)
237 write(*,
'("Info(bandstr):")')
238 write(*,
'(" Band structure plot written to BAND_Sss_Aaaaa.OUT")')
239 write(*,
'(" for all species and atoms")')
241 write(*,
'(" Columns in the file are :")')
244 write(*,
'(" distance, eigenvalue, total atomic character, l character & 245 &(l = 0...",I1,")")')
lmaxdb 247 write(*,
'(" distance, eigenvalue, (l,m) character & 248 &(l = 0...",I1,", m = -l...l)")')
lmaxdb 251 write(*,
'(" Eigenvalues of a random matrix symmetrised with the site")')
252 write(*,
'(" symmetries in the Yₗₘ basis written to ELMIREP.OUT for all")')
253 write(*,
'(" species and atoms. Degenerate eigenvalues correspond to")')
254 write(*,
'(" irreducible representations of each site symmetry group")')
257 write(*,
'(" distance, eigenvalue, spin-up and spin-down characters")')
259 write(*,
'(" Spin-quantisation axis : ",3G18.10)')
sqaxis(:)
261 write(*,
'(" distance, eigenvalue, moment character")')
265 write(*,
'(" Fermi energy is at zero in plot")')
267 open(50,file=
'BANDLINES.OUT',form=
'FORMATTED',action=
'WRITE')
269 write(50,
'(2G18.10)')
dvp1d(iv),emin
270 write(50,
'(2G18.10)')
dvp1d(iv),emax
275 write(*,
'(" Vertex location lines written to BANDLINES.OUT")')
276 if (
task >= 21)
deallocate(bc)
277 if ((
task == 22).and.
lmirep)
deallocate(elm,ulm)
281 write(*,
'("Error(bandstr): spin-unpolarised calculation")')
real(8), dimension(:,:), allocatable evalsv
real(8), dimension(:), allocatable dpp1d
subroutine match(ngp, vgpc, gpc, sfacgp, apwalm)
subroutine dmatulm(ulm, dmat)
subroutine sqasu2(sqaxis, tsqaz, su2)
complex(8), dimension(:,:,:,:), allocatable sfacgk
subroutine genlmirep(elm, ulm)
integer, dimension(:,:), allocatable ngk
real(8), dimension(:), allocatable dvp1d
real(8), dimension(3) sqaxis
subroutine eveqn(ik, evalfv, evecfv, evecsv)
real(8), dimension(:,:,:,:), allocatable vgkc
subroutine gendmatk(tspndg, tlmdg, lmin, lmax, ias, nst, idx, ngp, apwalm, evecfv, evecsv, ld, dmat)
integer, dimension(maxatoms *maxspecies) idxis
real(8), dimension(:,:,:), allocatable gkc
subroutine writeelmirep(fext, elm)
subroutine holdthd(nloop, nthd)
integer, dimension(maxatoms *maxspecies) idxia
subroutine dmatsu2(lmmax, su2, dmat)