32character(*),
intent(in) :: fext
33integer,
intent(in) :: ikp
34real(8),
intent(in) :: vpl(3),vgpl(3,ngkmax,nspnfv)
35complex(8),
intent(out) :: evecfv(nmatmax,nstfv,nspnfv)
38integer isym,lspl,ilspl,i,j
39integer jspn,ist,ilo,l,lm
40integer ik,ngk_,igp,igk,ig
41integer is,ia,ja,ias,jas
42integer recl,nmatmax_,nstfv_,nspnfv_
50complex(8),
allocatable :: evecfv_(:,:)
58fname=trim(
scrpath)//
'EVECFV'//trim(fext)
62 call getrd(fname,ik,tgs,v1=vkl_,n1=nmatmax_,n2=nstfv_,n3=nspnfv_, &
63 nzv=nmatmax*nstfv*nspnfv,zva=evecfv)
67inquire(iolength=recl) vkl_,nmatmax_,nstfv_,nspnfv_,evecfv
68open(202,
file=fname,form=
'UNFORMATTED',access=
'DIRECT',recl=recl)
69read(202,rec=ik) vkl_,nmatmax_,nstfv_,nspnfv_,evecfv
73t1=abs(
vkl(1,ik)-vkl_(1))+abs(
vkl(2,ik)-vkl_(2))+abs(
vkl(3,ik)-vkl_(3))
76 write(*,
'("Error(getevecfv): differing vectors for k-point ",I8)') ik
77 write(*,
'(" current : ",3G18.10)')
vkl(:,ik)
78 write(*,
'(" EVECFV.OUT : ",3G18.10)') vkl_
82if (nmatmax /= nmatmax_)
then
84 write(*,
'("Error(getevecfv): differing nmatmax for k-point ",I8)') ik
85 write(*,
'(" current : ",I8)') nmatmax
86 write(*,
'(" EVECFV.OUT : ",I8)') nmatmax_
90if (nstfv /= nstfv_)
then
92 write(*,
'("Error(getevecfv): differing nstfv for k-point ",I8)') ik
93 write(*,
'(" current : ",I8)') nstfv
94 write(*,
'(" EVECFV.OUT : ",I8)') nstfv_
98if (nspnfv /= nspnfv_)
then
100 write(*,
'("Error(getevecfv): differing nspnfv for k-point ",I8)') ik
101 write(*,
'(" current : ",I8)') nspnfv
102 write(*,
'(" EVECFV.OUT : ",I8)') nspnfv_
108t1=abs(vpl(1)-
vkl(1,ik))+abs(vpl(2)-
vkl(2,ik))+abs(vpl(3)-
vkl(3,ik))
111allocate(evecfv_(nmatmax,nstfv))
116si(1:3,1:3)=dble(
symlat(1:3,1:3,ilspl))
127 evecfv_(igk,ist)=evecfv(igk,ist,jspn)
134 ig=
igkig(igk,jspn,ik)
135 t1=
vgc(1,ig)*v(1)+
vgc(2,ig)*v(2)+
vgc(3,ig)*v(3)
136 z1=cmplx(cos(t1),-sin(t1),8)
137 evecfv_(igk,1:nstfv)=z1*evecfv(igk,1:nstfv,jspn)
149 t1=abs(v(1)-vgpl(1,igp,jspn)) &
150 +abs(v(2)-vgpl(2,igp,jspn)) &
151 +abs(v(3)-vgpl(3,igp,jspn))
153 evecfv(igp,1:nstfv,jspn)=evecfv_(igk,1:nstfv)
172 do i=ngk_+1,
nmat(jspn,ik)
173 evecfv_(i,1:nstfv)=evecfv(i,1:nstfv,jspn)
183 z1=cmplx(cos(t1),sin(t1),8)
185 z1=z1*cmplx(cos(t1),sin(t1),8)
190 i=ngk_+
idxlo(lm,ilo,ias)
191 j=ngk_+
idxlo(lm,ilo,jas)
193 evecfv_(j,1),evecfv(i,1,jspn))
194 evecfv(i:i+2*l,1:nstfv,jspn)=z1*evecfv(i:i+2*l,1:nstfv,jspn)
subroutine findkpt(vpl, isym, ik)
subroutine getevecfv(fext, ikp, vpl, vgpl, evecfv)
integer, dimension(48) isymlat
real(8), dimension(3, 3, 48) symlatc
integer, dimension(maxspecies) natoms
integer, dimension(:,:,:), allocatable ieqatom
integer, dimension(:,:,:), allocatable idxlo
integer, dimension(maxatoms, maxspecies) idxas
integer, dimension(:,:), allocatable ngk
integer, dimension(:,:,:), allocatable igkig
real(8), dimension(:,:,:,:), allocatable vgkl
logical, dimension(maxsymcrys) tv0symc
real(8), dimension(3, maxsymcrys) vtcsymc
real(8), dimension(:,:), allocatable vkl
integer, dimension(:,:), allocatable nmat
real(8), dimension(:,:), allocatable vgc
integer, dimension(maxspecies) nlorb
integer, dimension(3, 3, 48) symlat
real(8), dimension(3, maxatoms, maxspecies) atposl
integer, dimension(maxsymcrys) lsplsymc
integer, dimension(maxlorb, maxspecies) lorbl
type(file_t), dimension(:), allocatable, private file
subroutine getrd(fname, irec, tgs, n1, n2, n3, v1, v2, nrv, rva, nzv, zva)
pure subroutine r3mtv(a, x, y)
subroutine rotzflm(rot, lmin, lmax, lmmax, n, ld, zflm1, zflm2)