Télécharger coq8kc.eso

Retour à la liste

Numérotation des lignes :

coq8kc
  1. C COQ8KC SOURCE BP208322 20/03/11 21:15:09 10550
  2. SUBROUTINE COQ8KC(NBNO,RHOK,NBPGAU,ESP,EXCEN,WRK1,MINTE,MINTE2,
  3. . VROT)
  4. C
  5. C |--------------------------------------------------------------|
  6. C | NOUVELLE PROCEDURE DE CALCUL DE LA MATRICE DE RIGIDITE |
  7. C | CENTRIFUGE AVEC UN ELEMENT DE COQUE A 6 OU 8 NOEUDS |
  8. C | |
  9. C | INSPIRE DU CALCUL DE LA MATRICE DE MASSE |
  10. C |--------------------------------------------------------------|
  11. C | ENTREES |
  12. C | NBPGAU : NOMBRE DE POINTS DE GAUSS. |
  13. C | MINTE : FONCTIONS DE FORME AUX POINTS DE GAUSS |
  14. C | MINTE2 : FONCTIONS DE FORME AUX NOEUDS |
  15. C | RHOK : MASSE VOLUMIQUE. |
  16. C | ESP : EPAISSEUR. |
  17. C | EXCEN : EXCENTREMENT. |
  18. C | NBNO : NOMBRE DE NOEUDS |
  19. C | VROT : VECTEUR VITESSE ROTATION |
  20. C | Didier COMBESCURE mars 2003 |
  21. C |--------------------------------------------------------------|
  22. C
  23. C
  24. C
  25. IMPLICIT INTEGER(I-N)
  26. IMPLICIT REAL*8 (A-H,O-Z)
  27.  
  28. -INC SMINTE
  29. SEGMENT WRK7
  30. c REAL*8 XJI(3,3),TXR(3,3,NBNO),FINT(3,LRE),XJ(3,3),B(3,3)
  31. REAL*8 TXR(3,3,NBNO),XN(3,LRE),XN2(3,LRE),B(3,3)
  32. REAL*8 TH(NBNO),EXC(NBNO),H(NBNO)
  33. ENDSEGMENT
  34. SEGMENT/WRK1/(REL(LRE,LRE)*D,XE(3,NBNO)*D)
  35. cbp,2020 DIMENSION ROME(6,6),VROT(*)
  36. DIMENSION ROME(3,3),VROT(*)
  37.  
  38. SEGACT MINTE
  39. SEGACT WRK1*MOD
  40. LRE=6*NBNO
  41. SEGINI WRK7
  42.  
  43. C EXCENTRICITE ET EPAISSEUR CONSTANTES EN ENTREE !?!
  44. DO 5 I = 1,NBNO
  45. EXC(I)=EXCEN
  46. TH(I) = ESP
  47. 5 CONTINUE
  48. C
  49. C CALCUL DE LA MATRICE ROME = [-OMEG X OMEG X]
  50. c ou x est le produit vectoriel et OMEG le vecteur rotation
  51. c DO 9 IN=1,6
  52. c DO 9 IM=1,6
  53. c 9 ROME(IN,IM) = 0.D0
  54. Cbp,2020 : ci-dessus inutile
  55. ROME(1,1) = (-1.)*((VROT(2)**2) + (VROT(3)**2))
  56. ROME(2,2) = (-1.)*((VROT(1)**2) + (VROT(3)**2))
  57. ROME(3,3) = (-1.)*((VROT(1)**2) + (VROT(2)**2))
  58. ROME(1,2) = VROT(1)*VROT(2)
  59. ROME(1,3) = VROT(1)*VROT(3)
  60. ROME(2,3) = VROT(2)*VROT(3)
  61. ROME(2,1) = ROME(1,2)
  62. ROME(3,1) = ROME(1,3)
  63. ROME(3,2) = ROME(2,3)
  64. C
  65. C INITIALISATION DE LA MATRICE MASSE M=[0] (KCENT ici)
  66. DO 10 I = 1,6*NBNO
  67. DO 11 J = 1,6*NBNO
  68. REL(I,J) = 0.D0
  69. 11 CONTINUE
  70. 10 CONTINUE
  71. *
  72. C CALCUL DU REPERE LOCAL AUX NOEUDS :
  73. c TXR(i,j,k) = [V1,V2,V3] calcules aux NBNO noeuds (x_k)
  74. SEGACT MINTE2
  75. CALL CQ8LOC(XE,NBNO,MINTE2.SHPTOT,TXR,IRR)
  76. * SEGDES MINTE2
  77. *
  78. *
  79. *===> BOUCLE SUR LES POINTS DE GAUSS xGauss
  80. DO 80 LX = 1,NBPGAU
  81.  
  82. c coordonnees hors plan \dze, poids w et fonctiond forme Ni(xGauss)
  83. E3 = DZEGAU(LX)
  84. WT = POIGAU (LX)
  85. DO 20 I=1,NBNO
  86. H(I)=SHPTOT(1,I,LX)
  87. 20 CONTINUE
  88.  
  89. c calcul du Jacobien |J|
  90. CALL CQ8JCE(LX,NBNO,E3,XE,TH,EXC,TXR,SHPTOT,B,DET,IRR)
  91. FACT = WT*DET*RHOK
  92.  
  93. c UX UY UZ RX RY RZ
  94. c remplissage de [N] = [ Ni 0 0 | 0 +Ni*ti*\dze*V3Z -Ni*ti*\dze*V3Y ]
  95. c [ 0 Ni 0 | . 0 +Ni*ti*\dze*V3X ]
  96. c [ 0 0 Ni | antisym. 0. ]
  97. DO 30 I = 1,3
  98. DO 31 J = 1,NBNO*6
  99. XN(I,J) = 0.D0
  100. 31 CONTINUE
  101. 30 CONTINUE
  102. DO 60 J = 1,NBNO
  103. c DO 40 I = 1,3
  104. c XJI(I,I) = 0.D0
  105. c 40 CONTINUE
  106. c XJI(1,2) = TXR(1,1,J)*TXR(2,2,J) - TXR(2,1,J)*TXR(1,2,J)
  107. c XJI(1,3) = TXR(1,1,J)*TXR(3,2,J) - TXR(1,2,J)*TXR(3,1,J)
  108. c XJI(2,3) = TXR(2,1,J)*TXR(3,2,J) - TXR(2,2,J)*TXR(3,1,J)
  109. c DO 50 IK = 1,3
  110. c DO 51 JK = IK,3
  111. c XJI(JK,IK) = -XJI(IK,JK)
  112. c 51 CONTINUE
  113. c 50 CONTINUE
  114. Cbp,2020 : on fait + simple car V3 deja calcule !
  115. V3X=TXR(1,3,J)
  116. V3Y=TXR(2,3,J)
  117. V3Z=TXR(3,3,J)
  118. J1 = (J-1)*6 + 1
  119. J2 = J1 + 1
  120. J3 = J2 + 1
  121. J4 = J3 + 1
  122. J5 = J4 + 1
  123. J6 = J5 + 1
  124. A1 = H(J)*(0.5*E3*ESP+EXCEN)
  125. XN(1,J1) = H(J)
  126. cbp,2020 XN(1,J5) = A1*XJI(1,2)
  127. cbp,2020 XN(1,J6) = A1*XJI(1,3)
  128. XN(1,J5) = A1*V3Z
  129. XN(1,J6) = -1.*A1*V3Y
  130. XN(2,J2) = XN(1,J1)
  131. XN(2,J4) = -XN(1,J5)
  132. cbp,2020 XN(2,J6) = A1*XJI(2,3)
  133. XN(2,J6) = A1*V3X
  134. XN(3,J3) = XN(1,J1)
  135. XN(3,J4) = -XN(1,J6)
  136. XN(3,J5) = -XN(2,J6)
  137. 60 CONTINUE
  138.  
  139. cbp,2020 : introduction de N2 (cf. + bas)
  140. c produit : [N2] = [-OMEG X OMEG X]*[N]
  141. DO 65 I=1,3
  142. DO 66 J=1,NBNO*6
  143. XN2(I,J)=0.D0
  144. DO 67 K=1,3
  145. XN2(I,J)=XN2(I,J) + ROME(I,K)*XN(K,J)
  146. 67 CONTINUE
  147. 66 CONTINUE
  148. 65 CONTINUE
  149.  
  150. c calcul de M = \sum_ptdeGauss N^T * N \rho |J| w
  151. cbp,2020 : on prefere :
  152. c calcul de Kce = \sum_ptdeGauss N^T * [-OMEG X OMEG X] N \rho |J| w
  153. DO 70 I = 1,NBNO*6
  154. DO 71 J = I,NBNO*6
  155. DO 72 K = 1,3
  156. cbp,2020 REL(I,J) = REL(I,J) + XN(K,I)*XN(K,J)*FACT
  157. REL(I,J) = REL(I,J) + XN(K,I)*XN2(K,J)*FACT
  158. 72 CONTINUE
  159. REL(J,I) = REL(I,J)
  160. 71 CONTINUE
  161. 70 CONTINUE
  162.  
  163. 80 CONTINUE
  164. *===> FIN DE BOUCLE SUR LES POINTS DE GAUSS
  165.  
  166.  
  167. cbp,2020 : ci-dessous devient inutile
  168. c
  169. c
  170. c * specificite Kcentrifuge : on multiplie par [-OMEG x OMEG x]
  171. c c DO 90 I = 1,NBNO
  172. c c DO 91 J = 1,NBNO
  173. c c DO 92 IN = 1,3
  174. c c DO 93 IM = 1,3
  175. c DO 90 J6 = 0,(NBNO-1)*6,6
  176. c DO 91 I6 = 0,(NBNO-1)*6,6
  177. c c DO 92 IM = 1,3
  178. c c DO 93 IN = 1,3
  179. c cbp,2020-03-11: on change les indices I&J par J6&I6
  180. c c et on retourne les boucles IN&IM
  181. c c REL((6*I)-6+IN,(6*J)-6+IM)=REL((6*I)-6+IN,(6*J)-6+IM)
  182. c c . *ROME(IN,IM)
  183. c c write(*,*) 'K(',(6*I)-6+IN,',',(6*J)-6+IM,')=',
  184. c c &REL((6*I)-6+IN,(6*J)-6+IM)
  185. c cbp: ok,... REL(I6+IN,J6+IM)=REL(I6+IN,J6+IM)*ROME(IN,IM)
  186. c c ...mais on debobine la ligne ci-dessus et les boucles 92 et 93
  187. c REL(I6+1,J6+1)=REL(I6+1,J6+1)*ROME(1,1)
  188. c REL(I6+2,J6+1)=REL(I6+2,J6+1)*ROME(2,1)
  189. c REL(I6+3,J6+1)=REL(I6+3,J6+1)*ROME(3,1)
  190. c REL(I6+1,J6+2)=REL(I6+1,J6+2)*ROME(1,2)
  191. c REL(I6+2,J6+2)=REL(I6+2,J6+2)*ROME(2,2)
  192. c REL(I6+3,J6+2)=REL(I6+3,J6+2)*ROME(3,2)
  193. c REL(I6+1,J6+3)=REL(I6+1,J6+3)*ROME(1,3)
  194. c REL(I6+2,J6+3)=REL(I6+2,J6+3)*ROME(2,3)
  195. c REL(I6+3,J6+3)=REL(I6+3,J6+3)*ROME(3,3)
  196. c cbp,2020-03-11: termes de rotation mis a 0 pour l'instant
  197. c c REL((6*I)-6+IN,(6*J)-3+IM)=REL((6*I)-6+IN,(6*J)-3+IM)
  198. c c . *ROME(IN,IM)
  199. c c REL((6*I)-3+IN,(6*J)-6+IM)=REL((6*I)-3+IN,(6*J)-6+IM)
  200. c c . *ROME(IN,IM)
  201. c c REL((6*I)-3+IN,(6*J)-3+IM)=REL((6*I)-3+IN,(6*J)-3+IM)
  202. c c . *ROME(IN,IM)
  203. c c 93 CONTINUE
  204. c c 92 CONTINUE
  205. c 91 CONTINUE
  206. c 90 CONTINUE
  207. c
  208. c * FIN NORMALE
  209. c 99 CONTINUE
  210.  
  211. SEGDES WRK1
  212. * SEGDES MINTE
  213. SEGSUP WRK7
  214. RETURN
  215. END
  216.  
  217.  
  218.  
  219.  
  220.  

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