C DYNE42    SOURCE    PV090527  24/12/25    21:15:02     12109          
        SUBROUTINE DYNE42(XDROTA,XAXROT,IPOINT,ICDG,IDIMB,MERR)
      IMPLICIT INTEGER(I-N)
        IMPLICIT REAL*8(A-H,O-Z)
*---------------------------------------------------------------*
*                                                               *
*     Opérateur DYNE : algorithme de Fu - de Vogelaere          *
*     ________________________________________________          *
*                                                               *
*     Pour les corps rigides, calcul des fausses déformées      *
*     modales de rotation                   .                   *
*                                                               *
*     Paramètres                                                *
*                                                               *
*  es  XAXROT  Tableau contenant l'axe de rotation              *
*  e   MERR    Indique si le calcul s'est effectué correctement *
*  e   IPOINT  Numéro du point ou le calcul s'effectue          *
*  e   ICDG    Numéro du point centre de gravité du corps       *
*  e   IDIMB   Dimension de travail                             *
*                                                               *
*                                                               *
*     Auteur, date de création:                                 *
*                                                               *
*     Samuel DURAND      : le 10 Octobre 1996 : Création        *
*                                                               *
*                                                               *
*                                                               *
*                                                               *
*---------------------------------------------------------------*
*

-INC PPARAM
-INC CCOPTIO
-INC SMCOORD
*
        REAL*8  XDROTA(2,*),XAXROT(3),XCDG(3),XPOINT(3)
        REAL*8  XXGP(3)
*
        XEPSI=0.000000000001
        IF (MERR.EQ.1) THEN
          DO 9 ID=1,IDIM
*   Coordonnées du centre de gravité G
            XCDG(ID)=XCOOR((ICDG-1)*(IDIM+1) +ID)
*   Coordonnées du point du maillage P
            XPOINT(ID) = XCOOR((IPOINT-1)*(IDIM+1) +ID)
 9        CONTINUE
            XPROJ = 0.D0
            DO 10 ID=1,IDIM
                XXGP(ID) = XPOINT(ID) - XCDG(ID)
 10         CONTINUE
            IF (IDIM.EQ.3) THEN
*   Vecteur GP projetté sur le plan de rotation
                DO 11 ID=1,IDIM
                    XPROJ = XPROJ + XXGP(ID)*XAXROT(ID)
 11             CONTINUE
                DO 13 ID=1,IDIM
                    XDROTA(1,ID) = XXGP(ID) - XPROJ*XAXROT(ID)
 13             CONTINUE
                XDROTA(2,1)=XAXROT(2)*XDROTA(1,3)-XAXROT(3)*XDROTA(1,2)
                XDROTA(2,2)=XAXROT(3)*XDROTA(1,1)-XAXROT(1)*XDROTA(1,3)
                XDROTA(2,3)=XAXROT(1)*XDROTA(1,2)-XAXROT(2)*XDROTA(1,1)
            ELSE
                  IF (XAXROT(1).GT.0) THEN
                      ISIGNE =1
                  ELSE
                      ISIGNE = -1
                  ENDIF
                DO 14 ID=1,IDIM
                    XDROTA(1,ID) = XXGP(ID)
 14             CONTINUE
                    XDROTA(2,1)=-ISIGNE*XDROTA(1,2)
                    XDROTA(2,2)= ISIGNE*XDROTA(1,1)
            ENDIF
*
        ELSE
            DO 18 ID=1,IDIM
                XDROTA(1,ID)=0.D0
                XDROTA(2,ID)=0.D0
 18         CONTINUE
        ENDIF
*
            DO 20 ID=(IDIM+1),IDIMB
                XDROTA(1,ID)=0.D0
                XDROTA(2,ID)=0.D0
 20         CONTINUE
        END



 
