mirror of https://gitlab.com/QEF/q-e.git
Bug fix: In particular cases the order of the orbitals was not correct.
(A. Smogunov and ADC) (Bug found by G. Sclauzero). git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3151 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
b7a43ee927
commit
43ac7466b7
|
@ -35,7 +35,7 @@ subroutine init_orbitals (zlen, bd1, bd2, z, nrz, rsph, lsr)
|
||||||
|
|
||||||
integer :: noins, lnocros, rnocros, nocros, norb, na, nt, ih, ih1,&
|
integer :: noins, lnocros, rnocros, nocros, norb, na, nt, ih, ih1,&
|
||||||
ioins, ilocros, irocros, orbin, orbfin, ib, lsr, nrz, &
|
ioins, ilocros, irocros, orbin, orbfin, ib, lsr, nrz, &
|
||||||
m, k, ipol, iorb, iorb1, is
|
m, k, ipol, iorb, iorb1, ind, is
|
||||||
integer, allocatable :: orbind(:,:), tblm(:,:), cros(:,:), natih(:,:)
|
integer, allocatable :: orbind(:,:), tblm(:,:), cros(:,:), natih(:,:)
|
||||||
real(DP), parameter :: eps=1.d-8
|
real(DP), parameter :: eps=1.d-8
|
||||||
real(DP) :: ledge, redge, ledgel, redgel, ledger, redger, &
|
real(DP) :: ledge, redge, ledgel, redgel, ledger, redger, &
|
||||||
|
@ -197,27 +197,35 @@ subroutine init_orbitals (zlen, bd1, bd2, z, nrz, rsph, lsr)
|
||||||
!
|
!
|
||||||
! order orbital in order of increasing taunew
|
! order orbital in order of increasing taunew
|
||||||
!
|
!
|
||||||
do iorb=1,ilocros
|
do iorb=1,lnocros
|
||||||
do iorb1=iorb+1,ilocros
|
do iorb1=iorb+1,lnocros
|
||||||
if (taunew(3,iorb1).lt.taunew(3,iorb)-1.d-8) &
|
if (taunew(3,iorb1).lt.taunew(3,iorb)-1.d-8) then
|
||||||
call exchange(natih(1,iorb),tblm(1,iorb),taunew(1,iorb), &
|
do ind=iorb,iorb1-1
|
||||||
natih(1,iorb1),tblm(1,iorb1),taunew(1,iorb1) )
|
call exchange(natih(1,ind),tblm(1,ind),taunew(1,ind), &
|
||||||
|
natih(1,iorb1),tblm(1,iorb1),taunew(1,iorb1) )
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
do iorb=lnocros+1,lnocros+noins
|
do iorb=lnocros+1,lnocros+noins
|
||||||
do iorb1=iorb+1,lnocros+noins
|
do iorb1=iorb+1,lnocros+noins
|
||||||
if (taunew(3,iorb1).lt.taunew(3,iorb)-1.d-8) &
|
if (taunew(3,iorb1).lt.taunew(3,iorb)-1.d-8) then
|
||||||
call exchange(natih(1,iorb),tblm(1,iorb),taunew(1,iorb), &
|
do ind=iorb,iorb1-1
|
||||||
|
call exchange(natih(1,ind),tblm(1,ind),taunew(1,ind), &
|
||||||
natih(1,iorb1),tblm(1,iorb1),taunew(1,iorb1) )
|
natih(1,iorb1),tblm(1,iorb1),taunew(1,iorb1) )
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
do iorb=lnocros+noins+1,lnocros+noins+rnocros
|
do iorb=lnocros+noins+1,lnocros+noins+rnocros
|
||||||
do iorb1=iorb+1,lnocros+noins+rnocros
|
do iorb1=iorb+1,lnocros+noins+rnocros
|
||||||
if (taunew(3,iorb1).lt.taunew(3,iorb)-1.d-8) then
|
if (taunew(3,iorb1).lt.taunew(3,iorb)-1.d-8) then
|
||||||
call exchange(natih(1,iorb),tblm(1,iorb),taunew(1,iorb), &
|
do ind=iorb,iorb1-1
|
||||||
natih(1,iorb1),tblm(1,iorb1),taunew(1,iorb1) )
|
call exchange(natih(1,ind),tblm(1,ind),taunew(1,ind), &
|
||||||
|
natih(1,iorb1),tblm(1,iorb1),taunew(1,iorb1) )
|
||||||
|
enddo
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
Loading…
Reference in New Issue