30integer is,ia,ja,ias,jas
31integer nr,nri,iro,ir,i,j
32integer i0,i1,nn,l,info
33integer ilo,jlo,io,jo,nthd
37real(8) vr(nrmtmax),p0(nrmtmax,lorbordmax),p1(nrmtmax)
38real(8) q0(nrmtmax),q1(nrmtmax),ep0(nrmtmax,lorbordmax)
39real(8) p0c(nrmtmax,nlomax),ep0c(nrmtmax,nlomax)
40real(8) a(nplorb,nplorb),b(nplorb)
42real(8),
external :: polynm
57 if (.not.
tfeqat(ia,is)) cycle
75 call rschrodint(
solsc,l,e,nr,
rlmt(:,1,is),vr,nn,p0(:,jo),p1,q0,q1)
77 p0(1:nr,jo)=p0(1:nr,jo)*
rlmt(1:nr,-1,is)
79 ep0(1:nr,jo)=e*p0(1:nr,jo)
91 call dgesv(
lorbord(ilo,is),1,a,nplorb,ipiv,b,nplorb,info)
98 p0c(1:nr,ilo)=p0c(1:nr,ilo)+t1*p0(1:nr,io)
99 ep0c(1:nr,ilo)=ep0c(1:nr,ilo)+t1*ep0(1:nr,io)
102 t1=sum(
wr2mt(1:nr,is)*p0c(1:nr,ilo)**2)
103 t1=1.d0/sqrt(abs(t1))
104 p0c(1:nr,ilo)=t1*p0c(1:nr,ilo)
105 ep0c(1:nr,ilo)=t1*ep0c(1:nr,ilo)
109 if (
lorbl(jlo,is) == l)
then
110 t1=-sum(
wr2mt(1:nr,is)*p0c(1:nr,ilo)*p0c(1:nr,jlo))
111 p0c(1:nr,ilo)=p0c(1:nr,ilo)+t1*p0c(1:nr,jlo)
112 ep0c(1:nr,ilo)=ep0c(1:nr,ilo)+t1*ep0c(1:nr,jlo)
117 t1=abs(sum(
wr2mt(1:nr,is)*p0c(1:nr,ilo)**2))
118 if (t1 < 1.d-25)
call errstp
120 p0c(1:nr,ilo)=t1*p0c(1:nr,ilo)
121 ep0c(1:nr,ilo)=t1*ep0c(1:nr,ilo)
124 lofr(1:nr,1,ilo,ias)=p0c(1:nr,ilo)
125 lofr(1:nr,2,ilo,ias)=ep0c(1:nr,ilo)
129 if (
eqatoms(ia,ja,is).and.(ia /= ja))
then
132 lofr(1:nr,1:2,ilo,jas)=
lofr(1:nr,1:2,ilo,ias)
156write(*,
'("Error(genlofr): degenerate local-orbital radial functions")')
157write(*,
'(" for species ",I4)') is
158write(*,
'(" atom ",I4)') ia
159write(*,
'(" and local-orbital ",I4)') ilo
integer, dimension(maxspecies) nrmti
logical, dimension(:,:), allocatable tfeqat
integer, dimension(maxspecies) nrmt
integer, dimension(maxspecies) natoms
real(8), dimension(maxspecies) rmt
integer, dimension(maxatoms, maxspecies) idxas
integer, dimension(maxspecies) nrcmt
integer, dimension(maxatoms *maxspecies) idxia
integer, dimension(maxatoms *maxspecies) idxis
integer, dimension(maxlorbord, maxlorb, maxspecies) lorbdm
real(4), dimension(:,:,:), allocatable lofr_sp
integer, dimension(maxlorb, maxspecies) lorbord
integer, dimension(maxlorb, maxspecies) idxelo
real(8), dimension(:,:), pointer, contiguous vsmt
logical, dimension(:,:,:), allocatable eqatoms
real(8), dimension(:,:), allocatable wr2mt
integer, dimension(maxspecies) nlorb
real(8), dimension(:,:,:), allocatable rlmt
real(8), dimension(:,:,:,:), allocatable lofr
integer, dimension(maxlorb, maxspecies) lorbl
real(8), dimension(:,:,:), allocatable lorbe
pure subroutine rschrodint(sol, l, e, nr, r, vr, nn, p0, p1, q0, q1)