Commit 87f4143a authored by Daniel Wortmann's avatar Daniel Wortmann

Bugfixes for LO part of Hamiltonian setup. Was broken for multiple atoms with...

Bugfixes for LO part of Hamiltonian setup. Was broken for multiple atoms with LOs and inversion symmetry...
parent e76b6605
......@@ -58,7 +58,7 @@ CONTAINS
ALLOCATE(ax(MAXVAL(lapw%nv)),bx(MAXVAL(lapw%nv)),cx(MAXVAL(lapw%nv)))
ALLOCATE(abclo(3,-atoms%llod:atoms%llod,2*(2*atoms%llod+1),atoms%nlod,2))
DO i=MIN(iintsp,jintsp),MAX(iintsp,jintsp)
CALL hsmt_ab(sym,atoms,noco,isp,iintsp,ntyp,na,cell,lapw,fj,gj,ab(:,:),ab_size,.TRUE.,abclo(:,:,:,:,i),alo1,blo1,clo1)
CALL hsmt_ab(sym,atoms,noco,isp,i,ntyp,na,cell,lapw,fj,gj,ab(:,:),ab_size,.TRUE.,abclo(:,:,:,:,i),alo1,blo1,clo1)
ENDDO
......
......@@ -89,7 +89,7 @@ CONTAINS
DO lo = 1,atoms%nlo(n)
l = atoms%llo(lo,n)
DO nkvec=1,invsfct*(2*l+1)
IF (lapw%kvec(nkvec,lo,n)==k) THEN !This k-vector is used in LO
IF (lapw%kvec(nkvec,lo,na)==k) THEN !This k-vector is used in LO
ll1 = l*(l+1) + 1
DO m = -l,l
lm = ll1 + m
......
......@@ -86,7 +86,7 @@ CONTAINS
IF (MOD(locol-1,mpi%n_size).EQ.mpi%n_rank) THEN
locol=(locol-1)/mpi%n_size+1 !this is the column in local storage
!-t3e
k = lapw%kvec(nkvec,lo,ntyp)
k = lapw%kvec(nkvec,lo,na)
!---> calculate the overlap matrix elements with the regular
!---> flapw basis-functions
DO kp = 1,lapw%nv(jintsp)
......@@ -118,7 +118,7 @@ CONTAINS
blo1(lo)*ud%dulon(lop,ntyp,isp)+&
clo1(lo)*ud%uloulopn(lop,lo,ntyp,isp)))
DO nkvecp = 1,invsfct* (2*lp+1)
kp = lapw%kvec(nkvecp,lop,ntyp)
kp = lapw%kvec(nkvecp,lop,na)
lorow=lapw%nv(jintsp)+lapw%index_lo(lop,na)+nkvecp
dotp = dot_PRODUCT(lapw%gk(:,k,iintsp),lapw%gk(:,kp,jintsp))
IF (smat%l_real) THEN
......@@ -135,7 +135,7 @@ CONTAINS
!---> calculate the overlap matrix elements of one local
!---> orbital with itself
DO nkvecp = 1,nkvec
kp = lapw%kvec(nkvecp,lo,ntyp)
kp = lapw%kvec(nkvecp,lo,na)
lorow=lapw%nv(jintsp)+lapw%index_lo(lo,na)+nkvecp
dotp = dot_PRODUCT(lapw%gk(:,k,iintsp),lapw%gk(:,kp,jintsp))
IF (smat%l_real) THEN
......
......@@ -384,6 +384,7 @@ CONTAINS
DO n=1,atoms%ntype
DO nn=1,atoms%neq(n)
na=na+1
if (atoms%invsat(na)>1) cycle
!np = MERGE(oneD%ods%ngopr(na),sym%invtab(atoms%ngopr(na)),oneD%odi%d1)
np=sym%invtab(atoms%ngopr(na))
CALL priv_vec_for_lo(atoms,sym,na,n,np,noco,lapw,cell)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment