29 logical tspndg,tlmdg,tsqaz
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(:,:)
106 write(*,
'("Info(bandstr): ",I0," of ",I0," k-points")') ik,
nkpt 109 call eveqn(ik,evalfv,evecfv,evecsv)
115 sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn))
120 call gendmatk(tspndg,tlmdg,0,
lmaxdb,ias,
nstsv,[0],
ngk(:,ik),apwalm, &
123 if (.not.tlmdg)
call dmatulm(ulm(:,:,ias),dmat)
136 sm=sm+dble(dmat(lm,ispn,lm,ispn,ist))
146 sm=sm+dble(dmat(lm,ispn,lm,ispn,ist))
155 sm=sm+dble(dmat(lm,ispn,lm,ispn,ist))
157 bc(ispn,ias,ist,ik)=sm
163 t1=dble(dmat(lm,1,lm,1,ist))
164 t2=dble(dmat(lm,2,lm,2,ist))
165 v(ndmag)=v(ndmag)+t1-t2
167 z1=2.d0*dmat(lm,1,lm,2,ist)
172 bc(1:ndmag,ias,ist,ik)=v(1:ndmag)
180 deallocate(evalfv,evecfv,evecsv)
181 if (
task >= 21)
deallocate(dmat,apwalm)
194 open(50,file=
'BAND.OUT',form=
'FORMATTED',action=
'WRITE')
203 write(*,
'("Info(bandstr):")')
204 write(*,
'(" Band structure plot written to BAND.OUT")')
209 write(fname,
'("BAND_S",I2.2,"_A",I4.4,".OUT")') is,ia
210 open(50,file=trim(fname),form=
'FORMATTED',action=
'WRITE')
216 sm=sum(bc(0:
lmaxdb,ias,ist,ik))
217 write(50,
'(2G18.10,F12.6)',advance=
'NO')
dpp1d(ik),
evalsv(ist,ik),sm
219 write(50,
'(F12.6)',advance=
'NO') bc(l,ias,ist,ik)
223 write(50,
'(2G18.10)',advance=
'NO')
dpp1d(ik),
evalsv(ist,ik)
225 write(50,
'(F12.6)',advance=
'NO') bc(lm,ias,ist,ik)
229 write(50,
'(2G18.10,2F12.6)')
dpp1d(ik),
evalsv(ist,ik), &
230 (bc(ispn,ias,ist,ik),ispn=1,
nspinor)
232 write(50,
'(2G18.10,3F12.6)')
dpp1d(ik),
evalsv(ist,ik), &
233 (bc(idm,ias,ist,ik),idm=1,ndmag)
241 write(*,
'("Info(bandstr):")')
242 write(*,
'(" Band structure plot written to BAND_Sss_Aaaaa.OUT")')
243 write(*,
'(" for all species and atoms")')
245 write(*,
'(" Columns in the file are :")')
248 write(*,
'(" distance, eigenvalue, total atomic character, l character & 249 &(l = 0...",I0,")")')
lmaxdb 251 write(*,
'(" distance, eigenvalue, (l,m) character & 252 &(l = 0...",I0,", m = -l...l)")')
lmaxdb 255 write(*,
'(" Eigenvalues of a random matrix symmetrised with the site")')
256 write(*,
'(" symmetries in the Yₗₘ basis written to ELMIREP.OUT for all")')
257 write(*,
'(" species and atoms. Degenerate eigenvalues correspond to")')
258 write(*,
'(" irreducible representations of each site symmetry group")')
261 write(*,
'(" distance, eigenvalue, spin-up and spin-down characters")')
263 write(*,
'(" Spin-quantisation axis : ",3G18.10)')
sqaxis(:)
265 write(*,
'(" distance, eigenvalue, moment character")')
269 write(*,
'(" Fermi energy is at zero in plot")')
271 open(50,file=
'BANDLINES.OUT',form=
'FORMATTED',action=
'WRITE')
273 write(50,
'(2G18.10)')
dvp1d(iv),emin
274 write(50,
'(2G18.10)')
dvp1d(iv),emax
279 write(*,
'(" Vertex location lines written to BANDLINES.OUT")')
280 if (
task >= 21)
deallocate(bc)
281 if ((
task == 22).and.
lmirep)
deallocate(elm,ulm)
285 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)