1 : C ROTA3D SOURCE CHAT 05/01/13 03:04:51 5004 2 : SUBROUTINE ROTA3D(ROTATS,TATORS,ROTATE,TATORE, 3 : . VECX,VECY,VECZ,ANGLE) 4 : IMPLICIT INTEGER(I-N) 5 : IMPLICIT REAL*8 (A-H,O-Z) 6 : DIMENSION ROTATS(6,6),TATORS(6,6), 7 : . ROTATE(6,6),TATORE(6,6), 8 : . R(6,6),VECX(3),VECY(3),VECZ(3) 9 : C 10 : C CETTE ROUTINE CALCUL LA MATRICE DE ROTATION 3D ROTATS ET SON 11 : C INVERSE TATORS POUR SIGMA (ROTATE ET TATORE POUR EPSILON) 12 : C 13 : C EXEMPLE : SIGFI = ROTATS * SIGIN 14 : C SIGIN = TATORS * SIGFI 15 : C 16 : C ENTREES : 17 : C 18 : C VECX : VECTEUR PROPRE DE LA DIRECTION X 19 : C VECY : VECTEUR PROPRE DE LA DIRECTION Y 20 : C VECZ : VECTEUR PROPRE DE LA DIRECTION Z 21 : C ANGLE : ANGLE DANS LE PLAN X-Y AVEC LE VECTEUR X (RADIAN) 22 : C 23 : C SORTIES : 24 : C 25 : C ROTATS : MATRICE DE ROTATION EN 3D POUR SIGMA 26 : C TATORS : MATRICE INVERSE 27 : C 28 : C ROTATE : MATRICE DE ROTATION EN 3D POUR EPSILON 29 : C TATORE : MATRICE INVERSE 30 : C 31 : C INITIALISATION 32 : C 33 : X1=VECX(1) 34 : X2=VECX(2) 35 : X3=VECX(3) 36 : Y1=VECY(1) 37 : Y2=VECY(2) 38 : Y3=VECY(3) 39 : Z1=VECZ(1) 40 : Z2=VECZ(2) 41 : Z3=VECZ(3) 42 : C 43 : C=COS(ANGLE) 44 : S=SIN(ANGLE) 45 : CC=C*C 46 : SS=S*S 47 : CS=C*S 48 : C 49 : X1X1=X1*X1 50 : X2X2=X2*X2 51 : X3X3=X3*X3 52 : C 53 : Y1Y1=Y1*Y1 54 : Y2Y2=Y2*Y2 55 : Y3Y3=Y3*Y3 56 : C 57 : Z1Z1=Z1*Z1 58 : Z2Z2=Z2*Z2 59 : Z3Z3=Z3*Z3 60 : C 61 : X1X2=X1*X2 62 : X2X3=X2*X3 63 : X3X1=X3*X1 64 : C 65 : Y1Y2=Y1*Y2 66 : Y2Y3=Y2*Y3 67 : Y3Y1=Y3*Y1 68 : C 69 : Z1Z2=Z1*Z2 70 : Z2Z3=Z2*Z3 71 : Z3Z1=Z3*Z1 72 : C 73 : X1Y1=X1*Y1 74 : X2Y2=X2*Y2 75 : X3Y3=X3*Y3 76 : C 77 : Y1Z1=Y1*Z1 78 : Y2Z2=Y2*Z2 79 : Y3Z3=Y3*Z3 80 : C 81 : Z1X1=Z1*X1 82 : Z2X2=Z2*X2 83 : Z3X3=Z3*X3 84 : C 85 : X1Y2=X1*Y2 86 : Y2Z3=Y2*Z3 87 : Z3X1=Z3*X1 88 : C 89 : X2Y3=X2*Y3 90 : Y3Z1=Y3*Z1 91 : Z1X2=Z1*X2 92 : C 93 : X3Y1=X3*Y1 94 : Y1Z2=Y1*Z2 95 : Z2X3=Z2*X3 96 : C 97 : X2Y1=X2*Y1 98 : Y3Z2=Y3*Z2 99 : Z1X3=Z1*X3 100 : C 101 : X3Y2=X3*Y2 102 : Y1Z3=Y1*Z3 103 : Z2X1=Z2*X1 104 : C 105 : X1Y3=X1*Y3 106 : Y2Z1=Y2*Z1 107 : Z3X2=Z3*X2 108 : C 109 : R(1,1)=X1X1*CC+Y1Y1*SS+2.D0*X1Y1*CS 110 : R(1,2)=X1X1*SS+Y1Y1*CC-2.D0*X1Y1*CS 111 : R(1,3)=Z1Z1 112 : R(1,4)=-X1X1*CS+X1Y1*(CC-SS)+Y1Y1*CS 113 : R(1,5)=-Z1X1*S+Y1Z1*C 114 : R(1,6)=Z1X1*C+Y1Z1*S 115 : C 116 : R(2,1)=X2X2*CC+Y2Y2*SS+2.D0*X2Y2*CS 117 : R(2,2)=X2X2*SS+Y2Y2*CC-2.D0*X2Y2*CS 118 : R(2,3)=Z2Z2 119 : R(2,4)=-X2X2*CS+X2Y2*(CC-SS)+Y2Y2*CS 120 : R(2,5)=-Z2X2*S+Y2Z2*C 121 : R(2,6)=Z2X2*C+Y2Z2*S 122 : C 123 : R(3,1)=X3X3*CC+Y3Y3*SS+2.D0*X3Y3*CS 124 : R(3,2)=X3X3*SS+Y3Y3*CC-2.D0*X3Y3*CS 125 : R(3,3)=Z3Z3 126 : R(3,4)=-X3X3*CS+X3Y3*(CC-SS)+Y3Y3*CS 127 : R(3,5)=-Z3X3*S+Y3Z3*C 128 : R(3,6)=Z3X3*C+Y3Z3*S 129 : C 130 : R(4,1)=X1X2*CC+Y1Y2*SS+X1Y2*CS+X2Y1*CS 131 : R(4,2)=X1X2*SS+Y1Y2*CC-X1Y2*CS-X2Y1*CS 132 : R(4,3)=Z1Z2 133 : R(4,4)=-2.D0*X1X2*CS+X1Y2*(CC-SS)+X2Y1*(CC-SS)+2.D0*Y1Y2*CS 134 : R(4,5)=-Z1X2*S-Z2X1*S+Y1Z2*C+Y2Z1*C 135 : R(4,6)=Z1X2*C+Z2X1*C+Y1Z2*S+Y2Z1*S 136 : C 137 : R(5,1)=X2X3*CC+Y2Y3*SS+X2Y3*CS+X3Y2*CS 138 : R(5,2)=X2X3*SS+Y2Y3*CC-X2Y3*CS-X3Y2*CS 139 : R(5,3)=Z2Z3 140 : R(5,4)=-2.D0*X2X3*CS+X2Y3*(CC-SS)+X3Y2*(CC-SS)+2.D0*Y2Y3*CS 141 : R(5,5)=-Z2X3*S-Z3X2*S+Y2Z3*C+Y3Z2*C 142 : R(5,6)=Z2X3*C+Z3X2*C+Y2Z3*S+Y3Z2*S 143 : C 144 : R(6,1)=X3X1*CC+Y3Y1*SS+X3Y1*CS+X1Y3*CS 145 : R(6,2)=X3X1*SS+Y3Y1*CC-X3Y1*CS-X1Y3*CS 146 : R(6,3)=Z3Z1 147 : R(6,4)=-2.D0*X3X1*CS+X3Y1*(CC-SS)+X1Y3*(CC-SS)+2.D0*Y3Y1*CS 148 : R(6,5)=-Z3X1*S-Z1X3*S+Y3Z1*C+Y1Z3*C 149 : R(6,6)=Z3X1*C+Z1X3*C+Y3Z1*S+Y1Z3*S 150 : C 151 : DO 10 I=1,6 152 : DO 10 J=1,6 153 : ROTATS(I,J)=R(I,J) 154 : TATORS(I,J)=R(J,I) 155 : 10 CONTINUE 156 : C 157 : DO 20 I=1,3 158 : DO 20 J=4,6 159 : ROTATS(I,J)=2.D0*ROTATS(I,J) 160 : TATORS(I,J)=2.D0*TATORS(I,J) 161 : 20 CONTINUE 162 : C 163 : C CAS DU TENSEUR DE DEFORMATIONS 164 : C 165 : DO 30 I=1,6 166 : DO 30 J=1,6 167 : ROTATE(I,J)=R(I,J) 168 : TATORE(I,J)=R(J,I) 169 : 30 CONTINUE 170 : C 171 : DO 40 I=4,6 172 : DO 40 J=1,3 173 : ROTATE(I,J)=2.0D0*ROTATE(I,J) 174 : TATORE(I,J)=2.0D0*TATORE(I,J) 175 : 40 CONTINUE 176 : C 177 : RETURN 178 : END 179 :
© Cast3M 2003 - All rights reserved.
Disclaimer