15integer ik,jk,iv(3),jspn,idm
16integer is,ia,ias,ip,nthd
17integer nmix,nwork,n,lp
19integer,
parameter :: mtype=3
23real(8),
allocatable :: evalfv(:,:),work(:)
24complex(8),
allocatable :: dyn(:,:)
25complex(8),
allocatable :: apwalm(:,:,:,:,:),apwalmq(:,:,:,:,:)
26complex(8),
allocatable :: dapwalm(:,:,:,:),dapwalmq(:,:,:,:)
27complex(8),
allocatable :: evecfv(:,:,:),devecfv(:,:,:)
28complex(8),
allocatable :: evecsv(:,:),devecsv(:,:)
36if ((iv(1) /= 0).or.(iv(2) /= 0).or.(iv(3) /= 0))
then
38 write(*,
'("Error(phonon): k-point grid incommensurate with q-point grid")')
39 write(*,
'(" ngridk : ",3I6)')
ngridk
40 write(*,
'(" ngridq : ",3I6)')
ngridq
46 write(*,
'("Error(phonon): lmaxi too small for calculating DFPT phonons : ",&
48 write(*,
'(" Run the ground-state calculation again with lmaxi >= 2")')
54 write(*,
'("Error(phonon): spin-polarised phonons not yet available")')
61 write(*,
'("Error(phonon): ssdph should be .false. for DFPT phonons")')
96 write(*,
'("Info(phonon): working on ",A)')
'DYN'//trim(fext)
98 open(65,file=
'RMSDDVS'//trim(fext),form=
'FORMATTED')
164 sfacgk(:,:,jspn,ik),apwalm(:,:,:,:,jspn))
166 apwalm(:,:,:,:,jspn),dapwalm(:,:,:,jspn))
168 sfacgkq(:,:,jspn,ik),apwalmq(:,:,:,:,jspn))
170 apwalmq(:,:,:,:,jspn),dapwalmq(:,:,:,jspn))
179 igkqig(:,jspn,ik),
vgkc(:,:,jspn,ik),
vgkqc(:,:,jspn,ik),evalfv(:,jspn), &
180 apwalm(:,:,:,:,jspn),apwalmq(:,:,:,:,jspn),dapwalm(:,:,:,jspn), &
181 dapwalmq(:,:,:,jspn),evecfv(:,:,jspn),
devalfv(:,jspn,ik), &
203 call drhomagk(
ngk(:,ik),
ngkq(:,ik),
igkig(:,:,ik),
igkqig(:,:,ik), &
204 occsv(:,jk),
doccsv(:,ik),apwalm,apwalmq,dapwalm,evecfv,devecfv,evecsv, &
208 deallocate(evalfv,apwalm,apwalmq,dapwalm,dapwalmq)
209 deallocate(evecfv,devecfv,evecsv,devecsv)
234 call mpi_allreduce(mpi_in_place,
drhomt,n,mpi_double_complex,mpi_sum, &
236 call mpi_allreduce(mpi_in_place,
drhoir,
ngtot,mpi_double_complex,mpi_sum, &
240 call mpi_allreduce(mpi_in_place,
dmagmt,n,mpi_double_complex,mpi_sum, &
243 call mpi_allreduce(mpi_in_place,
dmagir,n,mpi_double_complex,mpi_sum, &
258 write(65,
'(G18.10)') ddv
274write(*,
'("Warning(phonon): failed to reach self-consistency after ",I4,&
293 if (abs(a) < 1.d-12) a=0.d0
294 if (abs(b) < 1.d-12) b=0.d0
295 write(80,
'(2G18.10," : is = ",I4,", ia = ",I4,", ip = ",I4)') a,b,is,ia,ip
subroutine deveqnfv(ngp, ngpq, igpig, igpqig, vgpc, vgpqc, evalfv, apwalm, apwalmq, dapwalm, dapwalmq, evecfv, devalfvp, devecfv)
pure subroutine dmatch(ias, ip, ngp, vgpc, apwalm, dapwalm)
subroutine drhomagk(ngp, ngpq, igpig, igpqig, occsvp, doccsvp, apwalm, apwalmq, dapwalm, evecfv, devecfv, evecsv, devecsv)
subroutine dyntask(fnum, fext)
pure subroutine gengclgq(treg, iq, ngq, gqc, gclgq)
subroutine getevalfv(fext, ikp, vpl, evalfv)
subroutine getevalsv(fext, ikp, vpl, evalsv_)
subroutine getevecfv(fext, ikp, vpl, vgpl, evecfv)
subroutine getevecsv(fext, ikp, vpl, evecsv)
subroutine getoccsv(fext, ikp, vpl, occsvp)
subroutine match(ngp, vgpc, gpc, sfacgp, apwalm)
subroutine mixerifc(mtype, n, v, dv, nwork, work)
subroutine delfiles(evec, devec, eval, occ, pmat, epsi)
real(8), dimension(:,:,:,:), allocatable vgkc
real(8), dimension(:,:,:), allocatable gkc
integer, dimension(:,:), allocatable ngk
integer, dimension(:,:,:), allocatable igkig
integer, dimension(:,:), allocatable ivk
integer, dimension(maxatoms *maxspecies) idxia
integer, dimension(maxatoms *maxspecies) idxis
real(8), dimension(:,:,:,:), allocatable vgkl
integer, dimension(3) ngridk
real(8), dimension(:,:), allocatable vkl
integer, dimension(:,:,:), allocatable ivkik
complex(8), dimension(:,:,:,:), allocatable sfacgk
integer, dimension(3) ngridq
real(8), dimension(:,:), allocatable occsv
real(8), dimension(:,:), allocatable evalsv
real(8), dimension(maxspecies) spmass
subroutine holdthd(nloop, nthd)
integer, dimension(:,:), allocatable ngkq
complex(8), dimension(:,:,:,:), allocatable sfacgkq
real(8), dimension(:,:), allocatable doccsv
real(8), dimension(:,:,:,:), allocatable vgkqc
real(8), dimension(:), allocatable gclgq
real(8), dimension(:), allocatable gqc
complex(8), dimension(:,:,:), allocatable dmagmt
real(8), dimension(:,:), allocatable devalsv
complex(8), dimension(:,:), allocatable dmagir
complex(8), dimension(:), allocatable drhoir
complex(8), dimension(:,:), allocatable drhomt
real(8), dimension(:,:,:), allocatable devalfv
real(8), dimension(:,:,:), allocatable gkqc
integer, dimension(:,:,:), allocatable igkqig
complex(8), dimension(:), allocatable, target dvsbs
subroutine putdevecfv(ik, devecfv)
subroutine putdevecsv(ik, devecsv)
subroutine writedvs(fext)
subroutine zfirctof(zfirc, zfir)
subroutine zfmtctof(zfmt)