Télécharger rota3d.eso

Retour à la liste

Numérotation des lignes :

rota3d
  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.  
  180.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales