1! 2! Copyright (C) 1996-2016 The SIESTA group 3! This file is distributed under the terms of the 4! GNU General Public License: see COPYING in the top directory 5! or http://www.gnu.org/copyleft/gpl.txt. 6! See Docs/Contributors.txt for a list of contributors. 7! 8 SUBROUTINE ROTATE (N,X,ALPHA,BETA,GAMMA) 9 10C ROTATES N VECTORS X(3,N) ACCORDING TO THE EULER ANGLES: 11C ALPHA: FIRST ROTATION AROUND AXIS Z 12C BETA : SECOND ROTATION AROUND Y 13C GAMMA: THIRD ROTATION AROUND Z AGAIN 14C WRITTEN BY J.SOLER. AUG/91 15 16* IMPLICIT DOUBLE PRECISION (A-H,O-Z) 17 DIMENSION X(3,N),RMAT(3,3),XNEW(3) 18 ZERO=0.D0 19 PI=ACOS(-1.D0) 20 CONS=PI/180.D0 21 SA=SIN(-ALPHA*CONS) 22 SB=SIN(-BETA *CONS) 23 SG=SIN(-GAMMA*CONS) 24 CA=COS(-ALPHA*CONS) 25 CB=COS(-BETA *CONS) 26 CG=COS(-GAMMA*CONS) 27 RMAT(1,1)= CB*CA*CG-SA*SG 28 RMAT(1,2)= CB*SA*CG+CA*SG 29 RMAT(1,3)=-SB*CG 30 RMAT(2,1)=-CB*CA*SG-SA*CG 31 RMAT(2,2)=-CB*SA*SG+CA*CG 32 RMAT(2,3)= SB*SG 33 RMAT(3,1)= SB*CA 34 RMAT(3,2)= SB*SA 35 RMAT(3,3)= CB 36 DO 40 I=1,N 37 DO 20 J=1,3 38 XNEW(J)=ZERO 39 DO 10 K=1,3 40 XNEW(J)=XNEW(J)+RMAT(J,K)*X(K,I) 41 10 CONTINUE 42 20 CONTINUE 43 DO 30 J=1,3 44 X(J,I)=XNEW(J) 45 30 CONTINUE 46 40 CONTINUE 47 END 48 49