Commit d78dba2b authored by Gregor Michalicek's avatar Gregor Michalicek

Fixed erroneous generation of additional identity symmetry matrices

Time reversal symmetry is exploited to increase the number of symmetry
operations used for the generation of the Brillouin zone iff no inversion
symmetry is present. So far the inverse of each symmetry operation was
added, ignoring translation vectors. However, this could lead to further
identity symmetry operations which caused problems as this matrix has
to be excluded for several code parts.

The fix was developed in collaboration with D. Wortmann.
parent edf3dddd
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
REAL kzero(3) ! shifting vector to bring one k-point to or REAL kzero(3) ! shifting vector to bring one k-point to or
! away from (0,0,0) (for even/odd nmop) ! away from (0,0,0) (for even/odd nmop)
INTEGER i,j,k,l,idiv,mkpt INTEGER i,j,k,l,idiv,mkpt,addSym
INTEGER iofile,iokpt,kpri,ktest,kmidtet INTEGER iofile,iokpt,kpri,ktest,kmidtet
INTEGER idivis(3) INTEGER idivis(3)
LOGICAL random,trias LOGICAL random,trias
...@@ -229,9 +229,20 @@ ...@@ -229,9 +229,20 @@
IF ( (input%film.AND.(.not.sym%invs2)).OR.& IF ( (input%film.AND.(.not.sym%invs2)).OR.&
& ((.not.input%film).AND.(.not.sym%invs)) ) THEN & ((.not.input%film).AND.(.not.sym%invs)) ) THEN
ccr(:,:,sym%nsym+1:2*sym%nsym ) = -ccr(:,:,1:sym%nsym) addSym = 0
rlsymr(:,:,sym%nsym+1:2*sym%nsym ) = -rlsymr(:,:,1:sym%nsym) ! Note: We have to add the negative of each symmetry operation
sym%nsym = 2 * sym%nsym ! to exploit time reversal symmetry. However, if the new
! symmetry operation is the identity matrix it is excluded.
! This is the case iff it is (-Id) + a translation vector.
DO i = 1, sym%nsym
! This test assumes that ccr(:,:,1) is the identity matrix.
IF(.NOT.ALL(ABS(ccr(:,:,1)+ccr(:,:,i)).LT.10e-10) ) THEN
ccr(:,:,sym%nsym+addSym+1 ) = -ccr(:,:,i)
rlsymr(:,:,sym%nsym+addSym+1 ) = -rlsymr(:,:,i)
addSym = addSym + 1
END IF
END DO
sym%nsym = sym%nsym + addSym
ENDIF ENDIF
ENDIF ENDIF
......
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