mirror of https://gitlab.com/QEF/q-e.git
Bug fix: a problem with D_2h in special cases.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@5357 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
567bc16387
commit
082fbb1bd5
|
@ -416,6 +416,10 @@ ELSEIF (code_group==20) THEN
|
|||
! mirror_axis gives the normal to the mirror plane
|
||||
!
|
||||
done_ax=.TRUE.
|
||||
which_irr(2:nclass)=0
|
||||
!
|
||||
! First check if the axis are parallel to x, y or z
|
||||
!
|
||||
DO iclass=2,nclass
|
||||
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
||||
IF (ts==4) THEN
|
||||
|
@ -429,15 +433,6 @@ ELSEIF (code_group==20) THEN
|
|||
ELSE IF (is_axis(ax,1)) THEN
|
||||
which_irr(iclass)=4
|
||||
done_ax(3)=.FALSE.
|
||||
ELSE
|
||||
DO i=1,3
|
||||
IF (done_ax(i)) THEN
|
||||
which_irr(iclass)=i+1
|
||||
done_ax(i)=.FALSE.
|
||||
GOTO 100
|
||||
END IF
|
||||
END DO
|
||||
100 CONTINUE
|
||||
END IF
|
||||
ELSEIF (ts==2) THEN
|
||||
which_irr(iclass)=5
|
||||
|
@ -452,7 +447,25 @@ ELSEIF (code_group==20) THEN
|
|||
ELSE IF (is_axis(ax,1)) THEN
|
||||
which_irr(iclass)=8
|
||||
done_ax(6)=.FALSE.
|
||||
ELSE
|
||||
END IF
|
||||
END IF
|
||||
END DO
|
||||
!
|
||||
! Otherwise choose the first free axis
|
||||
!
|
||||
DO iclass=2,nclass
|
||||
IF (which_irr(iclass)==0) THEN
|
||||
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
||||
IF (ts==4) THEN
|
||||
DO i=1,3
|
||||
IF (done_ax(i)) THEN
|
||||
which_irr(iclass)=i+1
|
||||
done_ax(i)=.FALSE.
|
||||
GOTO 100
|
||||
END IF
|
||||
END DO
|
||||
100 CONTINUE
|
||||
ELSEIF (ts==5) THEN
|
||||
DO i=4,6
|
||||
IF (done_ax(i)) THEN
|
||||
which_irr(iclass)=i+2
|
||||
|
@ -463,6 +476,8 @@ ELSEIF (code_group==20) THEN
|
|||
120 CONTINUE
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF (which_irr(iclass)==0) CALL errore('divide_class',&
|
||||
'something wrong D_2h',1)
|
||||
ENDDO
|
||||
ELSEIF (code_group==21) THEN
|
||||
!
|
||||
|
|
|
@ -494,6 +494,10 @@ ELSEIF (code_group==20) THEN
|
|||
! mirror_axis gives the normal to the mirror plane
|
||||
!
|
||||
done_ax=.TRUE.
|
||||
which_irr(2:nclass)=0
|
||||
!
|
||||
! First check if the axis are parallel to x, y or z
|
||||
!
|
||||
DO iclass=2,nclass
|
||||
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
||||
IF (ts==1) THEN
|
||||
|
@ -509,15 +513,6 @@ ELSEIF (code_group==20) THEN
|
|||
ELSE IF (is_axis(ax,1)) THEN
|
||||
which_irr(iclass)=5
|
||||
done_ax(3)=.FALSE.
|
||||
ELSE
|
||||
DO i=1,3
|
||||
IF (done_ax(i)) THEN
|
||||
which_irr(iclass)=i+2
|
||||
done_ax(i)=.FALSE.
|
||||
GOTO 100
|
||||
END IF
|
||||
END DO
|
||||
100 CONTINUE
|
||||
END IF
|
||||
ELSEIF (ts==2) THEN
|
||||
IF (has_e(1,iclass)==-1) THEN
|
||||
|
@ -533,7 +528,25 @@ ELSEIF (code_group==20) THEN
|
|||
which_irr(iclass)=9
|
||||
ELSE IF (is_axis(ax,1)) THEN
|
||||
which_irr(iclass)=10
|
||||
ELSE
|
||||
END IF
|
||||
END IF
|
||||
END DO
|
||||
!
|
||||
! Otherwise choose the first free axis
|
||||
!
|
||||
DO iclass=2,nclass
|
||||
IF (which_irr(iclass)==0) THEN
|
||||
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
||||
IF (ts==4) THEN
|
||||
DO i=1,3
|
||||
IF (done_ax(i)) THEN
|
||||
which_irr(iclass)=i+2
|
||||
done_ax(i)=.FALSE.
|
||||
GOTO 100
|
||||
END IF
|
||||
END DO
|
||||
100 CONTINUE
|
||||
ELSEIF (ts==5) THEN
|
||||
DO i=4,6
|
||||
IF (done_ax(i)) THEN
|
||||
which_irr(iclass)=i+4
|
||||
|
@ -544,6 +557,8 @@ ELSEIF (code_group==20) THEN
|
|||
110 CONTINUE
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF (which_irr(iclass)==0) CALL errore('divide_class_so',&
|
||||
'something wrong D_2h',1)
|
||||
ENDDO
|
||||
ELSEIF (code_group==21) THEN
|
||||
!
|
||||
|
|
Loading…
Reference in New Issue