2006-08-23 01:01:13 +08:00
|
|
|
!
|
|
|
|
! Copyright (C) 2006 Quantum-ESPRESSO group
|
|
|
|
! This file is distributed under the terms of the
|
|
|
|
! GNU General Public License. See the file `License'
|
|
|
|
! in the root directory of the present distribution,
|
|
|
|
! or http://www.gnu.org/copyleft/gpl.txt .
|
|
|
|
!
|
|
|
|
#include "f_defs.h"
|
|
|
|
!
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
SUBROUTINE divide_class_so(code_group,nrot,smat,d_spin,has_e,nclass, &
|
|
|
|
nelem,elem, which_irr)
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
!
|
|
|
|
! This subroutine receives as input a set of nrot 3x3 matrices smat,
|
|
|
|
! and nrot complex 2x2 matrices d_spin, which are assumed to be the
|
|
|
|
! operations of the point group given by code_group. Only the operations
|
|
|
|
! that do not contain the 2\pi rotation (-E) are given in input.
|
|
|
|
! smat are in cartesian coordinates.
|
|
|
|
! This routine divides the double group in classes and find:
|
|
|
|
!
|
|
|
|
! nclass the number of classes of the double group
|
|
|
|
! nelem(iclass) for each class, the number of elements of the class
|
|
|
|
! elem(i,iclass) 1<i<nelem(iclass) for each class tells which matrices
|
|
|
|
! smat belong to that class
|
|
|
|
! has_e(i,iclass) =-1 if the operation is multiplied by -E, 1 otherwise
|
|
|
|
! which_irr(iclass) for each class gives the position of that class in the
|
|
|
|
! character table associated with the group and provided
|
|
|
|
! by the routine set_irr_rap_so. NB: changing the order of
|
|
|
|
! the elements in the character table must reflect in
|
|
|
|
! a change to which_irr. Presently the character tables
|
|
|
|
! are those given by G.F. Koster, Space Group and their
|
|
|
|
! representations.
|
|
|
|
! Several equivalent names for the irreducible representation
|
|
|
|
! are given. D, G, L, S are used for Delta, Gamma, Lambda
|
|
|
|
! and Sigma.
|
|
|
|
!
|
|
|
|
|
|
|
|
USE kinds, ONLY : DP
|
|
|
|
IMPLICIT NONE
|
|
|
|
|
|
|
|
INTEGER :: &
|
|
|
|
code_group, & ! The code of the point group
|
|
|
|
nrot, & ! The number of symmetry operation
|
|
|
|
nclass, & ! The number of classes
|
|
|
|
nelem(24), & ! The elements of each class
|
|
|
|
elem(12,24), & ! Which elements in the smat list for each class
|
|
|
|
has_e(12,24), & ! if -1 the element is multiplied by -E
|
|
|
|
which_irr(24) ! See above
|
|
|
|
|
|
|
|
REAL(DP) :: smat(3,3,nrot), cmat(3,3), ax(3)
|
|
|
|
REAL(DP) :: smate(3,3,2*nrot)
|
|
|
|
COMPLEX(DP) :: d_spin(2,2,48), d_spine(2,2,96), c_spin(2,2)
|
|
|
|
|
2006-12-14 16:53:47 +08:00
|
|
|
INTEGER :: done(96), irot, jrot, krot, iclass, i
|
2006-08-23 01:01:13 +08:00
|
|
|
INTEGER :: tipo_sym, set_e, ipol, axis, axis1, axis2, ts
|
|
|
|
REAL(DP), PARAMETER :: eps = 1.d-7
|
|
|
|
REAL(DP) :: angle_rot, angle_rot_s, ars
|
|
|
|
LOGICAL :: compare_mat_so, is_axis, first, first1
|
2006-10-21 23:09:19 +08:00
|
|
|
LOGICAL :: done_ax(6)
|
2006-08-23 01:01:13 +08:00
|
|
|
!
|
|
|
|
! Divide the group in classes.
|
|
|
|
!
|
|
|
|
DO irot=1,nrot
|
|
|
|
smate(:,:,irot)=smat(:,:,irot)
|
|
|
|
smate(:,:,irot+nrot)=smat(:,:,irot)
|
|
|
|
d_spine(:,:,irot)=d_spin(:,:,irot)
|
|
|
|
d_spine(:,:,irot+nrot)=-d_spin(:,:,irot)
|
|
|
|
END DO
|
|
|
|
!
|
|
|
|
! If there are doubts that the input matrices are not a point group uncomment
|
|
|
|
! the call to this routine.
|
|
|
|
!
|
|
|
|
!CALL check_tgroup(2*nrot,d_spine,smate)
|
|
|
|
!
|
|
|
|
|
|
|
|
nclass=0
|
|
|
|
nelem=0
|
|
|
|
done=0
|
|
|
|
DO irot=1,2*nrot
|
|
|
|
IF (done(irot)==0) THEN
|
|
|
|
nclass=nclass+1
|
|
|
|
DO jrot=1,2*nrot
|
|
|
|
CALL coniug_mat_so(smate(1,1,jrot),d_spine(1,1,jrot), &
|
|
|
|
smate(1,1,irot),d_spine(1,1,irot), &
|
|
|
|
cmat,c_spin)
|
|
|
|
DO krot=1,2*nrot
|
|
|
|
IF (compare_mat_so(cmat,c_spin,smate(1,1,krot),d_spine(1,1,krot)) &
|
|
|
|
.AND.done(krot)==0) THEN
|
|
|
|
nelem(nclass)=nelem(nclass)+1
|
|
|
|
IF (krot.le.nrot) THEN
|
|
|
|
elem(nelem(nclass),nclass)=krot
|
|
|
|
has_e(nelem(nclass),nclass)=1
|
|
|
|
ELSE
|
|
|
|
elem(nelem(nclass),nclass)=krot-nrot
|
|
|
|
has_e(nelem(nclass),nclass)=-1
|
|
|
|
ENDIF
|
|
|
|
done(krot)=1
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ENDDO
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
!
|
|
|
|
! For each class we should now decide which_irr. This depends on the group
|
|
|
|
! and on the tables of characters of the irreducible representation.
|
|
|
|
!
|
|
|
|
which_irr(1)=1
|
|
|
|
IF (code_group==1) THEN
|
|
|
|
!
|
|
|
|
! C_1
|
|
|
|
!
|
|
|
|
which_irr(2)=2
|
|
|
|
ELSEIF (code_group==2.OR.code_group==3.OR.code_group==4) THEN
|
|
|
|
!
|
|
|
|
! C_i, C_s, C_2
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
IF (tipo_sym(smat(1,1,elem(1,iclass)))==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==5) THEN
|
|
|
|
!
|
|
|
|
! C_3
|
|
|
|
!
|
|
|
|
! The function angle_rot(smat) provides the rotation angle of the matrix smat
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
IF (tipo_sym(smat(1,1,elem(1,iclass)))==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE
|
|
|
|
IF (ABS(angle_rot(smat(1,1,elem(1,iclass)))-120.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==6) THEN
|
|
|
|
!
|
|
|
|
! C_4
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSEIF (ts==4) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ELSEIF (ts==3) THEN
|
|
|
|
ars=angle_rot(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ABS(ars-90.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSEIF (ABS(ars-270.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong angle',1)
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong sym_type',1)
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==7) THEN
|
|
|
|
!
|
|
|
|
! C_6
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
ELSEIF (ts==3) THEN
|
|
|
|
ars=angle_rot(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ABS(ars-60.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSEIF (ABS(ars-120.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ELSEIF (ABS(ars-240.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),9)
|
|
|
|
ELSEIF (ABS(ars-300.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),11)
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong angle',1)
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong sym_type',1)
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==8) THEN
|
|
|
|
!
|
|
|
|
! D_2
|
|
|
|
!
|
2007-08-16 17:33:49 +08:00
|
|
|
first=.true.
|
2006-08-23 01:01:13 +08:00
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
2007-08-16 17:33:49 +08:00
|
|
|
first=.false.
|
2006-08-23 01:01:13 +08:00
|
|
|
ELSE
|
2007-08-16 17:33:49 +08:00
|
|
|
if (first) then
|
|
|
|
which_irr(iclass)=iclass+1
|
|
|
|
else
|
|
|
|
which_irr(iclass)=iclass
|
|
|
|
endif
|
2006-08-23 01:01:13 +08:00
|
|
|
END IF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==9) THEN
|
|
|
|
!
|
|
|
|
! D_3
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ELSEIF (ts==3) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong sym_type',1)
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==10) THEN
|
|
|
|
!
|
|
|
|
! D_4
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==3) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
CALL versor(smat(1,1,elem(1,iclass)),ax)
|
|
|
|
axis=0
|
|
|
|
DO ipol=1,3
|
|
|
|
IF (is_axis(ax,ipol)) axis=ipol
|
|
|
|
ENDDO
|
|
|
|
axis1=MOD(ipol,3)+1
|
|
|
|
axis2=MOD(ipol+1,3)+1
|
2007-12-06 00:39:20 +08:00
|
|
|
IF (axis==0) call errore('divide_class_so','unknown D_4 axis ',1)
|
2006-08-23 01:01:13 +08:00
|
|
|
ENDIF
|
|
|
|
END DO
|
|
|
|
first=.TRUE.
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSEIF (ts==4) THEN
|
|
|
|
CALL versor(smat(1,1,elem(1,iclass)),ax)
|
|
|
|
IF (is_axis(ax,axis)) THEN
|
|
|
|
which_irr(iclass)=5
|
|
|
|
ELSEIF (is_axis(ax,axis1).or.is_axis(ax,axis2)) THEN
|
|
|
|
which_irr(iclass)=6
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=7
|
|
|
|
END IF
|
2007-12-06 00:39:20 +08:00
|
|
|
ELSEIF (ts.ne.3) THEN
|
2006-08-23 01:01:13 +08:00
|
|
|
CALL errore('divide_class_so','wrong sym_type',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==11) THEN
|
|
|
|
!
|
|
|
|
! D_6
|
|
|
|
!
|
|
|
|
first=.true.
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
ars=angle_rot(smat(1,1,elem(1,iclass)))
|
|
|
|
IF ((ABS(ars-60.d0)<eps).OR.(ABS(ars-300.d0)<eps) ) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),6)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),4)
|
|
|
|
ENDIF
|
|
|
|
ELSEIF (ts==4) THEN
|
|
|
|
CALL versor(smat(1,1,elem(1,iclass)),ax)
|
|
|
|
IF (is_axis(ax,3)) THEN
|
|
|
|
which_irr(iclass)=3
|
|
|
|
ELSE
|
|
|
|
IF (first) THEN
|
|
|
|
which_irr(iclass)=8
|
|
|
|
first=.false.
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=9
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong sym_type',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==12) THEN
|
|
|
|
!
|
|
|
|
! C_2v
|
|
|
|
!
|
|
|
|
first=.true.
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSEIF (ts==4) THEN
|
|
|
|
which_irr(iclass)=3
|
|
|
|
ELSEIF (ts==5.and.first) THEN
|
|
|
|
which_irr(iclass)=4
|
|
|
|
first=.false.
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=5
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==13) THEN
|
|
|
|
!
|
|
|
|
! C_3v
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSEIF (ts==3) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSEIF (ts==5) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==14) THEN
|
|
|
|
!
|
|
|
|
! C_4v
|
|
|
|
!
|
|
|
|
first=.true.
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSEIF (ts==3) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSEIF (ts==4) THEN
|
|
|
|
which_irr(iclass)=5
|
|
|
|
ELSEIF (ts==5.and.first) THEN
|
|
|
|
which_irr(iclass)=6
|
|
|
|
first=.false.
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=7
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
|
|
|
|
ELSEIF (code_group==15) THEN
|
|
|
|
!
|
|
|
|
! C_6v
|
|
|
|
!
|
|
|
|
first=.true.
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
ars=angle_rot(smat(1,1,elem(1,iclass)))
|
|
|
|
IF ((ABS(ars-60.d0)<eps).OR.(ABS(ars-300.d0)<eps)) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),6)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),4)
|
|
|
|
ENDIF
|
|
|
|
ELSEIF (ts==4) THEN
|
|
|
|
which_irr(iclass)=3
|
|
|
|
ELSEIF (ts==5.and.first) THEN
|
|
|
|
which_irr(iclass)=8
|
|
|
|
first=.false.
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=9
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==16) THEN
|
|
|
|
!
|
|
|
|
! C_2h
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSEIF (ts==4) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSEIF (ts==2) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
ELSEIF (ts==5) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong sym_type',1)
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==17) THEN
|
|
|
|
!
|
|
|
|
! C_3h
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
ars=angle_rot(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ABS(ars-120.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
END IF
|
|
|
|
ELSEIF (ts==5) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
ELSEIF (ts==6) THEN
|
|
|
|
IF (ABS(angle_rot_s(smat(1,1,elem(1,iclass)))-120.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),9)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),11)
|
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong sym_type',1)
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ELSEIF (code_group==18) THEN
|
|
|
|
!
|
|
|
|
! C_4h
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
IF (angle_rot(smat(1,1,elem(1,iclass)))-90.d0<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
END IF
|
|
|
|
ELSEIF (ts==4) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ELSEIF (ts==2) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),9)
|
|
|
|
ELSEIF (ts==5) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),13)
|
|
|
|
ELSEIF (ts==6) THEN
|
|
|
|
IF (angle_rot_s(smat(1,1,elem(1,iclass)))-90.d0<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),11)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),15)
|
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==19) THEN
|
|
|
|
!
|
|
|
|
! C_6h
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
ars=angle_rot(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ABS(ars-60.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSEIF (ABS(ars-120.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ELSEIF (ABS(ars-240.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),9)
|
|
|
|
ELSEIF (ABS(ars-300.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),11)
|
|
|
|
END IF
|
|
|
|
ELSEIF (ts==4) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
ELSEIF (ts==2) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),13)
|
|
|
|
ELSEIF (ts==5) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),19)
|
|
|
|
ELSEIF (ts==6) THEN
|
|
|
|
ars=angle_rot_s(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ABS(ars-60.d0)<eps) THEN
|
2008-09-09 23:25:55 +08:00
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),21)
|
2006-08-23 01:01:13 +08:00
|
|
|
ELSEIF (ABS(ars-120.d0)<eps) THEN
|
2008-09-09 23:25:55 +08:00
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),23)
|
2006-08-23 01:01:13 +08:00
|
|
|
ELSEIF (ABS(ars-240.d0)<eps) THEN
|
2008-09-09 23:25:55 +08:00
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),15)
|
2006-08-23 01:01:13 +08:00
|
|
|
ELSEIF (ABS(ars-300.d0)<eps) THEN
|
2008-09-09 23:25:55 +08:00
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),17)
|
2006-08-23 01:01:13 +08:00
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
|
|
|
|
ELSEIF (code_group==20) THEN
|
|
|
|
!
|
|
|
|
! D_2h
|
|
|
|
!
|
|
|
|
! mirror_axis gives the normal to the mirror plane
|
|
|
|
!
|
2006-10-21 23:09:19 +08:00
|
|
|
done_ax=.TRUE.
|
2006-08-23 01:01:13 +08:00
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
CALL versor(smat(1,1,elem(1,iclass)),ax)
|
|
|
|
IF (is_axis(ax,3)) THEN
|
|
|
|
which_irr(iclass)=3
|
2006-10-21 23:09:19 +08:00
|
|
|
done_ax(1)=.FALSE.
|
2006-08-23 01:01:13 +08:00
|
|
|
ELSE IF (is_axis(ax,2)) THEN
|
|
|
|
which_irr(iclass)=4
|
2006-10-21 23:09:19 +08:00
|
|
|
done_ax(2)=.FALSE.
|
2006-08-23 01:01:13 +08:00
|
|
|
ELSE IF (is_axis(ax,1)) THEN
|
|
|
|
which_irr(iclass)=5
|
2006-10-21 23:09:19 +08:00
|
|
|
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
|
2006-08-23 01:01:13 +08:00
|
|
|
END IF
|
|
|
|
ELSEIF (ts==2) THEN
|
|
|
|
IF (has_e(1,iclass)==-1) THEN
|
|
|
|
which_irr(iclass)=7
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=6
|
|
|
|
END IF
|
|
|
|
ELSEIF (ts==5) THEN
|
|
|
|
CALL mirror_axis(smat(1,1,elem(1,iclass)),ax)
|
|
|
|
IF (is_axis(ax,3)) THEN
|
|
|
|
which_irr(iclass)=8
|
|
|
|
ELSE IF (is_axis(ax,2)) THEN
|
|
|
|
which_irr(iclass)=9
|
|
|
|
ELSE IF (is_axis(ax,1)) THEN
|
|
|
|
which_irr(iclass)=10
|
2006-10-21 23:09:19 +08:00
|
|
|
ELSE
|
|
|
|
DO i=4,6
|
|
|
|
IF (done_ax(i)) THEN
|
|
|
|
which_irr(iclass)=i+4
|
|
|
|
done_ax(i)=.FALSE.
|
|
|
|
GOTO 110
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
110 CONTINUE
|
2006-08-23 01:01:13 +08:00
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==21) THEN
|
|
|
|
!
|
|
|
|
! D_3h
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
which_irr(iclass)=5
|
|
|
|
ELSE IF (ts==5) THEN
|
|
|
|
IF (nelem(iclass)>1) THEN
|
|
|
|
which_irr(iclass)=9
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=6
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==6) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==22) THEN
|
|
|
|
!
|
|
|
|
! D_4h
|
|
|
|
!
|
|
|
|
! First search the order 4 axis
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==3) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
CALL versor(smat(1,1,elem(1,iclass)),ax)
|
|
|
|
axis=0
|
|
|
|
DO ipol=1,3
|
|
|
|
IF (is_axis(ax,ipol)) axis=ipol
|
|
|
|
ENDDO
|
|
|
|
IF (axis==0) call errore('divide_class_so','unknown D_4h axis ',1)
|
|
|
|
ENDIF
|
|
|
|
END DO
|
|
|
|
first=.TRUE.
|
|
|
|
first1=.TRUE.
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
CALL versor(smat(1,1,elem(1,iclass)),ax)
|
|
|
|
IF (is_axis(ax,axis)) THEN
|
|
|
|
which_irr(iclass)=5
|
|
|
|
ELSE
|
|
|
|
IF (first) THEN
|
|
|
|
which_irr(iclass)=6
|
|
|
|
first=.FALSE.
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=7
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
ELSEIF (ts==2) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),8)
|
|
|
|
ELSEIF (ts==5) THEN
|
|
|
|
CALL mirror_axis(smat(1,1,elem(1,iclass)),ax)
|
|
|
|
IF (is_axis(ax,axis)) THEN
|
|
|
|
which_irr(iclass)=12
|
|
|
|
ELSE
|
|
|
|
IF (first1) THEN
|
|
|
|
which_irr(iclass)=13
|
|
|
|
first1=.FALSE.
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=14
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
ELSEIF (ts==6) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),10)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==23) THEN
|
|
|
|
!
|
|
|
|
! D_6h
|
|
|
|
!
|
|
|
|
first=.TRUE.
|
|
|
|
first1=.TRUE.
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
ars=angle_rot(smat(1,1,elem(1,iclass)))
|
|
|
|
IF ((ABS(ars-60.d0)<eps).OR.(ABS(ars-300.d0)<eps)) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),6)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),4)
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
IF (nelem(iclass)==2) THEN
|
|
|
|
which_irr(iclass)=3
|
|
|
|
ELSE
|
|
|
|
IF (first) THEN
|
|
|
|
which_irr(iclass)=8
|
|
|
|
first=.FALSE.
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=9
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==2) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),10)
|
|
|
|
ELSE IF (ts==5) THEN
|
|
|
|
IF (nelem(iclass)==2) THEN
|
|
|
|
which_irr(iclass)=12
|
|
|
|
ELSE
|
|
|
|
IF (first1) THEN
|
|
|
|
which_irr(iclass)=17
|
|
|
|
first1=.FALSE.
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=18
|
|
|
|
ENDIF
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==6) THEN
|
|
|
|
ars=angle_rot_s(smat(1,1,elem(1,iclass)))
|
|
|
|
IF ((ABS(ars-60.d0)<eps).OR.(ABS(ars-300.d0)<eps)) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),13)
|
2008-09-09 23:25:55 +08:00
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),15)
|
2006-08-23 01:01:13 +08:00
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==24) THEN
|
|
|
|
!
|
|
|
|
! D_2d
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==6) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),4)
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
IF (nelem(iclass)==2) THEN
|
|
|
|
which_irr(iclass)=3
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=6
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==5) THEN
|
|
|
|
which_irr(iclass)=7
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==25) THEN
|
|
|
|
!
|
|
|
|
! D_3d
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSEIF (ts==3) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),11)
|
|
|
|
ELSE IF (ts==2) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
ELSE IF (ts==6) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),9)
|
|
|
|
ELSE IF (ts==5) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==26) THEN
|
|
|
|
!
|
|
|
|
! S_4
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
ELSE IF (ts==6) THEN
|
|
|
|
IF (ABS(angle_rot_s(smat(1,1,elem(1,iclass)))-90.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSE IF (code_group==27) THEN
|
|
|
|
!
|
|
|
|
! S_6
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
IF (ABS(angle_rot(smat(1,1,elem(1,iclass)))-120.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),5)
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==2) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
ELSE IF (ts==6) THEN
|
2008-09-09 23:25:55 +08:00
|
|
|
IF (ABS(angle_rot_s(smat(1,1,elem(1,iclass)))-60.d0)<eps) THEN
|
2006-08-23 01:01:13 +08:00
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),11)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),9)
|
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==28) THEN
|
|
|
|
!
|
|
|
|
! T
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
which_irr(iclass)=3
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
IF (ABS(angle_rot(smat(1,1,elem(1,iclass)))-120.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),4)
|
|
|
|
ELSE IF (ABS(angle_rot(smat(1,1,elem(1,iclass)))-240.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),6)
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong sym type',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSE IF (code_group==29) THEN
|
|
|
|
!
|
|
|
|
! T_h
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
IF (ABS(angle_rot(smat(1,1,elem(1,iclass)))-120.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),4)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),6)
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
which_irr(iclass)=3
|
|
|
|
ELSE IF (ts==2) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),8)
|
|
|
|
ELSE IF (ts==6) THEN
|
|
|
|
IF (ABS(angle_rot_s(smat(1,1,elem(1,iclass)))-60.d0)<eps) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),11)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),13)
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==5) THEN
|
|
|
|
which_irr(iclass)=10
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==30) THEN
|
|
|
|
!
|
|
|
|
! T_d
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
which_irr(iclass)=5
|
|
|
|
ELSE IF (ts==6) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
ELSE IF (ts==5) THEN
|
|
|
|
which_irr(iclass)=6
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==31) THEN
|
|
|
|
!
|
|
|
|
! O
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE IF (ts==4) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),6)
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
IF (nelem(iclass)==8) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),7)
|
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','wrong operation',1)
|
|
|
|
END IF
|
|
|
|
END DO
|
|
|
|
ELSEIF (code_group==32) THEN
|
|
|
|
!
|
|
|
|
! O_h
|
|
|
|
!
|
|
|
|
DO iclass=2,nclass
|
|
|
|
ts=tipo_sym(smat(1,1,elem(1,iclass)))
|
|
|
|
IF (ts==4) THEN
|
|
|
|
IF (nelem(iclass)==6) THEN
|
|
|
|
which_irr(iclass)=5
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=8
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==3) THEN
|
|
|
|
IF (nelem(iclass)==8) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),3)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),6)
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==2) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),9)
|
|
|
|
ELSE IF (ts==5) THEN
|
|
|
|
IF (nelem(iclass)==12) THEN
|
|
|
|
which_irr(iclass)=16
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=13
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==6) THEN
|
|
|
|
IF (nelem(iclass)==8) THEN
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),11)
|
|
|
|
ELSE
|
|
|
|
which_irr(iclass)=set_e(has_e(1,iclass),14)
|
|
|
|
END IF
|
|
|
|
ELSE IF (ts==1) THEN
|
|
|
|
which_irr(iclass)=2
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class','wrong operation',1)
|
|
|
|
END IF
|
|
|
|
ENDDO
|
|
|
|
ELSE
|
|
|
|
CALL errore('divide_class_so','code_group not correct',1)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
RETURN
|
|
|
|
END SUBROUTINE divide_class_so
|
|
|
|
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
SUBROUTINE coniug_mat_so(a,a_spin,b,b_spin,c,c_spin)
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
USE kinds, ONLY : DP
|
|
|
|
|
|
|
|
IMPLICIT NONE
|
|
|
|
REAL(DP) :: a(3,3), b(3,3), c(3,3)
|
|
|
|
COMPLEX(DP) :: a_spin(2,2), b_spin(2,2), c_spin(2,2)
|
|
|
|
|
|
|
|
c=MATMUL(a,MATMUL(b,TRANSPOSE(a)))
|
|
|
|
c_spin=MATMUL(a_spin,MATMUL(b_spin,TRANSPOSE(CONJG(a_spin))))
|
|
|
|
|
|
|
|
RETURN
|
|
|
|
END SUBROUTINE coniug_mat_so
|
|
|
|
!
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
FUNCTION compare_mat_so(a,a_spin,b,b_spin)
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
!
|
|
|
|
! This function compare two 3x3 matrices and two 2x2 matrices
|
|
|
|
! and returns .true. if they coincide.
|
|
|
|
!
|
|
|
|
USE kinds, ONLY : DP
|
|
|
|
IMPLICIT NONE
|
|
|
|
|
|
|
|
REAL(DP) :: a(3,3), b(3,3), csum
|
|
|
|
REAL(DP), PARAMETER :: eps=1.d-7
|
|
|
|
COMPLEX(DP) :: a_spin(2,2), b_spin(2,2)
|
|
|
|
LOGICAL :: compare_mat_so
|
|
|
|
INTEGER :: i, j
|
|
|
|
|
|
|
|
csum=0.d0
|
|
|
|
DO i=1,2
|
|
|
|
DO j=1,2
|
|
|
|
csum=csum+ABS(a_spin(i,j)-b_spin(i,j))
|
|
|
|
END DO
|
|
|
|
END DO
|
|
|
|
compare_mat_so=((ABS(MAXVAL(a-b))<eps).AND. &
|
|
|
|
(ABS(MINVAL(a-b))<eps).AND. (csum < eps ))
|
|
|
|
|
|
|
|
RETURN
|
|
|
|
END FUNCTION compare_mat_so
|
|
|
|
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
SUBROUTINE set_irr_rap_so(code_group,nclass_ref,nrap_ref,char_mat,&
|
|
|
|
name_rap,name_class,name_class1)
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
!
|
|
|
|
! This subroutine collects the character tables of the 32 crystallographic
|
|
|
|
! double point groups. Various names have been used in the litterature
|
|
|
|
! to identify D, G, L, S are used for Delta, Gamma, Lambda and Sigma.
|
|
|
|
!
|
|
|
|
!
|
|
|
|
USE kinds, ONLY : DP
|
|
|
|
IMPLICIT NONE
|
|
|
|
|
|
|
|
INTEGER :: nclass_ref, & ! Output: number of classes
|
|
|
|
nrap_ref, & ! Output: number of irreducible representation
|
|
|
|
code_group ! Input: code of the group
|
|
|
|
|
|
|
|
CHARACTER(LEN=15) :: name_rap(24) ! Output: name of the representations
|
|
|
|
CHARACTER(LEN=5) :: name_class(24), & ! Output: name of the classes
|
|
|
|
name_class1(24) ! Output: name of the classes
|
|
|
|
|
|
|
|
COMPLEX(DP) :: char_mat(12,24) ! Output: character matrix
|
|
|
|
|
|
|
|
REAL(DP) :: sqr3d2, sqrt2, sqrt3, dsq2
|
|
|
|
|
|
|
|
sqrt2 =SQRT(2.d0)
|
|
|
|
sqrt3 =SQRT(3.d0)
|
|
|
|
sqr3d2=sqrt3*0.5d0
|
|
|
|
dsq2 =sqrt2*0.5d0
|
|
|
|
|
|
|
|
char_mat=(1.d0,0.d0)
|
|
|
|
char_mat(:,2)=(-1.d0,0.d0)
|
|
|
|
|
|
|
|
name_class1=" "
|
|
|
|
name_class(1)="E "
|
|
|
|
name_class(2)="-E "
|
|
|
|
|
|
|
|
|
|
|
|
IF (code_group==1) THEN
|
|
|
|
!
|
|
|
|
! C_1
|
|
|
|
!
|
|
|
|
nclass_ref=2
|
|
|
|
nrap_ref=1
|
|
|
|
|
|
|
|
name_rap(1)="G_2 "
|
|
|
|
|
|
|
|
ELSEIF (code_group==2) THEN
|
|
|
|
!
|
|
|
|
! C_i
|
|
|
|
!
|
|
|
|
nclass_ref=4
|
|
|
|
|
|
|
|
name_class(3)="i "
|
|
|
|
name_class(4)="-i "
|
|
|
|
|
|
|
|
nrap_ref=2
|
|
|
|
|
|
|
|
name_rap(1)="G_2+"
|
|
|
|
char_mat(1,4)=(-1.d0,0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_2-"
|
|
|
|
char_mat(2,3)=(-1.d0,0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==3) THEN
|
|
|
|
!
|
|
|
|
! C_s
|
|
|
|
!
|
|
|
|
nclass_ref=4
|
|
|
|
name_class(3)="s "
|
|
|
|
name_class(4)="-s "
|
|
|
|
|
|
|
|
nrap_ref=2
|
|
|
|
|
|
|
|
name_rap(1)="G_3 "
|
|
|
|
char_mat(1,3)=(0.d0, 1.d0)
|
|
|
|
char_mat(1,4)=(0.d0,-1.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_4 "
|
|
|
|
char_mat(2,3)=(0.d0,-1.d0)
|
|
|
|
char_mat(2,4)=(0.d0, 1.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==4) THEN
|
|
|
|
!
|
|
|
|
! C_2
|
|
|
|
!
|
|
|
|
nclass_ref=4
|
|
|
|
name_class(3)="C2 "
|
|
|
|
name_class(4)="-C2 "
|
|
|
|
|
|
|
|
nrap_ref=2
|
|
|
|
|
|
|
|
name_rap(1)="G_3 "
|
|
|
|
char_mat(1,3)=(0.d0, 1.d0)
|
|
|
|
char_mat(1,4)=(0.d0,-1.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_4 "
|
|
|
|
char_mat(2,3)=(0.d0,-1.d0)
|
|
|
|
char_mat(2,4)=(0.d0, 1.d0)
|
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==5) THEN
|
|
|
|
!
|
|
|
|
! C_3
|
|
|
|
!
|
|
|
|
nclass_ref=6
|
|
|
|
name_class(3)="C3 "
|
|
|
|
name_class(4)="-C3 "
|
|
|
|
name_class(5)="C3^2 "
|
|
|
|
name_class(6)="-C3^2"
|
|
|
|
|
|
|
|
nrap_ref=3
|
|
|
|
|
|
|
|
name_rap(1)="G_4 "
|
|
|
|
char_mat(1,3)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(1,4)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(1,5)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(1,6)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
|
|
|
|
name_rap(2)="G_5 "
|
|
|
|
char_mat(2,3)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,4)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(2,5)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,6)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
|
|
|
|
name_rap(3)="G_6 "
|
|
|
|
char_mat(3,3)=(-1.0d0,0.d0)
|
|
|
|
char_mat(3,6)=(-1.0d0,0.d0)
|
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==6) THEN
|
|
|
|
!
|
2006-08-25 16:19:55 +08:00
|
|
|
! C_4 NB: The signs of the characters of the class C4^3 -C4^2
|
|
|
|
! are changed with respect to Koster, Space groups and
|
|
|
|
! their representation.
|
2006-08-23 01:01:13 +08:00
|
|
|
!
|
|
|
|
nclass_ref=8
|
|
|
|
name_class(3)="C4 "
|
|
|
|
name_class(4)="-C4 "
|
|
|
|
name_class(5)="C4^2 "
|
|
|
|
name_class(6)="-C4^2 "
|
|
|
|
name_class(7)="C4^3 "
|
|
|
|
name_class(8)="-C4^3 "
|
|
|
|
|
|
|
|
nrap_ref=4
|
|
|
|
|
|
|
|
name_rap(1)="G_5 "
|
|
|
|
char_mat(1,3)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(1,4)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(1,5)=( 0.d0,1.d0)
|
|
|
|
char_mat(1,6)=( 0.d0,-1.d0)
|
2006-08-25 16:19:55 +08:00
|
|
|
! char_mat(1,7)=CMPLX(-dsq2, dsq2)
|
|
|
|
! char_mat(1,8)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(1,7)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(1,8)=CMPLX(-dsq2, dsq2)
|
2006-08-23 01:01:13 +08:00
|
|
|
|
|
|
|
name_rap(2)="G_6 "
|
|
|
|
char_mat(2,3)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(2,4)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(2,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 1.d0)
|
2006-08-25 16:19:55 +08:00
|
|
|
! char_mat(2,7)=CMPLX(-dsq2,-dsq2)
|
|
|
|
! char_mat(2,8)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(2,7)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(2,8)=CMPLX(-dsq2,-dsq2)
|
2006-08-23 01:01:13 +08:00
|
|
|
|
|
|
|
name_rap(3)="G_7 "
|
|
|
|
char_mat(3,3)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(3,4)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(3,5)=( 0.d0,1.d0)
|
|
|
|
char_mat(3,6)=( 0.d0,-1.d0)
|
2006-08-25 16:19:55 +08:00
|
|
|
! char_mat(3,7)=CMPLX( dsq2,-dsq2)
|
|
|
|
! char_mat(3,8)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(3,7)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(3,8)=CMPLX( dsq2,-dsq2)
|
2006-08-23 01:01:13 +08:00
|
|
|
|
|
|
|
name_rap(4)="G_8 "
|
|
|
|
char_mat(4,3)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(4,4)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(4,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(4,6)=( 0.d0, 1.d0)
|
2006-08-25 16:19:55 +08:00
|
|
|
! char_mat(4,7)=CMPLX( dsq2, dsq2)
|
|
|
|
! char_mat(4,8)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(4,7)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(4,8)=CMPLX( dsq2, dsq2)
|
2006-08-23 01:01:13 +08:00
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==7) THEN
|
|
|
|
!
|
|
|
|
! C_6 NB: The signs of characters of the C3^2 -C3^2 C6^5 -C6^5 classes
|
|
|
|
! are changed with respect to Koster, Space groups and their
|
|
|
|
! representation. They match the table in Koster, Dimmok,
|
|
|
|
! Wheeler, Statz, Properties of the 32 point groups.
|
|
|
|
!
|
|
|
|
nclass_ref=12
|
|
|
|
name_class(3)="C6 "
|
|
|
|
name_class(4)="-C6 "
|
|
|
|
name_class(5)="C3 "
|
|
|
|
name_class(6)="-C3 "
|
|
|
|
name_class(7)="C2 "
|
|
|
|
name_class(8)="-C2 "
|
|
|
|
name_class(9)="C3^2"
|
|
|
|
name_class(10)="-C3^2"
|
|
|
|
name_class(11)="C6^5"
|
|
|
|
name_class(12)="-C6^5"
|
|
|
|
|
|
|
|
nrap_ref=6
|
|
|
|
|
|
|
|
name_rap(1)="G_7 "
|
|
|
|
char_mat(1,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,3)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(1,4)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,5)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(1,6)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(1,7)=( 0.d0, 1.d0)
|
|
|
|
char_mat(1,8)=( 0.d0,-1.d0)
|
|
|
|
! char_mat(1,9)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(1,10)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(1,11)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
! char_mat(1,12)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,9)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(1,10)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(1,11)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,12)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_8 "
|
|
|
|
char_mat(2,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,3)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(2,4)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,5)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,6)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(2,7)=( 0.d0,-1.d0)
|
|
|
|
char_mat(2,8)=( 0.d0, 1.d0)
|
|
|
|
! char_mat(2,9)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(2,10)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(2,11)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
! char_mat(2,12)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,9)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(2,10)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,11)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,12)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_11 "
|
|
|
|
char_mat(3,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,3)=( 0.d0, 1.d0)
|
|
|
|
char_mat(3,4)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,7)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,8)=( 0.d0, 1.d0)
|
|
|
|
! char_mat(3,10)=(-1.d0, 0.d0)
|
|
|
|
! char_mat(3,11)=( 0.d0, 1.d0)
|
|
|
|
! char_mat(3,12)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,9)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,11)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,12)=( 0.d0, 1.d0)
|
|
|
|
|
|
|
|
name_rap(4)="G_12 "
|
|
|
|
char_mat(4,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,3)=( 0.d0,-1.d0)
|
|
|
|
char_mat(4,4)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,7)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,8)=( 0.d0,-1.d0)
|
|
|
|
! char_mat(4,10)=(-1.d0, 0.d0)
|
|
|
|
! char_mat(4,11)=( 0.d0,-1.d0)
|
|
|
|
! char_mat(4,12)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,9)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,11)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,12)=( 0.d0,-1.d0)
|
|
|
|
|
|
|
|
name_rap(5)="G_9 "
|
|
|
|
char_mat(5,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,3)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(5,4)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(5,5)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(5,6)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,7)=( 0.d0,-1.d0)
|
|
|
|
char_mat(5,8)=( 0.d0, 1.d0)
|
|
|
|
! char_mat(5,9)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(5,10)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(5,11)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
! char_mat(5,12)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(5,9)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,10)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(5,11)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(5,12)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
|
|
|
|
name_rap(6)="G_10 "
|
|
|
|
char_mat(6,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,3)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(6,4)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(6,5)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(6,6)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(6,7)=( 0.d0, 1.d0)
|
|
|
|
char_mat(6,8)=( 0.d0,-1.d0)
|
|
|
|
! char_mat(6,9)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(6,10)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(6,11)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
! char_mat(6,12)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(6,9)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(6,10)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(6,11)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(6,12)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==8) THEN
|
|
|
|
!
|
|
|
|
! D_2
|
|
|
|
!
|
|
|
|
nclass_ref=5
|
|
|
|
name_class(3)="C2 "
|
|
|
|
name_class1(3)="-C2 "
|
|
|
|
name_class(4)="C2' "
|
|
|
|
name_class1(4)="-C2' "
|
|
|
|
name_class(5)="C2''"
|
|
|
|
name_class1(5)="-C2''"
|
|
|
|
|
|
|
|
nrap_ref=1
|
|
|
|
|
|
|
|
name_rap(1)="G_5 "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,4)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==9) THEN
|
|
|
|
!
|
|
|
|
! D_3
|
|
|
|
!
|
|
|
|
nclass_ref=6
|
|
|
|
name_class(3)="2C3 "
|
|
|
|
name_class(4)="-2C3 "
|
|
|
|
name_class(5)=" 3C2'"
|
|
|
|
name_class(6)="-3C2'"
|
|
|
|
|
|
|
|
nrap_ref=3
|
|
|
|
|
|
|
|
name_rap(1)="G_4 "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_5 "
|
|
|
|
char_mat(2,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,6)=( 0.d0,-1.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_6 "
|
|
|
|
char_mat(3,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 1.d0)
|
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==10) THEN
|
|
|
|
!
|
|
|
|
! D_4
|
|
|
|
!
|
|
|
|
nclass_ref=7
|
|
|
|
name_class(3)="2C4 "
|
|
|
|
name_class(4)="-2C4 "
|
|
|
|
name_class(5)=" C2 "
|
|
|
|
name_class1(5)="-C2 "
|
|
|
|
name_class(6)="2C2'"
|
|
|
|
name_class1(6)="-2C2'"
|
|
|
|
name_class(7)="2C2'' "
|
|
|
|
name_class1(7)="-2C2''"
|
|
|
|
|
|
|
|
nrap_ref=2
|
|
|
|
|
|
|
|
name_rap(1)="G_6 "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(1,4)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,7)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_7 "
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,3)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(2,4)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,7)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==12) THEN
|
|
|
|
!
|
|
|
|
! C_2v
|
|
|
|
!
|
|
|
|
nclass_ref=5
|
|
|
|
name_class(3)=" C2"
|
|
|
|
name_class1(3)="-C2"
|
|
|
|
name_class(4)=" s_v"
|
|
|
|
name_class1(4)="-s_v"
|
|
|
|
name_class(5)=" s_v'"
|
|
|
|
name_class1(5)="-s_v'"
|
|
|
|
|
|
|
|
nrap_ref=1
|
|
|
|
|
|
|
|
name_rap(1)="G_5 D_5"
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,4)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==13) THEN
|
|
|
|
!
|
|
|
|
! C_3v
|
|
|
|
!
|
|
|
|
nclass_ref=6
|
|
|
|
name_class(3)="2C3 "
|
|
|
|
name_class(4)="-2C3 "
|
|
|
|
name_class(5)="3s_v"
|
|
|
|
name_class(6)="-3s_v"
|
|
|
|
|
|
|
|
nrap_ref=3
|
|
|
|
|
|
|
|
name_rap(1)="G_4 L_6 "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_5 L_4 "
|
|
|
|
char_mat(2,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,6)=( 0.d0,-1.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_6 L_5 "
|
|
|
|
char_mat(3,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 1.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==14) THEN
|
|
|
|
!
|
|
|
|
! C_4v
|
|
|
|
!
|
|
|
|
nclass_ref=7
|
|
|
|
name_class(3)="2C4 "
|
|
|
|
name_class(4)="-2C4 "
|
|
|
|
name_class(5)=" C2"
|
|
|
|
name_class1(5)="-C2"
|
|
|
|
name_class(6)=" 2s_v"
|
|
|
|
name_class1(6)="-2s_v"
|
|
|
|
name_class(7)=" 2s_d"
|
|
|
|
name_class1(7)="-2s_d"
|
|
|
|
|
|
|
|
nrap_ref=2
|
|
|
|
|
|
|
|
name_rap(1)="G_6 D_6"
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(1,4)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,7)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_7 D_7"
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,3)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(2,4)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,7)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==15.OR.code_group==11) THEN
|
|
|
|
!
|
|
|
|
! C_6v, D_6
|
|
|
|
!
|
|
|
|
nclass_ref=9
|
|
|
|
name_class(3)=" C2 "
|
|
|
|
name_class1(3)="-C2 "
|
|
|
|
name_class(4)=" 2C3 "
|
|
|
|
name_class(5)="-2C3"
|
|
|
|
name_class(6)=" 2C6"
|
|
|
|
name_class(7)="-2C6"
|
|
|
|
IF (code_group==15) THEN
|
|
|
|
name_class(8)=" 3s_v"
|
|
|
|
name_class1(8)="-3s_v"
|
|
|
|
name_class(9)=" 3s_d"
|
|
|
|
name_class1(9)="-3s_d"
|
|
|
|
ELSE
|
|
|
|
name_class(8)=" 3C2'"
|
|
|
|
name_class1(8)="-3C2'"
|
|
|
|
name_class(9)="3C2''"
|
|
|
|
name_class1(9)="-3C2''"
|
|
|
|
END IF
|
|
|
|
|
|
|
|
nrap_ref=3
|
|
|
|
|
|
|
|
name_rap(1)="G_7 "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,6)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(1,7)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(1,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,9)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_8 "
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,6)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(2,7)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(2,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,9)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_9 "
|
|
|
|
char_mat(3,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,4)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,5)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,9)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==16) THEN
|
|
|
|
!
|
|
|
|
! C_2h
|
|
|
|
!
|
|
|
|
nclass_ref=8
|
|
|
|
name_class(3)="C2 "
|
|
|
|
name_class(4)="-C2 "
|
|
|
|
name_class(5)="s_h "
|
|
|
|
name_class(6)="-s_h"
|
|
|
|
name_class(7)="i "
|
|
|
|
name_class(8)="-i "
|
|
|
|
|
|
|
|
nrap_ref=4
|
|
|
|
|
|
|
|
name_rap(1)="G_3+"
|
|
|
|
char_mat(1,3)=( 0.d0, 1.d0)
|
|
|
|
char_mat(1,4)=( 0.d0,-1.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(1,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(1,8)=(-1.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_4+"
|
|
|
|
char_mat(2,3)=( 0.d0,-1.d0)
|
|
|
|
char_mat(2,4)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,8)=(-1.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_3-"
|
|
|
|
char_mat(3,3)=( 0.d0, 1.d0)
|
|
|
|
char_mat(3,4)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(3,7)=(-1.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(4)="G_4- "
|
|
|
|
char_mat(4,3)=( 0.d0,-1.d0)
|
|
|
|
char_mat(4,4)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(4,7)=(-1.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==17) THEN
|
|
|
|
!
|
|
|
|
! C_3h
|
|
|
|
!
|
|
|
|
nclass_ref=12
|
|
|
|
name_class(3)="C3 "
|
|
|
|
name_class(4)="-C3 "
|
|
|
|
name_class(5)="C3^2"
|
|
|
|
name_class(6)="-C3^2"
|
|
|
|
name_class(7)=" s_h "
|
|
|
|
name_class(8)="-s_h "
|
|
|
|
name_class(9)=" S3 "
|
|
|
|
name_class(10)="-S3 "
|
|
|
|
name_class(11)=" S3^5"
|
|
|
|
name_class(12)="-S3^5"
|
|
|
|
|
|
|
|
nrap_ref=6
|
|
|
|
|
|
|
|
name_rap(1)="G_7 "
|
|
|
|
char_mat(1,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,3)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(1,4)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(1,5)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(1,6)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(1,7)=( 0.d0, 1.d0)
|
|
|
|
char_mat(1,8)=( 0.d0,-1.d0)
|
|
|
|
char_mat(1,9)= CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(1,10)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,11)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(1,12)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_8 "
|
|
|
|
char_mat(2,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,3)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,4)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(2,5)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,6)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(2,7)=( 0.d0,-1.d0)
|
|
|
|
char_mat(2,8)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,9)= CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(2,10)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,11)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(2,12)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_9 "
|
|
|
|
char_mat(3,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,3)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(3,4)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(3,5)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(3,6)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(3,7)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,8)=( 0.d0, 1.d0)
|
|
|
|
char_mat(3,9)= CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(3,10)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(3,11)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(3,12)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
|
|
|
|
name_rap(4)="G_10 "
|
|
|
|
char_mat(4,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,3)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(4,4)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(4,5)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(4,6)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(4,7)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,8)=( 0.d0,-1.d0)
|
|
|
|
char_mat(4,9)= CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(4,10)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(4,11)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(4,12)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
|
|
|
|
name_rap(5)="G_11 "
|
|
|
|
char_mat(5,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,6)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,7)=( 0.d0, 1.d0)
|
|
|
|
char_mat(5,8)=( 0.d0,-1.d0)
|
|
|
|
char_mat(5,9)=( 0.d0,-1.d0)
|
|
|
|
char_mat(5,10)=( 0.d0, 1.d0)
|
|
|
|
char_mat(5,11)=( 0.d0,-1.d0)
|
|
|
|
char_mat(5,12)=( 0.d0, 1.d0)
|
|
|
|
|
|
|
|
name_rap(6)="G_12 "
|
|
|
|
char_mat(6,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,6)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,7)=( 0.d0,-1.d0)
|
|
|
|
char_mat(6,8)=( 0.d0, 1.d0)
|
|
|
|
char_mat(6,9)=( 0.d0, 1.d0)
|
|
|
|
char_mat(6,10)=( 0.d0,-1.d0)
|
|
|
|
char_mat(6,11)=( 0.d0, 1.d0)
|
|
|
|
char_mat(6,12)=( 0.d0,-1.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==18) THEN
|
|
|
|
!
|
|
|
|
! C_4h NB: The signs of the characters of the class C4^3 -C4^2 S4 -S4
|
|
|
|
! are changed with respect to Koster, Space groups and
|
|
|
|
! their representation. They match the table in Koster,
|
|
|
|
! Dimmok, Wheeler, Statz, Properties of the 32 point groups.
|
|
|
|
!
|
|
|
|
nclass_ref=16
|
|
|
|
name_class(3)="C4 "
|
|
|
|
name_class(4)="-C4 "
|
|
|
|
name_class(5)="C4^2"
|
|
|
|
name_class(6)="-C4^2"
|
|
|
|
name_class(7)="C4^3"
|
|
|
|
name_class(8)="-C4^3"
|
|
|
|
name_class(9)="i "
|
|
|
|
name_class(10)="-i "
|
|
|
|
name_class(11)="S4^3"
|
|
|
|
name_class(12)="-S4^3"
|
|
|
|
name_class(13)="s_h "
|
|
|
|
name_class(14)="-s_h"
|
|
|
|
name_class(15)="S4 "
|
|
|
|
name_class(16)="-S4"
|
|
|
|
|
|
|
|
nrap_ref=8
|
|
|
|
|
|
|
|
name_rap(1)="G_5+ "
|
|
|
|
char_mat(1,3)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(1,4)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(1,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(1,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(1,7)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(1,8)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(1,10)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,11)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(1,12)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(1,13)=( 0.d0, 1.d0)
|
|
|
|
char_mat(1,14)=( 0.d0,-1.d0)
|
|
|
|
char_mat(1,15)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(1,16)=CMPLX(-dsq2, dsq2)
|
|
|
|
|
|
|
|
name_rap(2)="G_6+ "
|
|
|
|
char_mat(2,3)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(2,4)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(2,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,7)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(2,8)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(2,10)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,11)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(2,12)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(2,13)=( 0.d0,-1.d0)
|
|
|
|
char_mat(2,14)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,15)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(2,16)=CMPLX(-dsq2,-dsq2)
|
|
|
|
|
|
|
|
name_rap(3)="G_7+ "
|
|
|
|
char_mat(3,3)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(3,4)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(3,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(3,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,7)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(3,8)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(3,10)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,11)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(3,12)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(3,13)=( 0.d0, 1.d0)
|
|
|
|
char_mat(3,14)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,15)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(3,16)=CMPLX( dsq2,-dsq2)
|
|
|
|
|
|
|
|
name_rap(4)="G_8+ "
|
|
|
|
char_mat(4,3)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(4,4)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(4,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(4,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,7)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(4,8)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(4,10)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,11)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(4,12)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(4,13)=( 0.d0,-1.d0)
|
|
|
|
char_mat(4,14)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,15)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(4,16)=CMPLX( dsq2, dsq2)
|
|
|
|
|
|
|
|
name_rap(5)="G_5- "
|
|
|
|
char_mat(5,3)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(5,4)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(5,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(5,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(5,7)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(5,8)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(5,9)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,11)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(5,12)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(5,13)=( 0.d0,-1.d0)
|
|
|
|
char_mat(5,14)=( 0.d0, 1.d0)
|
|
|
|
char_mat(5,15)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(5,16)=CMPLX( dsq2,-dsq2)
|
|
|
|
|
|
|
|
name_rap(6)="G_6- "
|
|
|
|
char_mat(6,3)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(6,4)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(6,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(6,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(6,7)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(6,8)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(6,9)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,11)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(6,12)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(6,13)=( 0.d0, 1.d0)
|
|
|
|
char_mat(6,14)=( 0.d0,-1.d0)
|
|
|
|
char_mat(6,15)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(6,16)=CMPLX( dsq2, dsq2)
|
|
|
|
|
|
|
|
name_rap(7)="G_7- "
|
|
|
|
char_mat(7,3)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(7,4)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(7,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(7,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(7,7)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(7,8)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(7,9)=(-1.d0, 0.d0)
|
|
|
|
char_mat(7,11)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(7,12)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(7,13)=( 0.d0,-1.d0)
|
|
|
|
char_mat(7,14)=( 0.d0, 1.d0)
|
|
|
|
char_mat(7,15)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(7,16)=CMPLX(-dsq2, dsq2)
|
|
|
|
|
|
|
|
name_rap(8)="G_8- "
|
|
|
|
char_mat(8,3)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(8,4)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(8,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(8,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(8,7)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(8,8)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(8,9)=(-1.d0, 0.d0)
|
|
|
|
char_mat(8,11)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(8,12)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(8,13)=( 0.d0, 1.d0)
|
|
|
|
char_mat(8,14)=( 0.d0,-1.d0)
|
|
|
|
char_mat(8,15)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(8,16)=CMPLX(-dsq2,-dsq2)
|
|
|
|
|
|
|
|
ELSEIF (code_group==19) THEN
|
|
|
|
!
|
|
|
|
! C_6h NB: The signs of the characters of C3^2 -C3^2 C6^5 -C6^5 S6 -S6 S3 -S3
|
|
|
|
! are changed with respect to Koster, Space groups and their
|
|
|
|
! representation. They match the table in Koster, Dimmok,
|
|
|
|
! Wheeler, Statz, Properties of the 32 point groups.
|
|
|
|
!
|
|
|
|
nclass_ref=24
|
|
|
|
name_class(3)="C6 "
|
|
|
|
name_class(4)="-C6 "
|
|
|
|
name_class(5)="C3 "
|
|
|
|
name_class(6)="-C3 "
|
|
|
|
name_class(7)="C2 "
|
|
|
|
name_class(8)="-C2 "
|
|
|
|
name_class(9)="C3^2"
|
|
|
|
name_class(10)="-C3^2"
|
|
|
|
name_class(11)="C6^5"
|
|
|
|
name_class(12)="-C6^5"
|
|
|
|
name_class(13)="i "
|
|
|
|
name_class(14)="-i "
|
|
|
|
name_class(15)="S3^5"
|
|
|
|
name_class(16)="-S3^5"
|
|
|
|
name_class(17)="S6^5"
|
|
|
|
name_class(18)="-S6^5"
|
|
|
|
name_class(19)="s_h "
|
|
|
|
name_class(20)="-s_h"
|
|
|
|
name_class(21)="S6 "
|
|
|
|
name_class(22)="-S6 "
|
|
|
|
name_class(23)="S3 "
|
|
|
|
name_class(24)="-S3 "
|
|
|
|
|
|
|
|
nrap_ref=12
|
|
|
|
|
|
|
|
name_rap(1)="G_7+ "
|
|
|
|
char_mat(1,3)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(1,4)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,5)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(1,6)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(1,7)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(1,8)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(1,9)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(1,10)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(1,11)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
! char_mat(1,12)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,9)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(1,10)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(1,11)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,12)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(1,14)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(1,15)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(1,16)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,17)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(1,18)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(1,19)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(1,20)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(1,21)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(1,22)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(1,23)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
! char_mat(1,24)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,21)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(1,22)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(1,23)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(1,24)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_8+ "
|
|
|
|
char_mat(2,3)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(2,4)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,5)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,6)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(2,7)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(2,8)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(2,9)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(2,10)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(2,11)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
! char_mat(2,12)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,9)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(2,10)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,11)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,12)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(2,14)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(2,15)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(2,16)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,17)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,18)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(2,19)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(2,20)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(2,21)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(2,22)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(2,23)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
! char_mat(2,24)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,21)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(2,22)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,23)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(2,24)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_11+ "
|
|
|
|
char_mat(3,3)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(3,4)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(3,5)=(-1.d0, 0.d0 )
|
|
|
|
char_mat(3,7)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(3,8)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(3,10)=(-1.d0, 0.d0 )
|
|
|
|
! char_mat(3,11)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(3,12)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(3,9)=(-1.d0, 0.d0 )
|
|
|
|
char_mat(3,11)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(3,12)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(3,14)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(3,15)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(3,16)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(3,17)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(3,19)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(3,20)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(3,22)=(-1.0d0, 0.d0)
|
|
|
|
! char_mat(3,23)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(3,24)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(3,21)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(3,23)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(3,24)=( 0.d0, 1.0d0)
|
|
|
|
|
|
|
|
name_rap(4)="G_12+ "
|
|
|
|
char_mat(4,3)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(4,4)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(4,5)=(-1.d0, 0.d0 )
|
|
|
|
char_mat(4,7)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(4,8)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(4,10)=(-1.d0, 0.d0 )
|
|
|
|
! char_mat(4,11)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(4,12)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(4,9)=(-1.d0, 0.d0 )
|
|
|
|
char_mat(4,11)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(4,12)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(4,14)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(4,15)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(4,16)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(4,17)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(4,19)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(4,20)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(4,22)=(-1.0d0, 0.d0)
|
|
|
|
! char_mat(4,23)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(4,24)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(4,21)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(4,23)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(4,24)=( 0.d0,-1.0d0)
|
|
|
|
|
|
|
|
name_rap(5)="G_9+ "
|
|
|
|
char_mat(5,3)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(5,4)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(5,5)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(5,6)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,7)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(5,8)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(5,9)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(5,10)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(5,11)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
! char_mat(5,12)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(5,9)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,10)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(5,11)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(5,12)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(5,14)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(5,15)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(5,16)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(5,17)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(5,18)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,19)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(5,20)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(5,21)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(5,22)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(5,23)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
! char_mat(5,24)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(5,21)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,22)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(5,23)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(5,24)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
|
|
|
|
name_rap(6)="G_10+ "
|
|
|
|
char_mat(6,3)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(6,4)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(6,5)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(6,6)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(6,7)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(6,8)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(6,9)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(6,10)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(6,11)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
! char_mat(6,12)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(6,9)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(6,10)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(6,11)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(6,12)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(6,14)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(6,15)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(6,16)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(6,17)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(6,18)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(6,19)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(6,20)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(6,21)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(6,22)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(6,23)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
! char_mat(6,24)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(6,21)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(6,22)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(6,23)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(6,24)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
|
|
|
|
name_rap(7)="G_7- "
|
|
|
|
char_mat(7,3)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(7,4)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(7,5)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(7,6)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(7,7)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(7,8)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(7,9)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(7,10)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(7,11)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
! char_mat(7,12)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(7,9)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(7,10)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(7,11)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(7,12)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(7,13)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(7,15)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(7,16)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(7,17)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(7,18)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(7,19)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(7,20)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(7,21)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(7,22)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(7,23)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
! char_mat(7,24)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(7,21)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(7,22)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(7,23)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(7,24)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
|
|
|
|
name_rap(8)="G_8- "
|
|
|
|
char_mat(8,3)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(8,4)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(8,5)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(8,6)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(8,7)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(8,8)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(8,9)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(8,10)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(8,11)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
! char_mat(8,12)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(8,9)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(8,10)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(8,11)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(8,12)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(8,13)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(8,15)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(8,16)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(8,17)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(8,18)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(8,19)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(8,20)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(8,21)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(8,22)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(8,23)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
! char_mat(8,24)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(8,21)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(8,22)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(8,23)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(8,24)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
|
|
|
|
name_rap(9)="G_11-"
|
|
|
|
char_mat(9,3)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(9,4)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(9,5)=(-1.d0, 0.d0 )
|
|
|
|
char_mat(9,7)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(9,8)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(9,10)=(-1.d0, 0.d0 )
|
|
|
|
! char_mat(9,11)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(9,12)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(9,9)=(-1.d0, 0.d0 )
|
|
|
|
char_mat(9,11)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(9,12)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(9,13)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(9,15)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(9,16)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(9,18)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(9,19)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(9,20)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(9,21)=(-1.0d0, 0.d0)
|
|
|
|
! char_mat(9,23)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(9,24)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(9,22)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(9,23)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(9,24)=( 0.d0,-1.0d0)
|
|
|
|
|
|
|
|
name_rap(10)="G_12-"
|
|
|
|
char_mat(10,3) =( 0.d0,-1.0d0)
|
|
|
|
char_mat(10,4) =( 0.d0, 1.0d0)
|
|
|
|
char_mat(10,5) =(-1.d0, 0.d0 )
|
|
|
|
char_mat(10,7) =( 0.d0, 1.0d0)
|
|
|
|
char_mat(10,8) =( 0.d0,-1.0d0)
|
|
|
|
! char_mat(10,10)=(-1.d0, 0.d0 )
|
|
|
|
! char_mat(10,11)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(10,12)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(10,9)=(-1.d0, 0.d0 )
|
|
|
|
char_mat(10,11)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(10,12)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(10,13)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(10,15)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(10,16)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(10,18)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(10,19)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(10,20)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(10,21)=(-1.0d0, 0.d0)
|
|
|
|
! char_mat(10,23)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(10,24)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(10,22)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(10,23)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(10,24)=( 0.d0, 1.0d0)
|
|
|
|
|
|
|
|
name_rap(11)="G_9- "
|
|
|
|
char_mat(11,3)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(11,4)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(11,5)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(11,6)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(11,7)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(11,8)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(11,9)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(11,10)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(11,11)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
! char_mat(11,12)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(11,9)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(11,10)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(11,11)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(11,12)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(11,13)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(11,15)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(11,16)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(11,17)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(11,18)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(11,19)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(11,20)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(11,21)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
! char_mat(11,22)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
! char_mat(11,23)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
! char_mat(11,24)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(11,21)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(11,22)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(11,23)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(11,24)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
|
|
|
|
name_rap(12)="G_10- "
|
|
|
|
char_mat(12,3)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(12,4)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(12,5)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(12,6)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(12,7)=( 0.d0, 1.0d0)
|
|
|
|
char_mat(12,8)=( 0.d0,-1.0d0)
|
|
|
|
! char_mat(12,9)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(12,10)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(12,11)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
! char_mat(12,12)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(12,9)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(12,10)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(12,11)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
char_mat(12,12)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(12,13)=(-1.0d0, 0.d0)
|
|
|
|
char_mat(12,15)=CMPLX( sqr3d2,-0.5d0)
|
|
|
|
char_mat(12,16)=CMPLX(-sqr3d2, 0.5d0)
|
|
|
|
char_mat(12,17)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(12,18)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(12,19)=( 0.d0,-1.0d0)
|
|
|
|
char_mat(12,20)=( 0.d0, 1.0d0)
|
|
|
|
! char_mat(12,21)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
! char_mat(12,22)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
! char_mat(12,23)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
! char_mat(12,24)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(12,21)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(12,22)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(12,23)=CMPLX( sqr3d2, 0.5d0)
|
|
|
|
char_mat(12,24)=CMPLX(-sqr3d2,-0.5d0)
|
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==20) THEN
|
|
|
|
!
|
|
|
|
! D_2h
|
|
|
|
!
|
|
|
|
nclass_ref=10
|
|
|
|
name_class(3)=" C2 "
|
|
|
|
name_class1(3)="-C2 "
|
|
|
|
name_class(4)=" C2' "
|
|
|
|
name_class1(4)="-C2'"
|
|
|
|
name_class(5)="C2'' "
|
|
|
|
name_class1(5)="-C2''"
|
|
|
|
name_class(6)="i "
|
|
|
|
name_class(7)="-i "
|
|
|
|
name_class(8)=" s_v"
|
|
|
|
name_class1(8)="-s_v"
|
|
|
|
name_class(9)=" s_v'"
|
|
|
|
name_class1(9)="-s_v'"
|
|
|
|
name_class(10)="s_v''"
|
|
|
|
name_class1(10)="-s_v''"
|
|
|
|
|
|
|
|
nrap_ref=2
|
|
|
|
|
|
|
|
name_rap(1)="G_5+ "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,4)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,7)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,9)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,10)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_5- "
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,4)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,6)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,7)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,9)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,10)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==21) THEN
|
|
|
|
!
|
|
|
|
! D_3h
|
|
|
|
!
|
|
|
|
nclass_ref=9
|
|
|
|
name_class(3)="2C3 "
|
|
|
|
name_class(4)="-2C3"
|
|
|
|
name_class(5)=" 3C2'"
|
|
|
|
name_class1(5)="-3C2'"
|
|
|
|
name_class(6)=" s_h"
|
|
|
|
name_class1(6)="-s_h'"
|
|
|
|
name_class(7)="2S3 "
|
|
|
|
name_class(8)="-2S3"
|
|
|
|
name_class(9)=" 3s_v"
|
|
|
|
name_class1(9)="-3s_v"
|
|
|
|
|
|
|
|
nrap_ref=3
|
|
|
|
|
|
|
|
name_rap(1)="G_7 "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,7)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(1,8)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(1,9)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_8 "
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,7)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(2,8)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(2,9)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_9 "
|
|
|
|
char_mat(3,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,3)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,4)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,9)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==22) THEN
|
|
|
|
!
|
|
|
|
! D_4h
|
|
|
|
!
|
|
|
|
nclass_ref=14
|
|
|
|
name_class(3)="2C4 "
|
|
|
|
name_class(4)="-2C4"
|
|
|
|
name_class(5)=" C2 "
|
|
|
|
name_class1(5)="-C2 "
|
|
|
|
name_class(6)=" 2C2'"
|
|
|
|
name_class1(6)="-2C2' "
|
|
|
|
name_class(7)="2C2''"
|
|
|
|
name_class1(7)="-2C2''"
|
|
|
|
name_class(8)="i "
|
|
|
|
name_class(9)="-i "
|
|
|
|
name_class(10)="2S4 "
|
|
|
|
name_class(11)="-2S4"
|
|
|
|
name_class(12)=" s_h"
|
|
|
|
name_class1(12)="-s_h"
|
|
|
|
name_class(13)=" 2s_v"
|
|
|
|
name_class1(13)="-2s_v"
|
|
|
|
name_class(14)=" 2s_d"
|
|
|
|
name_class1(14)="-2s_d"
|
|
|
|
|
|
|
|
nrap_ref=4
|
|
|
|
|
|
|
|
name_rap(1)="G_6+ M_6+"
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(1,4)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,8)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,9)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,10)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(1,11)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(1,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,14)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_7+ M_7+"
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,3)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(2,4)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,8)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,9)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,10)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(2,11)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(2,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,14)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_6- M_6- "
|
|
|
|
char_mat(3,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,3)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(3,4)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(3,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,8)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,9)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,10)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(3,11)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(3,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,14)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(4)="G_7- M_7- "
|
|
|
|
char_mat(4,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,3)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(4,4)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(4,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,8)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,9)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,10)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(4,11)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(4,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,14)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==23) THEN
|
|
|
|
!
|
|
|
|
! D_6h
|
|
|
|
!
|
|
|
|
nclass_ref=18
|
|
|
|
name_class(3)="C2 "
|
|
|
|
name_class1(3)="-C2 "
|
|
|
|
name_class(4)="2C3 "
|
|
|
|
name_class(5)="-2C3 "
|
|
|
|
name_class(6)="2C6 "
|
|
|
|
name_class(7)="-2C6 "
|
|
|
|
name_class(8)=" 3C2'"
|
|
|
|
name_class1(8)="-3C2'"
|
|
|
|
name_class(9)="3C2''"
|
|
|
|
name_class1(9)="-3C2''"
|
|
|
|
name_class(10)=" i "
|
|
|
|
name_class(11)="-i "
|
|
|
|
name_class(12)=" s_h"
|
|
|
|
name_class1(12)="-s_h"
|
|
|
|
name_class(13)="2S6"
|
|
|
|
name_class(14)="-2S6"
|
|
|
|
name_class(15)="2S3"
|
|
|
|
name_class(16)="-2S3"
|
|
|
|
name_class(17)=" 3s_v"
|
|
|
|
name_class1(17)="-3s_v"
|
|
|
|
name_class(18)=" 3s_d"
|
|
|
|
name_class1(18)="-3s_d"
|
|
|
|
|
|
|
|
nrap_ref=6
|
|
|
|
|
|
|
|
name_rap(1)="G_7+ "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,4)=( 1.d0, 0.d0)
|
|
|
|
char_mat(1,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,6)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(1,7)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(1,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,9)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,10)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,11)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,13)=( 1.d0, 0.d0)
|
|
|
|
char_mat(1,14)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,15)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(1,16)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(1,17)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,18)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_8+ "
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,4)=( 1.d0, 0.d0)
|
|
|
|
char_mat(2,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,6)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(2,7)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(2,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,9)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,10)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,11)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,13)=( 1.d0, 0.d0)
|
|
|
|
char_mat(2,14)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,15)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(2,16)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(2,17)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,18)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_9+ "
|
|
|
|
char_mat(3,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,4)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,5)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,9)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,10)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,11)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,13)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,14)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,15)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,16)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,17)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,18)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(4)="G_7- "
|
|
|
|
char_mat(4,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,4)=( 1.d0, 0.d0)
|
|
|
|
char_mat(4,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,6)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(4,7)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(4,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,9)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,10)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,11)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,13)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,14)=( 1.d0, 0.d0)
|
|
|
|
char_mat(4,15)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(4,16)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(4,17)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,18)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(5)="G_8- "
|
|
|
|
char_mat(5,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(5,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(5,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,4)=( 1.d0, 0.d0)
|
|
|
|
char_mat(5,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,6)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(5,7)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(5,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,9)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,10)=(-2.d0, 0.d0)
|
|
|
|
char_mat(5,11)=( 2.d0, 0.d0)
|
|
|
|
char_mat(5,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,13)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,14)=( 1.d0, 0.d0)
|
|
|
|
char_mat(5,15)=CMPLX( sqrt3, 0.d0)
|
|
|
|
char_mat(5,16)=CMPLX(-sqrt3, 0.d0)
|
|
|
|
char_mat(5,17)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,18)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(6)="G_9- "
|
|
|
|
char_mat(6,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(6,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(6,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,4)=(-2.d0, 0.d0)
|
|
|
|
char_mat(6,5)=( 2.d0, 0.d0)
|
|
|
|
char_mat(6,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,9)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,10)=(-2.d0, 0.d0)
|
|
|
|
char_mat(6,11)=( 2.d0, 0.d0)
|
|
|
|
char_mat(6,12)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,13)=( 2.d0, 0.d0)
|
|
|
|
char_mat(6,14)=(-2.d0, 0.d0)
|
|
|
|
char_mat(6,15)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,16)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,17)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,18)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==24) THEN
|
|
|
|
!
|
|
|
|
! D_2d
|
|
|
|
!
|
|
|
|
nclass_ref=7
|
|
|
|
name_class(3)="C2 "
|
|
|
|
name_class1(3)="-C2 "
|
|
|
|
name_class(4)="2S4 "
|
|
|
|
name_class(5)="-2S4"
|
|
|
|
name_class(6)="2C2' "
|
|
|
|
name_class1(6)="-2C2'"
|
|
|
|
name_class(7)="2s_d "
|
|
|
|
name_class1(7)="-2s_d"
|
|
|
|
|
|
|
|
nrap_ref=2
|
|
|
|
|
|
|
|
name_rap(1)="G_6 X_6 W_6"
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,4)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(1,5)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,7)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_7 X_7 W_7"
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,4)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(2,5)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,7)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==25) THEN
|
|
|
|
!
|
|
|
|
! D_3d
|
|
|
|
!
|
|
|
|
nclass_ref=12
|
|
|
|
name_class(3)="2C3 "
|
|
|
|
name_class(4)="-2C3"
|
|
|
|
name_class(5)="3s_v "
|
|
|
|
name_class(6)="-3s_v"
|
|
|
|
name_class(7)="i "
|
|
|
|
name_class(8)="-i "
|
|
|
|
name_class(9)="2S6 "
|
|
|
|
name_class(10)="-2S6"
|
|
|
|
name_class(11)="3C2'"
|
|
|
|
name_class(12)="-3C2'"
|
|
|
|
|
|
|
|
nrap_ref=6
|
|
|
|
|
|
|
|
name_rap(1)="G_4+ L_6+"
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,7)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,8)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,10)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,11)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,12)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_5+ L_4+"
|
|
|
|
char_mat(2,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(2,8)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,9)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,11)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,12)=( 0.d0,-1.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_6+ L_5+"
|
|
|
|
char_mat(3,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(3,8)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,9)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,11)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,12)=( 0.d0, 1.d0)
|
|
|
|
|
|
|
|
name_rap(4)="G_4- L_6-"
|
|
|
|
char_mat(4,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,7)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,8)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,9)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,11)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,12)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(5)="G_5- L_4-"
|
|
|
|
char_mat(5,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(5,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(5,7)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,10)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,11)=( 0.d0,-1.d0)
|
|
|
|
char_mat(5,12)=( 0.d0, 1.d0)
|
|
|
|
|
|
|
|
name_rap(6)="G_6- L_5-"
|
|
|
|
char_mat(6,2)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(6,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(6,7)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,10)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,11)=( 0.d0, 1.d0)
|
|
|
|
char_mat(6,12)=( 0.d0,-1.d0)
|
|
|
|
|
|
|
|
ELSEIF (code_group==26) THEN
|
|
|
|
!
|
|
|
|
! S_4
|
|
|
|
!
|
|
|
|
nclass_ref=8
|
|
|
|
name_class(3)=" S4 "
|
|
|
|
name_class(4)="-S4 "
|
|
|
|
name_class(5)=" C2 "
|
|
|
|
name_class(6)="-C2 "
|
|
|
|
name_class(7)=" S4^3"
|
|
|
|
name_class(8)="-S4^3"
|
|
|
|
|
|
|
|
nrap_ref=4
|
|
|
|
|
|
|
|
name_rap(1)="G_1 "
|
|
|
|
char_mat(1,3)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(1,4)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(1,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(1,7)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(1,8)=CMPLX( dsq2,-dsq2)
|
|
|
|
|
|
|
|
name_rap(2)="G_2 "
|
|
|
|
char_mat(2,3)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(2,4)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(2,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(2,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(2,7)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(2,8)=CMPLX( dsq2, dsq2)
|
|
|
|
|
|
|
|
name_rap(3)="G_3 "
|
|
|
|
char_mat(3,3)=CMPLX(-dsq2,-dsq2)
|
|
|
|
char_mat(3,4)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(3,5)=( 0.d0,-1.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 1.d0)
|
|
|
|
char_mat(3,7)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(3,8)=CMPLX(-dsq2, dsq2)
|
|
|
|
|
|
|
|
name_rap(4)="G_4 "
|
|
|
|
char_mat(4,3)=CMPLX(-dsq2, dsq2)
|
|
|
|
char_mat(4,4)=CMPLX( dsq2,-dsq2)
|
|
|
|
char_mat(4,5)=( 0.d0, 1.d0)
|
|
|
|
char_mat(4,6)=( 0.d0,-1.d0)
|
|
|
|
char_mat(4,7)=CMPLX( dsq2, dsq2)
|
|
|
|
char_mat(4,8)=CMPLX(-dsq2,-dsq2)
|
|
|
|
|
|
|
|
ELSEIF (code_group==27) THEN
|
|
|
|
!
|
|
|
|
! S_6
|
|
|
|
!
|
|
|
|
nclass_ref=12
|
|
|
|
name_class(3)="C3 "
|
|
|
|
name_class(4)="-C3 "
|
|
|
|
name_class(5)="C3^2"
|
|
|
|
name_class(6)="-C3^2"
|
|
|
|
name_class(7)=" i "
|
|
|
|
name_class(8)="-i "
|
|
|
|
name_class(9)="S6^5"
|
|
|
|
name_class(10)="-S6^5"
|
|
|
|
name_class(11)="S6"
|
|
|
|
name_class(12)="-S6"
|
|
|
|
|
|
|
|
nrap_ref=6
|
|
|
|
|
|
|
|
name_rap(1)="G_4+"
|
|
|
|
char_mat(1,3)=CMPLX( 0.5d0, sqr3d2 )
|
|
|
|
char_mat(1,4)=CMPLX(-0.5d0,-sqr3d2 )
|
|
|
|
char_mat(1,5)=CMPLX(-0.5d0, sqr3d2 )
|
|
|
|
char_mat(1,6)=CMPLX( 0.5d0,-sqr3d2 )
|
|
|
|
char_mat(1,8)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(1,9)=CMPLX( 0.5d0, sqr3d2 )
|
|
|
|
char_mat(1,10)=CMPLX(-0.5d0,-sqr3d2 )
|
|
|
|
char_mat(1,11)=CMPLX(-0.5d0, sqr3d2 )
|
|
|
|
char_mat(1,12)=CMPLX( 0.5d0,-sqr3d2 )
|
|
|
|
|
|
|
|
name_rap(2)="G_5+"
|
|
|
|
char_mat(2,3)=CMPLX( 0.5d0,-sqr3d2 )
|
|
|
|
char_mat(2,4)=CMPLX(-0.5d0, sqr3d2 )
|
|
|
|
char_mat(2,5)=CMPLX(-0.5d0,-sqr3d2 )
|
|
|
|
char_mat(2,6)=CMPLX( 0.5d0, sqr3d2 )
|
|
|
|
char_mat(2,8)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(2,9)=CMPLX( 0.5d0,-sqr3d2 )
|
|
|
|
char_mat(2,10)=CMPLX(-0.5d0, sqr3d2 )
|
|
|
|
char_mat(2,11)=CMPLX(-0.5d0,-sqr3d2 )
|
|
|
|
char_mat(2,12)=CMPLX( 0.5d0, sqr3d2 )
|
|
|
|
|
|
|
|
name_rap(3)="G_6+"
|
|
|
|
char_mat(3,3)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(3,6)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(3,8)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(3,9)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(3,12)=(-1.0d0, 0.d0 )
|
|
|
|
|
|
|
|
name_rap(4)="G_4-"
|
|
|
|
char_mat(4,3)=CMPLX( 0.5d0, sqr3d2 )
|
|
|
|
char_mat(4,4)=CMPLX(-0.5d0,-sqr3d2 )
|
|
|
|
char_mat(4,5)=CMPLX(-0.5d0, sqr3d2 )
|
|
|
|
char_mat(4,6)=CMPLX( 0.5d0,-sqr3d2 )
|
|
|
|
char_mat(4,7)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(4,9)=CMPLX(-0.5d0,-sqr3d2 )
|
|
|
|
char_mat(4,10)=CMPLX( 0.5d0, sqr3d2 )
|
|
|
|
char_mat(4,11)=CMPLX( 0.5d0,-sqr3d2 )
|
|
|
|
char_mat(4,12)=CMPLX(-0.5d0, sqr3d2 )
|
|
|
|
|
|
|
|
name_rap(5)="G_5-"
|
|
|
|
char_mat(5,3)=CMPLX( 0.5d0,-sqr3d2 )
|
|
|
|
char_mat(5,4)=CMPLX(-0.5d0, sqr3d2 )
|
|
|
|
char_mat(5,5)=CMPLX(-0.5d0,-sqr3d2 )
|
|
|
|
char_mat(5,6)=CMPLX( 0.5d0, sqr3d2 )
|
|
|
|
char_mat(5,7)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(5,9)=CMPLX(-0.5d0, sqr3d2 )
|
|
|
|
char_mat(5,10)=CMPLX( 0.5d0,-sqr3d2 )
|
|
|
|
char_mat(5,11)=CMPLX( 0.5d0, sqr3d2 )
|
|
|
|
char_mat(5,12)=CMPLX(-0.5d0,-sqr3d2 )
|
|
|
|
|
|
|
|
name_rap(6)="G_6-"
|
|
|
|
char_mat(6,3)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(6,6)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(6,7)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(6,10)=(-1.0d0, 0.d0 )
|
|
|
|
char_mat(6,11)=(-1.0d0, 0.d0 )
|
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==28) THEN
|
|
|
|
!
|
|
|
|
! T
|
|
|
|
!
|
|
|
|
nclass_ref=7
|
|
|
|
name_class(3)="3C2 "
|
|
|
|
name_class1(3)="-3C2 "
|
|
|
|
name_class(4)=" 4C3 "
|
|
|
|
name_class(5)="-4C3 "
|
|
|
|
name_class(6)=" 4C3'"
|
|
|
|
name_class(7)="-4C3'"
|
|
|
|
|
|
|
|
nrap_ref=3
|
|
|
|
|
|
|
|
name_rap(1)="G_5 "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,7)=(-1.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_6 "
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,4)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(2,5)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,6)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(2,7)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
|
|
|
|
name_rap(3)="G_7 "
|
|
|
|
char_mat(3,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,4)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(3,5)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(3,6)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(3,7)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
|
|
|
|
ELSEIF (code_group==29) THEN
|
|
|
|
!
|
|
|
|
! T_h
|
|
|
|
!
|
|
|
|
nclass_ref=14
|
|
|
|
name_class(3)=" 3C2 "
|
|
|
|
name_class1(3)="-3C2 "
|
|
|
|
name_class(4)=" 4C3 "
|
|
|
|
name_class(5)="-4C3 "
|
|
|
|
name_class(6)=" 4C3'"
|
|
|
|
name_class(7)="-4C3'"
|
|
|
|
name_class(8)="i "
|
|
|
|
name_class(9)="-i "
|
|
|
|
name_class(10)=" 3s_h"
|
|
|
|
name_class1(10)="-3s_h"
|
|
|
|
name_class(11)="4S6 "
|
|
|
|
name_class(12)="-4S6 "
|
|
|
|
name_class(13)=" 4S6'"
|
|
|
|
name_class(14)="-4S6'"
|
|
|
|
|
|
|
|
nrap_ref=6
|
|
|
|
|
|
|
|
name_rap(1)="G_5+"
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,7)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,8)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,9)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,10)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,12)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,14)=(-1.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_6+"
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,4)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(2,5)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,6)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(2,7)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,8)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,9)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,10)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,11)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(2,12)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(2,13)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(2,14)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
|
|
|
|
name_rap(3)="G_7+"
|
|
|
|
char_mat(3,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,4)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(3,5)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(3,6)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(3,7)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(3,8)=( 2.d0, 0.d0)
|
|
|
|
char_mat(3,9)=(-2.d0, 0.d0)
|
|
|
|
char_mat(3,10)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,11)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(3,12)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(3,13)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(3,14)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
|
|
|
|
name_rap(4)="G_5-"
|
|
|
|
char_mat(4,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,5)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,7)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,8)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,9)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,10)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,11)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,13)=(-1.d0, 0.d0)
|
|
|
|
|
|
|
|
|
|
|
|
name_rap(5)="G_6-"
|
|
|
|
char_mat(5,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(5,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(5,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,4)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(5,5)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,6)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(5,7)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,8)=(-2.d0, 0.d0)
|
|
|
|
char_mat(5,9)=( 2.d0, 0.d0)
|
|
|
|
char_mat(5,10)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,11)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,12)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(5,13)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(5,14)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
|
|
|
|
name_rap(6)="G_7-"
|
|
|
|
char_mat(6,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(6,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(6,3)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,4)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(6,5)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(6,6)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
char_mat(6,7)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(6,8)=(-2.d0, 0.d0)
|
|
|
|
char_mat(6,9)=( 2.d0, 0.d0)
|
|
|
|
char_mat(6,10)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,11)=CMPLX(-0.5d0, sqr3d2)
|
|
|
|
char_mat(6,12)=CMPLX( 0.5d0,-sqr3d2)
|
|
|
|
char_mat(6,13)=CMPLX( 0.5d0, sqr3d2)
|
|
|
|
char_mat(6,14)=CMPLX(-0.5d0,-sqr3d2)
|
|
|
|
|
|
|
|
ELSEIF (code_group==30) THEN
|
|
|
|
!
|
|
|
|
! T_d
|
|
|
|
!
|
|
|
|
nclass_ref=8
|
|
|
|
name_class(3)="8C3 "
|
|
|
|
name_class(4)="-8C3 "
|
|
|
|
name_class(5)=" 3C2 "
|
|
|
|
name_class1(5)="-3C2 "
|
|
|
|
name_class(6)="6s_d"
|
|
|
|
name_class1(6)="-6s_d"
|
|
|
|
name_class(7)="6S4 "
|
|
|
|
name_class(8)="-6S4 "
|
|
|
|
|
|
|
|
nrap_ref=3
|
|
|
|
|
|
|
|
name_rap(1)="G_6 P_6"
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,7)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(1,8)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_7 P_7"
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,7)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(2,8)=CMPLX( sqrt2, 0.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_8 P_8"
|
|
|
|
char_mat(3,1)=( 4.d0, 0.d0)
|
|
|
|
char_mat(3,2)=(-4.d0, 0.d0)
|
|
|
|
char_mat(3,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,8)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==31) THEN
|
|
|
|
!
|
|
|
|
! O
|
|
|
|
!
|
|
|
|
nclass_ref=8
|
|
|
|
name_class(3)="8C3 "
|
|
|
|
name_class(4)="-8C3 "
|
|
|
|
name_class(5)=" 3C2"
|
|
|
|
name_class1(5)="-3C2"
|
|
|
|
name_class(6)=" 6C2'"
|
|
|
|
name_class1(6)="-6C2'"
|
|
|
|
name_class(7)="6C4 "
|
|
|
|
name_class(8)="-6C4 "
|
|
|
|
|
|
|
|
nrap_ref=3
|
|
|
|
|
|
|
|
name_rap(1)="G_6 "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=( -2.d0, 0.d0)
|
|
|
|
char_mat(1,4)=( -1.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,7)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(1,8)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_7 "
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=( -2.d0, 0.d0)
|
|
|
|
char_mat(2,4)=( -1.d0, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,7)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(2,8)=CMPLX( sqrt2, 0.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_8 "
|
|
|
|
char_mat(3,1)=( 4.d0, 0.d0)
|
|
|
|
char_mat(3,2)=( -4.d0, 0.d0)
|
|
|
|
char_mat(3,3)=( -1.d0, 0.d0)
|
|
|
|
char_mat(3,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,8)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
|
|
|
|
ELSEIF (code_group==32) THEN
|
|
|
|
!
|
|
|
|
! O_h
|
|
|
|
!
|
|
|
|
nclass_ref=16
|
|
|
|
name_class(3)="8C3 "
|
|
|
|
name_class(4)="-8C3 "
|
|
|
|
name_class(5)=" 3C2"
|
|
|
|
name_class1(5)="-3C2"
|
|
|
|
name_class(6)="6C4 "
|
|
|
|
name_class(7)="-6C4 "
|
|
|
|
name_class(8)=" 6C2'"
|
|
|
|
name_class1(8)="-6C2'"
|
|
|
|
name_class(9)="i "
|
|
|
|
name_class(10)="-i "
|
|
|
|
name_class(11)="8S6 "
|
|
|
|
name_class(12)="-8S6 "
|
|
|
|
name_class(13)=" 3s_h"
|
|
|
|
name_class1(13)="-3s_h"
|
|
|
|
name_class(14)="6S4 "
|
|
|
|
name_class(15)="-6S4 "
|
|
|
|
name_class(16)=" 6s_d"
|
|
|
|
name_class1(16)="-6s_d"
|
|
|
|
|
|
|
|
nrap_ref=6
|
|
|
|
|
|
|
|
name_rap(1)="G_6+ "
|
|
|
|
char_mat(1,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,6)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(1,7)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(1,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,9)=( 2.d0, 0.d0)
|
|
|
|
char_mat(1,10)=(-2.d0, 0.d0)
|
|
|
|
char_mat(1,12)=(-1.d0, 0.d0)
|
|
|
|
char_mat(1,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(1,14)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(1,15)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(1,16)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(2)="G_7+ "
|
|
|
|
char_mat(2,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,6)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(2,7)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(2,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,9)=( 2.d0, 0.d0)
|
|
|
|
char_mat(2,10)=(-2.d0, 0.d0)
|
|
|
|
char_mat(2,12)=(-1.d0, 0.d0)
|
|
|
|
char_mat(2,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(2,14)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(2,15)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(2,16)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(3)="G_8+ "
|
|
|
|
char_mat(3,1)=( 4.d0, 0.d0)
|
|
|
|
char_mat(3,2)=(-4.d0, 0.d0)
|
|
|
|
char_mat(3,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,9)=( 4.d0, 0.d0)
|
|
|
|
char_mat(3,10)=(-4.d0, 0.d0)
|
|
|
|
char_mat(3,11)=(-1.d0, 0.d0)
|
|
|
|
char_mat(3,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,14)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,15)=( 0.d0, 0.d0)
|
|
|
|
char_mat(3,16)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(4)="G_6- "
|
|
|
|
char_mat(4,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,6)=CMPLX(sqrt2, 0.d0)
|
|
|
|
char_mat(4,7)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(4,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,9)=(-2.d0, 0.d0)
|
|
|
|
char_mat(4,10)=( 2.d0, 0.d0)
|
|
|
|
char_mat(4,11)=(-1.d0, 0.d0)
|
|
|
|
char_mat(4,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(4,14)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(4,15)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(4,16)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
name_rap(5)="G_7- "
|
|
|
|
char_mat(5,1)=( 2.d0, 0.d0)
|
|
|
|
char_mat(5,2)=(-2.d0, 0.d0)
|
|
|
|
char_mat(5,4)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,6)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(5,7)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(5,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,9)=(-2.d0, 0.d0)
|
|
|
|
char_mat(5,10)=( 2.d0, 0.d0)
|
|
|
|
char_mat(5,11)=(-1.d0, 0.d0)
|
|
|
|
char_mat(5,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(5,14)=CMPLX( sqrt2, 0.d0)
|
|
|
|
char_mat(5,15)=CMPLX(-sqrt2, 0.d0)
|
|
|
|
char_mat(5,16)=( 0.d0, 0.d0)
|
|
|
|
|
|
|
|
|
|
|
|
name_rap(6)="G_8- "
|
|
|
|
char_mat(6,1)=( 4.d0, 0.d0)
|
|
|
|
char_mat(6,2)=(-4.d0, 0.d0)
|
|
|
|
char_mat(6,3)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,5)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,6)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,7)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,8)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,9)=(-4.d0, 0.d0)
|
|
|
|
char_mat(6,10)=( 4.d0, 0.d0)
|
|
|
|
char_mat(6,12)=(-1.d0, 0.d0)
|
|
|
|
char_mat(6,13)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,14)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,15)=( 0.d0, 0.d0)
|
|
|
|
char_mat(6,16)=( 0.d0, 0.d0)
|
|
|
|
ELSE
|
|
|
|
CALL errore('set_irr_rap_so','code number not allowed',1)
|
|
|
|
END IF
|
|
|
|
|
|
|
|
RETURN
|
|
|
|
END SUBROUTINE set_irr_rap_so
|
|
|
|
|
|
|
|
!--------------------------------------------------------------------------
|
|
|
|
FUNCTION is_complex_so(code)
|
|
|
|
!--------------------------------------------------------------------------
|
|
|
|
! This function receives a code of the group and provide .true. or
|
|
|
|
! .false. if the double group HAS or HAS NOT complex irreducible
|
|
|
|
! representations.
|
|
|
|
! The order is the following:
|
|
|
|
!
|
|
|
|
! 1 "C_1 " F 11 "D_6 " F 21 "D_3h" F 31 "O " F
|
|
|
|
! 2 "C_i " F 12 "C_2v" F 22 "D_4h" F 32 "O_h " F
|
|
|
|
! 3 "C_s " T 13 "C_3v" T 23 "D_6h" F
|
|
|
|
! 4 "C_2 " T 14 "C_4v" F 24 "D_2d" F
|
|
|
|
! 5 "C_3 " T 15 "C_6v" F 25 "D_3d" T
|
|
|
|
! 6 "C_4 " T 16 "C_2h" T 26 "S_4 " T
|
|
|
|
! 7 "C_6 " T 17 "C_3h" T 27 "S_6 " T
|
|
|
|
! 8 "D_2 " F 18 "C_4h" T 28 "T " T
|
|
|
|
! 9 "D_3 " T 19 "C_6h" T 29 "T_h " T
|
|
|
|
! 10 "D_4 " F 20 "D_2h" F 30 "T_d " F
|
|
|
|
!
|
|
|
|
IMPLICIT NONE
|
|
|
|
|
|
|
|
INTEGER :: code
|
|
|
|
LOGICAL :: is_complex_so
|
|
|
|
|
|
|
|
LOGICAL :: complex_aux(32)
|
|
|
|
|
|
|
|
data complex_aux / .FALSE., .FALSE., .TRUE., .TRUE., .TRUE. , &
|
|
|
|
.TRUE. , .TRUE. , .FALSE., .TRUE., .FALSE., &
|
|
|
|
.FALSE., .FALSE., .TRUE., .FALSE., .FALSE., &
|
|
|
|
.TRUE., .TRUE. , .TRUE., .TRUE., .FALSE., &
|
|
|
|
.FALSE., .FALSE., .FALSE., .FALSE., .TRUE., &
|
|
|
|
.TRUE. , .TRUE. , .TRUE. , .TRUE. , .FALSE., &
|
|
|
|
.FALSE., .FALSE. /
|
|
|
|
|
|
|
|
IF (code < 1 .OR. code > 32 ) CALL errore('is_complex', &
|
|
|
|
'code is out of range',1)
|
|
|
|
|
|
|
|
is_complex_so= complex_aux(code)
|
|
|
|
|
|
|
|
RETURN
|
|
|
|
END FUNCTION is_complex_so
|
|
|
|
|
|
|
|
|
|
|
|
!
|
|
|
|
!----------------------------------------------------------------------------
|
|
|
|
SUBROUTINE write_group_info(flag)
|
|
|
|
!----------------------------------------------------------------------------
|
|
|
|
!
|
|
|
|
! This routine writes on output the main information on the point group
|
|
|
|
! If flag is .false. writes only the character table. If flag is .true.
|
|
|
|
! writes also the elements of each class.
|
|
|
|
!
|
|
|
|
!
|
|
|
|
USE rap_point_group, ONLY : code_group, nclass, nelem, elem, which_irr, &
|
|
|
|
char_mat, name_rap, name_class, gname
|
|
|
|
USE rap_point_group_so, ONLY : nrap, nelem_so, elem_so, has_e, &
|
|
|
|
which_irr_so, char_mat_so, name_rap_so, &
|
|
|
|
name_class_so, d_spin, name_class_so1
|
|
|
|
USE rap_point_group_is, ONLY : code_group_is, gname_is
|
|
|
|
USE spin_orb, ONLY : domag
|
|
|
|
USE noncollin_module, ONLY : noncolin
|
|
|
|
USE io_global, ONLY : stdout
|
|
|
|
|
|
|
|
IMPLICIT NONE
|
|
|
|
|
2006-12-01 22:41:55 +08:00
|
|
|
INTEGER :: iclass, irot, i, idx
|
2006-08-23 01:01:13 +08:00
|
|
|
LOGICAL :: is_complex, is_complex_so, flag
|
|
|
|
|
|
|
|
IF (noncolin) THEN
|
|
|
|
IF (domag) THEN
|
|
|
|
WRITE(stdout,'(/,5x,"the magnetic double point group is ", &
|
|
|
|
& a11," [",a11,"]")') &
|
|
|
|
gname, gname_is
|
|
|
|
WRITE(stdout,'(5x,"using the double point group ",a11)') &
|
|
|
|
gname_is
|
|
|
|
ELSE
|
|
|
|
WRITE(stdout,'(/,5x,"double point group ",a11)') gname
|
|
|
|
END IF
|
|
|
|
WRITE(stdout,'(5x, "there are", i3," classes and",i3, &
|
2006-09-09 01:13:41 +08:00
|
|
|
& " irreducible representations")') nclass, nrap
|
2006-08-23 01:01:13 +08:00
|
|
|
ELSE
|
|
|
|
WRITE(stdout,'(/,5x,"point group ",a11)') gname
|
|
|
|
WRITE(stdout,'(5x, "there are", i3," classes")') nclass
|
|
|
|
ENDIF
|
|
|
|
WRITE(stdout,'(5x, "the character table:")')
|
|
|
|
IF (noncolin) THEN
|
|
|
|
WRITE(stdout,'(/,7x,12(a5,1x))') (name_class_so(irot), &
|
|
|
|
irot=1,MIN(12,nclass))
|
|
|
|
WRITE(stdout,'(7x,12(a5,1x))') (name_class_so1(irot), &
|
|
|
|
irot=1,MIN(12,nclass))
|
|
|
|
|
|
|
|
DO iclass=1,nrap
|
|
|
|
WRITE(stdout,'(a5,12f6.2)') name_rap_so(iclass), &
|
|
|
|
(REAL(char_mat_so(iclass,irot)), irot=1,MIN(nclass,12))
|
|
|
|
END DO
|
|
|
|
IF (nclass > 12 ) THEN
|
|
|
|
WRITE(stdout,'(/,7x,12(a5,1x))') (name_class_so(irot), &
|
|
|
|
irot=13,nclass)
|
|
|
|
WRITE(stdout,'(7x,12(a5,1x))') (name_class_so1(irot), &
|
|
|
|
irot=13,nclass)
|
|
|
|
DO iclass=1,nrap
|
|
|
|
WRITE(stdout,'(a5,12f6.2)') name_rap_so(iclass), &
|
|
|
|
(REAL(char_mat_so(iclass,irot)), irot=13,nclass)
|
|
|
|
END DO
|
|
|
|
END IF
|
2006-12-01 22:41:55 +08:00
|
|
|
idx=code_group
|
|
|
|
IF (noncolin.and.domag) idx=code_group_is
|
|
|
|
IF (is_complex_so(idx)) THEN
|
2006-08-23 01:01:13 +08:00
|
|
|
WRITE(stdout,'(/,5x,"imaginary part")')
|
|
|
|
WRITE(stdout,'(/,7x,12(a5,1x))') (name_class_so(irot), &
|
|
|
|
irot=1,MIN(12,nclass))
|
|
|
|
WRITE(stdout,'(7x,12(a5,1x))') (name_class_so1(irot), &
|
|
|
|
irot=1,MIN(12,nclass))
|
|
|
|
DO iclass=1,nrap
|
|
|
|
WRITE(stdout,'(a5,12f6.2)') name_rap_so(iclass), &
|
|
|
|
(AIMAG(char_mat_so(iclass,irot)),irot=1, MIN(nclass,12))
|
|
|
|
END DO
|
|
|
|
IF (nclass > 12 ) THEN
|
|
|
|
WRITE(stdout,'(/,7x,12(a5,1x))') (name_class_so(irot), &
|
|
|
|
irot=13,nclass)
|
|
|
|
WRITE(stdout,'(7x,12(a5,1x))') (name_class_so1(irot), &
|
|
|
|
irot=13,nclass)
|
|
|
|
DO iclass=1,nrap
|
|
|
|
WRITE(stdout,'(a5,12f6.2)') name_rap_so(iclass), &
|
|
|
|
(AIMAG(char_mat_so(iclass,irot)),irot=13, nclass)
|
|
|
|
END DO
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF (flag) THEN
|
|
|
|
WRITE(stdout,'(/5x, "the symmetry operations in each class:")')
|
|
|
|
DO iclass=1,nclass
|
|
|
|
WRITE(stdout,'(5x,2a5,12i5)') &
|
|
|
|
name_class_so(which_irr_so(iclass)), &
|
|
|
|
name_class_so1(which_irr_so(iclass)), &
|
|
|
|
(elem_so(i,iclass)*has_e(i,iclass), i=1,nelem_so(iclass))
|
|
|
|
ENDDO
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
WRITE(stdout,'(/,7x,12(a5,1x))') (name_class(irot),irot=1,nclass)
|
|
|
|
DO iclass=1,nclass
|
|
|
|
WRITE(stdout,'(a5,12f6.2)') name_rap(iclass), &
|
|
|
|
(REAL(char_mat(iclass,irot)),irot=1,nclass)
|
|
|
|
ENDDO
|
2006-12-01 22:41:55 +08:00
|
|
|
idx=code_group
|
|
|
|
IF (noncolin.and.domag) idx=code_group_is
|
|
|
|
IF (is_complex(idx)) THEN
|
2006-08-23 01:01:13 +08:00
|
|
|
WRITE(stdout,'(5x,"imaginary part")')
|
|
|
|
DO iclass=1,nclass
|
|
|
|
WRITE(stdout,'(a5,12f6.2)') name_rap(iclass), &
|
|
|
|
(AIMAG(char_mat(iclass,irot)),irot=1,nclass)
|
|
|
|
ENDDO
|
|
|
|
ENDIF
|
|
|
|
IF (flag) THEN
|
|
|
|
WRITE(stdout,'(/5x, "the symmetry operations in each class:")')
|
|
|
|
DO iclass=1,nclass
|
|
|
|
WRITE(stdout,'(5x,a5,12i5)') name_class(which_irr(iclass)), &
|
|
|
|
(elem(i,iclass), i=1,nelem(iclass))
|
|
|
|
ENDDO
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
RETURN
|
|
|
|
END SUBROUTINE write_group_info
|
|
|
|
|
|
|
|
!---------------------------------------------------------------------------
|
|
|
|
SUBROUTINE find_u(s,u)
|
|
|
|
!---------------------------------------------------------------------------
|
|
|
|
!
|
|
|
|
! This subroutine receives as input a 3x3 rotation matrix s, and gives
|
|
|
|
! as output the matrix u which represents the same rotation in the spin
|
|
|
|
! space. Only one of the two u matrices is given. See below for the
|
|
|
|
! definition of the sign.
|
|
|
|
!
|
|
|
|
USE kinds, ONLY : DP
|
|
|
|
USE constants, ONLY : pi
|
|
|
|
|
|
|
|
IMPLICIT NONE
|
|
|
|
REAL(DP) :: s(3,3)
|
|
|
|
|
|
|
|
COMPLEX(DP) :: u(2,2)
|
|
|
|
|
|
|
|
REAL(DP), PARAMETER :: eps=1.d-8
|
|
|
|
REAL(DP) :: det, saux(3,3), ax(3), angle, cosa, sina, angle_rot
|
|
|
|
!
|
|
|
|
! For consistency check uncomment here
|
|
|
|
!
|
|
|
|
!COMPLEX(DP) :: a, as, b, bs
|
|
|
|
!REAL(DP) :: r(3,3), r1(3,3), diff
|
|
|
|
|
|
|
|
det = s(1,1) * ( s(2,2) * s(3,3) - s(3,2) * s(2,3) )- &
|
|
|
|
s(1,2) * ( s(2,1) * s(3,3) - s(3,1) * s(2,3) )+ &
|
|
|
|
s(1,3) * ( s(2,1) * s(3,2) - s(3,1) * s(2,2) )
|
|
|
|
!
|
|
|
|
! inversion has no effect in spin space, so improper rotations are
|
|
|
|
! multiplied by inversion
|
|
|
|
!
|
|
|
|
IF (ABS(det+1.d0) < eps) THEN
|
|
|
|
saux=-s
|
|
|
|
ELSE
|
|
|
|
saux=s
|
|
|
|
ENDIF
|
|
|
|
!
|
|
|
|
! Check for identity or inversion
|
|
|
|
!
|
|
|
|
IF ((ABS(saux(1,1)-1.d0) < eps).AND. &
|
|
|
|
(ABS(saux(2,2)-1.d0) < eps).AND. &
|
|
|
|
(ABS(saux(3,3)-1.d0) < eps).AND. &
|
|
|
|
(ABS(saux(1,2)) < eps).AND.(ABS(saux(2,1)) < eps) &
|
|
|
|
.AND.(ABS(saux(2,3)) < eps).AND. &
|
|
|
|
(ABS(saux(3,2)) < eps).AND.(ABS(saux(1,3)) < eps) &
|
|
|
|
.AND.(ABS(saux(3,1)) < eps)) THEN
|
|
|
|
u(1,1)=(1.d0,0.d0)
|
|
|
|
u(1,2)=(0.d0,0.d0)
|
|
|
|
u(2,1)=(0.d0,0.d0)
|
|
|
|
u(2,2)=(1.d0,0.d0)
|
|
|
|
RETURN
|
|
|
|
ENDIF
|
|
|
|
!
|
|
|
|
! Find the rotation axis and the rotation angle
|
|
|
|
!
|
|
|
|
CALL versor(saux,ax)
|
|
|
|
angle=angle_rot(saux)
|
|
|
|
!write(6,'(3f12.5,5x,f12.5)') ax(1), ax(2), ax(3), angle
|
|
|
|
angle=0.5d0*angle*pi/180.d0
|
|
|
|
cosa=COS(angle)
|
|
|
|
sina=SIN(angle)
|
|
|
|
!write(6,'(2f12.5)') cosa, sina
|
|
|
|
!
|
|
|
|
! set the spin space rotation matrix elements
|
|
|
|
!
|
|
|
|
u(1,1)=CMPLX(cosa,-ax(3)*sina)
|
|
|
|
u(1,2)=CMPLX(-ax(2)*sina, -ax(1)*sina)
|
|
|
|
u(2,1)=-CONJG(u(1,2))
|
|
|
|
u(2,2)=CONJG(u(1,1))
|
|
|
|
!
|
|
|
|
! To each 3x3 rotation one can associate two 2x2 rotation matrices in spin
|
|
|
|
! space. This function returns the U matrix with positive cosa term
|
|
|
|
!
|
|
|
|
IF (cosa < -eps ) u=-u
|
|
|
|
|
|
|
|
IF (ABS(cosa) < eps) THEN
|
|
|
|
!
|
|
|
|
! Special case when cosa=0. For this rotation we must take the negative sign.
|
|
|
|
!
|
|
|
|
IF (ax(1)*ax(3) < -eps) u=-u
|
|
|
|
ENDIF
|
|
|
|
!
|
|
|
|
! Here compute the 3x3 rotation matrix starting form the axis, angle
|
|
|
|
! or from the rotation in spin space for consistency check.
|
|
|
|
!
|
|
|
|
!angle=angle*2.d0
|
|
|
|
!cosa=COS(angle)
|
|
|
|
!sina=SIN(angle)
|
|
|
|
!r1(1,1)=1.d0+(1.d0-cosa)*(ax(1)**2-1)
|
|
|
|
!r1(1,2)=-ax(3)*sina+(1.d0-cosa)*ax(1)*ax(2)
|
|
|
|
!r1(1,3)=ax(2)*sina+(1.d0-cosa)*ax(1)*ax(3)
|
|
|
|
!r1(2,1)=ax(3)*sina+(1.d0-cosa)*ax(1)*ax(2)
|
|
|
|
!r1(2,2)=1.d0+(1.d0-cosa)*(ax(2)**2-1)
|
|
|
|
!r1(2,3)=-ax(1)*sina+(1.d0-cosa)*ax(2)*ax(3)
|
|
|
|
!r1(3,1)=-ax(2)*sina+(1.d0-cosa)*ax(1)*ax(3)
|
|
|
|
!r1(3,2)=ax(1)*sina+(1.d0-cosa)*ax(2)*ax(3)
|
|
|
|
!r1(3,3)=1.d0+(1.d0-cosa)*(ax(3)**2-1)
|
|
|
|
|
|
|
|
!a=u(1,1)
|
|
|
|
!as=u(2,2)
|
|
|
|
!b=u(1,2)
|
|
|
|
!bs=-u(2,1)
|
|
|
|
|
|
|
|
!r(1,1)=0.5d0*(a**2+as**2-b**2-bs**2)
|
|
|
|
!r(1,2)=0.5d0*(0.d0,1.d0)*(as**2+bs**2-a**2-b**2)
|
|
|
|
!r(1,3)=-(a*b+as*bs)
|
|
|
|
|
|
|
|
!r(2,1)=-0.5d0*(0.d0,1.d0)*(as**2-a**2+b**2-bs**2)
|
|
|
|
!r(2,2)=0.5d0*(a**2+b**2+as**2+bs**2)
|
|
|
|
!r(2,3)=(0.d0,1.d0)*(as*bs-a*b)
|
|
|
|
|
|
|
|
!r(3,1)=(bs*a+as*b)
|
|
|
|
!r(3,2)=(0.d0,1.d0)*(as*b-bs*a)
|
|
|
|
!r(3,3)=(a*as-b*bs)
|
|
|
|
|
|
|
|
!diff=ABS(r(1,1)-saux(1,1))+ &
|
|
|
|
! ABS(r(1,2)-saux(1,2))+ &
|
|
|
|
! ABS(r(1,3)-saux(1,3))+ &
|
|
|
|
! ABS(r(2,1)-saux(2,1))+ &
|
|
|
|
! ABS(r(2,2)-saux(2,2))+ &
|
|
|
|
! ABS(r(2,3)-saux(2,3))+ &
|
|
|
|
! ABS(r(3,1)-saux(3,1))+ &
|
|
|
|
! ABS(r(3,2)-saux(3,2))+ &
|
|
|
|
! ABS(r(3,3)-saux(3,3))
|
|
|
|
|
|
|
|
|
|
|
|
!write(6,*) diff
|
|
|
|
!write(6,'(3f15.5)') r1(1,1),r1(1,2),r1(1,3)
|
|
|
|
!write(6,'(3f15.5)') r1(2,1),r1(2,2),r1(2,3)
|
|
|
|
!write(6,'(3f15.5)') r1(3,1),r1(3,2),r1(3,3)
|
|
|
|
!write(6,*)
|
|
|
|
!write(6,'(3f15.5)') r(1,1),r(1,2),r(1,3)
|
|
|
|
!write(6,'(3f15.5)') r(2,1),r(2,2),r(2,3)
|
|
|
|
!write(6,'(3f15.5)') r(3,1),r(3,2),r(3,3)
|
|
|
|
!write(6,*)
|
|
|
|
!write(6,'(4f15.5)') u(1,1),u(1,2)
|
|
|
|
!write(6,'(4f15.5)') u(2,1),u(2,2)
|
|
|
|
!
|
|
|
|
RETURN
|
|
|
|
END SUBROUTINE find_u
|
|
|
|
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
FUNCTION set_e(hase,ind)
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
IMPLICIT NONE
|
|
|
|
INTEGER :: set_e, hase, ind
|
|
|
|
|
|
|
|
IF (hase==-1) THEN
|
|
|
|
set_e=ind+1
|
|
|
|
ELSE
|
|
|
|
set_e=ind
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
RETURN
|
|
|
|
END FUNCTION set_e
|
|
|
|
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
SUBROUTINE check_tgroup(nsym,a,b)
|
|
|
|
!-----------------------------------------------------------------------------
|
|
|
|
!
|
|
|
|
! This subroutine receives a set of 2x2 and 3x3 rotation matrices and
|
|
|
|
! checks if they are a group.
|
|
|
|
!
|
|
|
|
USE kinds, ONLY : DP
|
|
|
|
IMPLICIT NONE
|
|
|
|
COMPLEX(DP) :: a(2,2,48), c(2,2), a1(2,2), a2(2,2), a3(2,2)
|
|
|
|
REAL(DP) :: b(3,3,48), d(3,3), b1(3,3), b2(3,3), b3(3,3)
|
|
|
|
INTEGER :: nsym, done
|
|
|
|
LOGICAL :: compare_mat_so
|
|
|
|
|
|
|
|
INTEGER :: i, j, k
|
|
|
|
|
|
|
|
DO i=1,nsym
|
|
|
|
a1(:,:)=a(:,:,i)
|
|
|
|
b1(:,:)=b(:,:,i)
|
|
|
|
DO j=1,nsym
|
|
|
|
a2(:,:)=a(:,:,j)
|
|
|
|
b2(:,:)=b(:,:,j)
|
|
|
|
c=MATMUL(a1,a2)
|
|
|
|
d=MATMUL(b1,b2)
|
|
|
|
done=0
|
|
|
|
do k=1,nsym
|
|
|
|
a3(:,:)=a(:,:,k)
|
|
|
|
b3(:,:)=b(:,:,k)
|
|
|
|
IF (compare_mat_so(d,c,b3,a3)) THEN
|
|
|
|
done=done+1
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
IF (done.ne.1) write(6,*) 'problem, i,j',i,j
|
|
|
|
END DO
|
|
|
|
END DO
|
|
|
|
RETURN
|
|
|
|
END SUBROUTINE check_tgroup
|