C ROTVEC SOURCE CHAT 05/01/13 03:05:42 5004 SUBROUTINE ROTVEC(VECT,OMEG,IDIM,KERRE) C----------------------------------------------------------------------- C ROUTINE DE ROTATION D'UN VECTEUR DANS L'HYPOTHESE DES PETITES C ROTATIONS C----------------------------------------------------------------------- C ENTREE C ------ VECT LE VECTEUR A REACTUALISER ( QUELCONQUE ) C OMEG LE VECTEUR ROTATION C IDIM INDICE DE LA DIMENSION ( 2 OU 3 ) C SORTIE C ------ VECT LE VECTEUR REACTUALISE ( NORME ) C KERRE INDICE D'ERREUR ( 0 SI TOUT EST OK ) C----------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION VECT(*),U(3),OMEG(*) C KERRE=0 DO 1 I=1,IDIM 1 U(I)=VECT(I) C IF(IDIM.EQ.3) THEN VECT(1)=OMEG(2)*U(3)-OMEG(3)*U(2)+U(1) VECT(2)=OMEG(3)*U(1)-OMEG(1)*U(3)+U(2) VECT(3)=OMEG(1)*U(2)-OMEG(2)*U(1)+U(3) C ELSE IF (IDIM.EQ.2) THEN VECT(1)=-OMEG(1)*U(2)+U(1) VECT(2)= OMEG(1)*U(1)+U(2) ENDIF C XNOR=0.D0 DO 2 I=1,IDIM 2 XNOR=XNOR+VECT(I)*VECT(I) IF(XNOR.EQ.0.D0) THEN KERRE=3 RETURN ENDIF XNOR=1.D0/SQRT(XNOR) DO 3 I=1,IDIM 3 VECT(I)=VECT(I)*XNOR RETURN END