15 integer ik,jk,jspn,idm
16 integer is,ia,ias,ip,nthd
17 integer nmix,nwork,n,lp
19 integer,
parameter :: mtype=3
23 real(8),
allocatable :: evalfv(:,:),work(:)
24 complex(8),
allocatable :: dyn(:,:)
25 complex(8),
allocatable :: apwalm(:,:,:,:,:),apwalmq(:,:,:,:,:)
26 complex(8),
allocatable :: dapwalm(:,:,:,:),dapwalmq(:,:,:,:)
27 complex(8),
allocatable :: evecfv(:,:,:),devecfv(:,:,:)
28 complex(8),
allocatable :: evecsv(:,:),devecsv(:,:)
36 write(*,
'("Error(phonon): lmaxi too small for calculating DFPT phonons : ",& 38 write(*,
'(" Run the ground-state calculation again with lmaxi >= 2")')
44 write(*,
'("Error(phonon): spin-polarised phonons not yet available")')
51 write(*,
'("Error(phonon): ssdph should be .false. for DFPT phonons")')
86 write(*,
'("Info(phonon): working on ",A)')
'DYN'//trim(fext)
88 open(65,file=
'RMSDDVS'//trim(fext),form=
'FORMATTED')
150 sfacgk(:,:,jspn,ik),apwalm(:,:,:,:,jspn))
152 apwalm(:,:,:,:,jspn),dapwalm(:,:,:,jspn))
154 sfacgkq(:,:,jspn,ik),apwalmq(:,:,:,:,jspn))
156 apwalmq(:,:,:,:,jspn),dapwalmq(:,:,:,jspn))
165 igkqig(:,jspn,ik),
vgkc(:,:,jspn,ik),
vgkqc(:,:,jspn,ik),evalfv(:,jspn), &
166 apwalm(:,:,:,:,jspn),apwalmq(:,:,:,:,jspn),dapwalm(:,:,:,jspn), &
167 dapwalmq(:,:,:,jspn),evecfv(:,:,jspn),
devalfv(:,jspn,ik), &
189 call drhomagk(
ngk(:,ik),
ngkq(:,ik),
igkig(:,:,ik),
igkqig(:,:,ik), &
190 occsv(:,jk),
doccsv(:,ik),apwalm,apwalmq,dapwalm,evecfv,devecfv,evecsv, &
194 deallocate(evalfv,apwalm,apwalmq,dapwalm,dapwalmq)
195 deallocate(evecfv,devecfv,evecsv,devecsv)
220 call mpi_allreduce(mpi_in_place,
drhmg,n,mpi_double_complex,mpi_sum,
mpicom, &
234 write(65,
'(G18.10)') ddv
250 write(*,
'("Warning(phonon): failed to reach self-consistency after ",I0,& 269 if (abs(a) < 1.d-12) a=0.d0
270 if (abs(b) < 1.d-12) b=0.d0
271 write(80,
'(2G18.10," : is = ",I4,", ia = ",I4,", ip = ",I4)') a,b,is,ia,ip
subroutine zfmtctof(zfmt)
subroutine drhomagk(ngp, ngpq, igpig, igpqig, occsvp, doccsvp, apwalm, apwalmq, dapwalm, evecfv, devecfv, evecsv, devecsv)
complex(8), dimension(:,:), pointer, contiguous dmagir
subroutine getevecsv(fext, ikp, vpl, evecsv)
real(8), dimension(:,:), allocatable evalsv
complex(8), dimension(:,:), pointer, contiguous drhomt
real(8), dimension(:,:,:), allocatable gkqc
subroutine getevecfv(fext, ikp, vpl, vgpl, evecfv)
subroutine getevalsv(fext, ikp, vpl, evalsv_)
subroutine match(ngp, vgpc, gpc, sfacgp, apwalm)
integer, dimension(:,:,:), allocatable ivkik
subroutine dyntask(fnum, fext)
real(8), dimension(:,:), allocatable devalsv
complex(8), dimension(:,:,:,:), allocatable sfacgk
subroutine mixerifc(mtype, n, v, dv, nwork, work)
subroutine putdevecfv(ik, devecfv)
pure subroutine gengclgq(treg, iq, ngq, gqc, gclgq)
complex(8), dimension(:,:,:), pointer, contiguous dmagmt
integer, dimension(:,:), allocatable ngk
complex(8), dimension(:,:,:,:), allocatable sfacgkq
subroutine putdevecsv(ik, devecsv)
real(8), dimension(:,:), allocatable doccsv
real(8), dimension(:,:,:,:), allocatable vgkl
complex(8), dimension(:), allocatable, target drhmg
real(8), dimension(:,:,:), allocatable devalfv
real(8), dimension(maxspecies) spmass
real(8), dimension(:,:), allocatable occsv
subroutine getevalfv(fext, ikp, vpl, evalfv)
real(8), dimension(:,:,:,:), allocatable vgkc
real(8), dimension(:,:), allocatable vkl
subroutine delfiles(evec, devec, eval, occ, pmat, epsi)
integer, dimension(maxatoms *maxspecies) idxis
subroutine getoccsv(fext, ikp, vpl, occsvp)
real(8), dimension(:,:,:), allocatable gkc
subroutine deveqnfv(ngp, ngpq, igpig, igpqig, vgpc, vgpqc, evalfv, apwalm, apwalmq, dapwalm, dapwalmq, evecfv, devalfvp, devecfv)
complex(8), dimension(:), pointer, contiguous drhoir
subroutine zfirctof(zfirc, zfir)
complex(8), dimension(:), allocatable, target dvsbs
subroutine holdthd(nloop, nthd)
integer, dimension(:,:), allocatable ngkq
integer, dimension(maxatoms *maxspecies) idxia
real(8), dimension(:,:,:,:), allocatable vgkqc
real(8), dimension(:), allocatable gqc
pure subroutine dmatch(ias, ip, ngp, vgpc, apwalm, dapwalm)
integer, dimension(:,:,:), allocatable igkig
subroutine writedvs(fext)
integer, dimension(:,:), allocatable ivk
integer, dimension(:,:,:), allocatable igkqig
real(8), dimension(:), allocatable gclgq