From d78dba2bc0b27d1feabbb5b9ac3e852c56e5edb3 Mon Sep 17 00:00:00 2001
From: Gregor Michalicek
Date: Mon, 29 Aug 2016 15:05:01 +0200
Subject: [PATCH] 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.
---
init/julia.f90 | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/init/julia.f90 b/init/julia.f90
index 9db4ba07..af4a0b97 100644
--- a/init/julia.f90
+++ b/init/julia.f90
@@ -79,7 +79,7 @@
REAL kzero(3) ! shifting vector to bring one k-point to or
! 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 idivis(3)
LOGICAL random,trias
@@ -229,9 +229,20 @@
IF ( (input%film.AND.(.not.sym%invs2)).OR.&
& ((.not.input%film).AND.(.not.sym%invs)) ) THEN
- ccr(:,:,sym%nsym+1:2*sym%nsym ) = -ccr(:,:,1:sym%nsym)
- rlsymr(:,:,sym%nsym+1:2*sym%nsym ) = -rlsymr(:,:,1:sym%nsym)
- sym%nsym = 2 * sym%nsym
+ addSym = 0
+ ! Note: We have to add the negative of each symmetry operation
+ ! 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
--
GitLab