dyne42
C DYNE42 SOURCE CHAT 05/01/12 23:17:52 5004 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 XROTA(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 XROTA(1,ID) = XXGP(ID) - XPROJ*XAXROT(ID) 13 CONTINUE XROTA(2,1)=XAXROT(2)*XROTA(1,3)-XAXROT(3)*XROTA(1,2) XROTA(2,2)=XAXROT(3)*XROTA(1,1)-XAXROT(1)*XROTA(1,3) XROTA(2,3)=XAXROT(1)*XROTA(1,2)-XAXROT(2)*XROTA(1,1) ELSE IF (XAXROT(1).GT.0) THEN ISIGNE =1 ELSE ISIGNE = -1 ENDIF DO 14 ID=1,IDIM XROTA(1,ID) = XXGP(ID) 14 CONTINUE XROTA(2,1)=-ISIGNE*XROTA(1,2) XROTA(2,2)= ISIGNE*XROTA(1,1) ENDIF * ELSE DO 18 ID=1,IDIM XROTA(1,ID)=0.D0 XROTA(2,ID)=0.D0 18 CONTINUE ENDIF * DO 20 ID=(IDIM+1),IDIMB XROTA(1,ID)=0.D0 XROTA(2,ID)=0.D0 20 CONTINUE END
© Cast3M 2003 - Tous droits réservés.
Mentions légales