2008-08-22 23:53:34 +08:00
|
|
|
!
|
2009-08-03 17:19:02 +08:00
|
|
|
! Copyright (C) 2008 Quantum ESPRESSO group
|
2008-08-22 23:53:34 +08:00
|
|
|
! 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 .
|
|
|
|
!
|
2006-01-20 22:28:51 +08:00
|
|
|
!-----------------------------------------------------------------------
|
|
|
|
SUBROUTINE cubicspinsym(d_spin)
|
|
|
|
!-----------------------------------------------------------------------
|
|
|
|
!
|
|
|
|
! Provides symmetry operations in the spin space for all cubic and
|
|
|
|
! lower-symmetry (excepted Hexagonal and Trigonal) bravais lattices
|
|
|
|
!
|
2010-06-14 21:45:31 +08:00
|
|
|
USE kinds
|
2010-02-13 04:57:55 +08:00
|
|
|
USE symm_base, ONLY : nsym, sname
|
2006-01-20 22:28:51 +08:00
|
|
|
!
|
|
|
|
IMPLICIT NONE
|
|
|
|
!
|
|
|
|
! first the input/output variables
|
|
|
|
!
|
|
|
|
COMPLEX(DP) :: d_spin(2,2,48)
|
|
|
|
! output: the symmetries of the system in the j=1/2 subspace
|
2010-06-14 21:45:31 +08:00
|
|
|
!
|
2006-01-20 22:28:51 +08:00
|
|
|
! here the local parameters
|
|
|
|
!
|
2010-06-14 21:45:31 +08:00
|
|
|
REAL(DP), PARAMETER :: cost1=0.707106781186547d0, cost2=0.5d0, &
|
|
|
|
mcost1=-0.707106781186547d0, mcost2=-0.5d0
|
2006-01-20 22:28:51 +08:00
|
|
|
!
|
|
|
|
! and the local variables
|
|
|
|
!
|
|
|
|
COMPLEX(DP) :: id_spin(2,2,48)
|
|
|
|
!
|
|
|
|
! symmetry matrices in the j=1/2 subspace
|
|
|
|
!
|
2010-06-14 21:45:31 +08:00
|
|
|
INTEGER :: i,j
|
2006-01-20 22:28:51 +08:00
|
|
|
!
|
|
|
|
! counter over the rotations
|
|
|
|
! counter over the rotations
|
|
|
|
!
|
|
|
|
CHARACTER :: isname (48) * 45
|
|
|
|
!
|
|
|
|
! full name of the rotational part of each symmetry operation
|
2010-06-14 21:45:31 +08:00
|
|
|
!
|
2006-01-20 22:28:51 +08:00
|
|
|
data isname/&
|
|
|
|
& 'identity ',&
|
|
|
|
& '180 deg rotation - cart. axis [0,0,1] ',&
|
|
|
|
& '180 deg rotation - cart. axis [0,1,0] ',&
|
|
|
|
& '180 deg rotation - cart. axis [1,0,0] ',&
|
|
|
|
& '180 deg rotation - cart. axis [1,1,0] ',&
|
|
|
|
& '180 deg rotation - cart. axis [1,-1,0] ',&
|
|
|
|
& ' 90 deg rotation - cart. axis [0,0,-1] ',&
|
|
|
|
& ' 90 deg rotation - cart. axis [0,0,1] ',&
|
|
|
|
& '180 deg rotation - cart. axis [1,0,1] ',&
|
|
|
|
& '180 deg rotation - cart. axis [-1,0,1] ',&
|
|
|
|
& ' 90 deg rotation - cart. axis [0,1,0] ',&
|
|
|
|
& ' 90 deg rotation - cart. axis [0,-1,0] ',&
|
|
|
|
& '180 deg rotation - cart. axis [0,1,1] ',&
|
|
|
|
& '180 deg rotation - cart. axis [0,1,-1] ',&
|
|
|
|
& ' 90 deg rotation - cart. axis [-1,0,0] ',&
|
|
|
|
& ' 90 deg rotation - cart. axis [1,0,0] ',&
|
2010-05-31 16:27:56 +08:00
|
|
|
& '120 deg rotation - cart. axis [-1,-1,-1] ',&
|
2006-01-20 22:28:51 +08:00
|
|
|
& '120 deg rotation - cart. axis [-1,1,1] ',&
|
2010-05-31 16:27:56 +08:00
|
|
|
& '120 deg rotation - cart. axis [1,1,-1] ',&
|
2006-01-20 22:28:51 +08:00
|
|
|
& '120 deg rotation - cart. axis [1,-1,1] ',&
|
2010-05-31 16:27:56 +08:00
|
|
|
& '120 deg rotation - cart. axis [1,1,1] ',&
|
|
|
|
& '120 deg rotation - cart. axis [-1,1,-1] ',&
|
2006-01-20 22:28:51 +08:00
|
|
|
& '120 deg rotation - cart. axis [1,-1,-1] ',&
|
2010-05-31 16:27:56 +08:00
|
|
|
& '120 deg rotation - cart. axis [-1,-1,1] ',&
|
2006-01-20 22:28:51 +08:00
|
|
|
& 'inversion ',&
|
|
|
|
& 'inv. 180 deg rotation - cart. axis [0,0,1] ',&
|
|
|
|
& 'inv. 180 deg rotation - cart. axis [0,1,0] ',&
|
|
|
|
& 'inv. 180 deg rotation - cart. axis [1,0,0] ',&
|
|
|
|
& 'inv. 180 deg rotation - cart. axis [1,1,0] ',&
|
|
|
|
& 'inv. 180 deg rotation - cart. axis [1,-1,0] ',&
|
|
|
|
& 'inv. 90 deg rotation - cart. axis [0,0,-1] ',&
|
|
|
|
& 'inv. 90 deg rotation - cart. axis [0,0,1] ',&
|
|
|
|
& 'inv. 180 deg rotation - cart. axis [1,0,1] ',&
|
|
|
|
& 'inv. 180 deg rotation - cart. axis [-1,0,1] ',&
|
|
|
|
& 'inv. 90 deg rotation - cart. axis [0,1,0] ',&
|
|
|
|
& 'inv. 90 deg rotation - cart. axis [0,-1,0] ',&
|
|
|
|
& 'inv. 180 deg rotation - cart. axis [0,1,1] ',&
|
|
|
|
& 'inv. 180 deg rotation - cart. axis [0,1,-1] ',&
|
|
|
|
& 'inv. 90 deg rotation - cart. axis [-1,0,0] ',&
|
|
|
|
& 'inv. 90 deg rotation - cart. axis [1,0,0] ',&
|
|
|
|
& 'inv. 120 deg rotation - cart. axis [-1,-1,-1]',&
|
|
|
|
& 'inv. 120 deg rotation - cart. axis [-1,1,1] ',&
|
2010-05-31 16:27:56 +08:00
|
|
|
& 'inv. 120 deg rotation - cart. axis [1,1,-1]' ,&
|
2006-01-20 22:28:51 +08:00
|
|
|
& 'inv. 120 deg rotation - cart. axis [1,-1,1] ',&
|
2010-05-31 16:27:56 +08:00
|
|
|
& 'inv. 120 deg rotation - cart. axis [1,1,1] ',&
|
|
|
|
& 'inv. 120 deg rotation - cart. axis [-1,1,-1] ',&
|
2006-01-20 22:28:51 +08:00
|
|
|
& 'inv. 120 deg rotation - cart. axis [1,-1,-1]',&
|
2010-05-31 16:27:56 +08:00
|
|
|
& 'inv. 120 deg rotation - cart. axis [-1,-1,1] ' /
|
2006-01-20 22:28:51 +08:00
|
|
|
data id_spin / (-1.d0,0.d0), (0.d0,0.d0), (0.d0,0.d0), (-1.d0,0.d0), &
|
|
|
|
(0.d0,-1.d0), (0.d0,0.d0), (0.d0,0.d0), (0.d0,1.d0), &
|
|
|
|
(0.d0,0.d0), (1.d0,0.d0), (-1.d0,0.d0), (0.d0,0.d0), &
|
|
|
|
(0.d0,0.d0), (0.d0,-1.d0), (0.d0,-1.d0), (0.d0,0.d0), &
|
|
|
|
(0.d0,0.d0), (mcost1,mcost1), (cost1,mcost1),(0.d0,0.d0), &
|
|
|
|
(0.d0,0.d0), (cost1,mcost1), (mcost1,mcost1), (0.d0,0.d0), &
|
|
|
|
(cost1,mcost1), (0.d0,0.d0), (0.d0,0.d0), (cost1,cost1), &
|
|
|
|
(mcost1,mcost1),(0.d0,0.d0), (0.d0,0.d0), (mcost1,cost1), &
|
|
|
|
(0.d0,mcost1), (0.d0,mcost1), (0.d0,mcost1), (0.d0,cost1), &
|
|
|
|
(0.d0,mcost1), (0.d0,cost1), (0.d0,cost1), (0.d0,cost1), &
|
|
|
|
(mcost1,0.d0), (mcost1,0.d0), (cost1,0.d0), (mcost1,0.d0), &
|
|
|
|
(cost1,0.d0), (mcost1,0.d0), (cost1,0.d0), (cost1,0.d0), &
|
|
|
|
(0.d0,mcost1), (mcost1,0.d0), (cost1,0.d0), (0.d0,cost1), &
|
|
|
|
(0.d0,cost1), (mcost1,0.d0), (cost1,0.d0), (0.d0,mcost1), &
|
|
|
|
(mcost1,0.d0), (0.d0,cost1), (0.d0,cost1), (mcost1,0.d0), &
|
|
|
|
(mcost1,0.d0), (0.d0,mcost1), (0.d0,mcost1), (mcost1,0.d0), &
|
|
|
|
(cost2,mcost2),(mcost2,mcost2),(cost2,mcost2),(cost2,cost2), &
|
|
|
|
(mcost2,mcost2),(mcost2,cost2),(cost2,cost2),(mcost2,cost2), &
|
|
|
|
(mcost2,cost2),(mcost2,mcost2),(cost2,mcost2),(mcost2,mcost2),&
|
|
|
|
(mcost2,mcost2),(cost2,mcost2),(mcost2,mcost2),(mcost2,cost2),&
|
|
|
|
(mcost2,mcost2),(mcost2,mcost2),(cost2,mcost2),(mcost2,cost2),&
|
|
|
|
(mcost2,cost2),(mcost2,cost2),(cost2,cost2),(mcost2,mcost2),&
|
|
|
|
(cost2,mcost2),(mcost2,cost2),(cost2,cost2),(cost2,cost2), &
|
|
|
|
(mcost2,mcost2),(cost2,cost2),(mcost2,cost2),(mcost2,cost2), &
|
|
|
|
(-1.d0,0.d0), (0.d0,0.d0), (0.d0,0.d0), (-1.d0,0.d0), &
|
|
|
|
(0.d0,-1.d0), (0.d0,0.d0), (0.d0,0.d0), (0.d0,1.d0), &
|
|
|
|
(0.d0,0.d0), (1.d0,0.d0), (-1.d0,0.d0), (0.d0,0.d0), &
|
|
|
|
(0.d0,0.d0), (0.d0,-1.d0), (0.d0,-1.d0), (0.d0,0.d0), &
|
|
|
|
(0.d0,0.d0), (mcost1,mcost1), (cost1,mcost1),(0.d0,0.d0), &
|
|
|
|
(0.d0,0.d0), (cost1,mcost1), (mcost1,mcost1), (0.d0,0.d0), &
|
|
|
|
(cost1,mcost1), (0.d0,0.d0), (0.d0,0.d0), (cost1,cost1), &
|
|
|
|
(mcost1,mcost1),(0.d0,0.d0), (0.d0,0.d0), (mcost1,cost1), &
|
|
|
|
(0.d0,mcost1), (0.d0,mcost1), (0.d0,mcost1), (0.d0,cost1), &
|
|
|
|
(0.d0,mcost1), (0.d0,cost1), (0.d0,cost1), (0.d0,cost1), &
|
|
|
|
(mcost1,0.d0), (mcost1,0.d0), (cost1,0.d0), (mcost1,0.d0), &
|
|
|
|
(cost1,0.d0), (mcost1,0.d0), (cost1,0.d0), (cost1,0.d0), &
|
|
|
|
(0.d0,mcost1), (mcost1,0.d0), (cost1,0.d0), (0.d0,cost1), &
|
|
|
|
(0.d0,cost1), (mcost1,0.d0), (cost1,0.d0), (0.d0,mcost1), &
|
|
|
|
(mcost1,0.d0), (0.d0,cost1), (0.d0,cost1), (mcost1,0.d0), &
|
|
|
|
(mcost1,0.d0), (0.d0,mcost1), (0.d0,mcost1), (mcost1,0.d0), &
|
|
|
|
(cost2,mcost2),(mcost2,mcost2),(cost2,mcost2),(cost2,cost2), &
|
|
|
|
(mcost2,mcost2),(mcost2,cost2),(cost2,cost2),(mcost2,cost2), &
|
|
|
|
(mcost2,cost2),(mcost2,mcost2),(cost2,mcost2),(mcost2,mcost2),&
|
|
|
|
(mcost2,mcost2),(cost2,mcost2),(mcost2,mcost2),(mcost2,cost2),&
|
|
|
|
(mcost2,mcost2),(mcost2,mcost2),(cost2,mcost2),(mcost2,cost2),&
|
|
|
|
(mcost2,cost2),(mcost2,cost2),(cost2,cost2),(mcost2,mcost2), &
|
|
|
|
(cost2,mcost2),(mcost2,cost2),(cost2,cost2),(cost2,cost2), &
|
|
|
|
(mcost2,mcost2),(cost2,cost2), (mcost2,cost2), (mcost2,cost2) /
|
|
|
|
|
|
|
|
d_spin = (0.d0,0.d0)
|
|
|
|
DO i=1,nsym
|
|
|
|
DO j=1,48
|
|
|
|
IF (sname(i)==isname(j)) THEN
|
|
|
|
d_spin(1,1,i)=id_spin(1,1,j)
|
|
|
|
d_spin(2,1,i)=id_spin(2,1,j)
|
|
|
|
d_spin(1,2,i)=id_spin(1,2,j)
|
|
|
|
d_spin(2,2,i)=id_spin(2,2,j)
|
|
|
|
ENDIF
|
|
|
|
ENDDO
|
|
|
|
ENDDO
|
2010-06-14 21:45:31 +08:00
|
|
|
RETURN
|
2006-01-20 22:28:51 +08:00
|
|
|
!
|
|
|
|
END SUBROUTINE cubicspinsym
|