12 integer ik,jk,ikq,isym,nsk(3)
13 integer ist,jst,iw,n,nthd
18 real(8),
allocatable :: jlgqr(:,:),ddcs(:)
19 real(8),
allocatable :: e(:,:,:),f(:,:,:)
20 complex(8),
allocatable :: ylmgq(:),sfacgq(:)
21 complex(8),
allocatable :: expmt(:,:),emat(:,:)
28 v(:)=abs(v(:)-nint(v(:)))
31 write(*,
'("Error(elnes): q-vector incommensurate with k-point grid")')
32 write(*,
'(" ngridk : ",3I6)')
ngridk 33 write(*,
'(" vecql : ",3G18.10)')
vecql 55 call genexpmt(1,jlgqr,ylmgq,1,sfacgq,expmt)
56 deallocate(jlgqr,ylmgq,sfacgq)
70 write(*,
'("Info(elnes): ",I6," of ",I6," k-points")') ik,
nkptnr 85 t1=dble(emat(ist,jst))**2+aimag(emat(ist,jst))**2
100 call brzint(
nswplot,
ngridk,nsk,
ivkiknr,
nwplot,
wplot,n,n,e,f,ddcs)
103 if (q >
epslat) t1=t1/q**4
105 open(50,file=
'ELNES.OUT',form=
'FORMATTED')
109 w=dw*dble(iw-1)+
wplot(1)
110 write(50,
'(2G18.10)') w,ddcs(iw)
114 write(*,
'("Info(elnes):")')
115 write(*,
'(" ELNES double differential cross-section written to ELNES.OUT")')
118 deallocate(e,f,ddcs,expmt)
subroutine writetest(id, descr, nv, iv, iva, tol, rv, rva, zv, zva)
subroutine genexpmat(vpl, expmt, emat)
real(8), dimension(:,:), allocatable evalsv
subroutine gengqf(ng, vqpc, vgqc, gqc, jlgqr, ylmgq, sfacgq)
subroutine getevalsv(fext, ikp, vpl, evalsv_)
integer, dimension(:,:,:), allocatable ivkik
subroutine brzint(nsm, ngridk, nsk, ivkik, nw, wint, n, ld, e, f, g)
real(8), dimension(3) vecql
real(8), dimension(2) wplot
integer, dimension(3) ngridk
real(8), dimension(:,:), allocatable occsv
subroutine genexpmt(ngp, jlgpr, ylmgp, ld, sfacgp, expmt)
real(8), dimension(:,:), allocatable vkl
subroutine getoccsv(fext, ikp, vpl, occsvp)
subroutine holdthd(nloop, nthd)
subroutine findkpt(vpl, isym, ik)
integer, dimension(:,:), allocatable ivk
real(8), dimension(3) vecqc
integer, dimension(:,:,:), allocatable ivkiknr