Télécharger kpcoq6.eso

Retour à la liste

Numérotation des lignes :

kpcoq6
  1. C KPCOQ6 SOURCE CB215821 26/08/24 21:17:03 12622
  2. SUBROUTINE KPCOQ6(XX, P, XKP, IANT)
  3. C
  4. C Procedure de calcul de la matrice Kppour un element COQ4
  5. C Entrees : XX(3, 6) : REAL*8 : Coordonnees des noeuds
  6. C XP : REAL : Pression
  7. C IANT : INTEGER : 1 si calcul asymétrique, 0 sinon
  8. C Sortie : XKP(36, 36) : REAL*8 : Matrice Kp elementaire
  9. C
  10. C (D'apres "Design variations of nonlinear elastic structures
  11. C subjected to follower forces"
  12. C M.J. Poldneff, I.S. Rai, J.S. Arora)
  13. C
  14. IMPLICIT INTEGER(I-N)
  15. IMPLICIT REAL*8(A-H,O-Z)
  16. DIMENSION XX(3, 6), XKP(36, 36), SKRO(3, 3, 3),
  17. 1 XN(8, 30), XNB1(30), XNB2(30), XNB3(30), XNB4(30), XNB(30),
  18. 2 DNB1(30), DNB2(30), DN(2, 8, 30), DX(2, 3, 30),
  19. 3 XTIN(30), A(30), B(30), C(30), D(30), E(30), F(30),
  20. 4 XNB5(30), XNB6(30), XNB7(30), XDUM(36, 36)
  21. DATA XNB1/0.D0, 4.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  22. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  23. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  24. 2 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  25. 2 0.D0, 0.D0, 0.D0, 0.D0, 0.D0/
  26. DATA XNB2/0.D0, 0.D0, 4.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  27. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  28. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  29. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  30. 2 0.D0, 0.D0, 0.D0, 0.D0, 0.D0/
  31. DATA XNB3/0.D0, 0.D0, 0.D0, 4.D0, 0.D0, 0.D0, 0.D0,
  32. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  33. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  34. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  35. 2 0.D0, 0.D0, 0.D0, 0.D0, 0.D0/
  36. DATA XNB4/1.D0, -1.D0, -1.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  37. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  38. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  39. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  40. 2 0.D0, 0.D0, 0.D0, 0.D0, 0.D0/
  41. DATA XNB5/1.D0, -2.D0, -2.D0, 0.D0, 0.D0, 0.D0,
  42. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  43. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  44. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  45. 2 0.D0, 0.D0, 0.D0, 0.D0, 0.D0/
  46. DATA XNB6/-0.25, 0.5, 0.D0, 0.D0, 0.D0, 0.D0,
  47. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  48. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  49. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  50. 2 0.D0, 0.D0, 0.D0, 0.D0, 0.D0/
  51. DATA XNB7/-0.25, 0.D0, 0.5, 0.D0, 0.D0, 0.D0,
  52. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  53. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  54. 1 0.D0, 0.D0, 0.D0, 0.D0, 0.D0, 0.D0,
  55. 2 0.D0, 0.D0, 0.D0, 0.D0, 0.D0/
  56. C
  57. C Initialisation du symbole epsilon
  58. C
  59. DO 93 I = 1, 3
  60. DO 92 J = 1, 3
  61. DO 10 K = 1, 3
  62. SKRO(I, J, K) = 0.D0
  63. 10 CONTINUE
  64. 92 CONTINUE
  65. 93 CONTINUE
  66. SKRO(1, 2, 3) = 1.D0
  67. SKRO(1, 3, 2) = -1.D0
  68. SKRO(2, 3, 1) = 1.D0
  69. SKRO(2, 1, 3) = -1.D0
  70. SKRO(3, 1, 2) = 1.D0
  71. SKRO(3, 2, 1) = -1.D0
  72. C
  73. C Calcul de la pression
  74. C
  75. * P = 0.
  76. * DO 20 I = 1, 3
  77. * 20 P = P + XP(I)
  78. * P = P/3.
  79. C
  80. C Fonctions de forme et derivees
  81. C
  82. C Les coefficients sont ranges comme suit :
  83. C indice : 1 2 3 4 5 6 7 8 9
  84. C terme : 1 T1 T2 T1*T2 T1^2 T2^2 T1*T2^2 T1^2*T2 T1^3
  85. C indice : 10 11 12 13 14 15
  86. C terme : T2^3 T1*T2^3 T1^2*T2^2 T1^3*T2^3 T1^4 T2^4
  87. C indice : 16 17 18 19 20 21
  88. C terme : T1*T2^4 T1^2*T2^3 T1^3*T2^2 T1^4*T2 T1^5 T2^5
  89. C indice : 22 23 24 25 26
  90. C terme : T1*T2^5 T1^2*T2^4 T1^3*T2^3 T1^4*T2^2 T1^5*T2
  91. C indice : 27 28 29 30
  92. C terme : T1^2*T2^5 T1^3*T2^4 T1^4*T2^3 T1^5*T2^2
  93. C
  94. CALL MULQP2(XNB4, XNB5, XNB)
  95. CALL DERQP2(XNB, 1, DNB1)
  96. CALL DERQP2(XNB, 2, DNB2)
  97. DO 31 I = 1, 30
  98. XN(1, I) = XNB(I)
  99. DN(1, 1, I) = DNB1(I)
  100. DN(2, 1, I) = DNB2(I)
  101. 31 CONTINUE
  102. CALL MULQP2(XNB1, XNB4, XNB)
  103. CALL DERQP2(XNB, 1, DNB1)
  104. CALL DERQP2(XNB, 2, DNB2)
  105. DO 32 I = 1, 30
  106. XN(2, I) = XNB(I)
  107. DN(1, 2, I) = DNB1(I)
  108. DN(2, 2, I) = DNB2(I)
  109. 32 CONTINUE
  110. CALL MULQP2(XNB1, XNB6, XNB)
  111. CALL DERQP2(XNB, 1, DNB1)
  112. CALL DERQP2(XNB, 2, DNB2)
  113. DO 33 I = 1, 30
  114. XN(3, I) = XNB(I)
  115. DN(1, 3, I) = DNB1(I)
  116. DN(2, 3, I) = DNB2(I)
  117. 33 CONTINUE
  118. CALL DERQP2(XNB3, 1, DNB1)
  119. CALL DERQP2(XNB3, 2, DNB2)
  120. DO 34 I = 1, 30
  121. XN(4, I) = XNB3(I)
  122. DN(1, 4, I) = DNB1(I)
  123. DN(2, 4, I) = DNB2(I)
  124. 34 CONTINUE
  125. CALL MULQP2(XNB2, XNB7, XNB)
  126. CALL DERQP2(XNB, 1, DNB1)
  127. CALL DERQP2(XNB, 2, DNB2)
  128. DO 35 I = 1, 30
  129. XN(5, I) = XNB(I)
  130. DN(1, 5, I) = DNB1(I)
  131. DN(2, 5, I) = DNB2(I)
  132. 35 CONTINUE
  133. CALL MULQP2(XNB2, XNB4, XNB)
  134. CALL DERQP2(XNB, 1, DNB1)
  135. CALL DERQP2(XNB, 2, DNB2)
  136. DO 36 I = 1, 30
  137. XN(6, I) = XNB(I)
  138. DN(1, 6, I) = DNB1(I)
  139. DN(2, 6, I) = DNB2(I)
  140. 36 CONTINUE
  141. C
  142. C Vecteurs tangents a la coque dans la configuration initiale
  143. C
  144. C Initialisation
  145. DO 95 I = 1, 2
  146. C Boucle sur les parametres
  147. DO 94 J = 1, 3
  148. C Boucle sur les composantes
  149. DO 40 K = 1, 30
  150. C Boucle sur les coefficients des polynomes
  151. DX(I, J, K) = 0.D0
  152. 40 CONTINUE
  153. 94 CONTINUE
  154. 95 CONTINUE
  155. C Calcul
  156. DO 98 I = 1, 2
  157. C Boucle sur les parametres
  158. DO 97 J = 1, 3
  159. C Boucle sur les composantes
  160. DO 96 K = 1, 30
  161. C Boucle sur les coefficients des polynomes
  162. DO 50 L = 1, 6
  163. C Boucle sur les noeuds
  164. DX(I, J, K) = DX(I, J, K) + XX(J, L)*DN(I, L, K)
  165. 50 CONTINUE
  166. 96 CONTINUE
  167. 97 CONTINUE
  168. 98 CONTINUE
  169. C
  170. C Calcul des termes de la matrice Kp
  171. C
  172. C Initialisation
  173. DO 99 I = 1, 36
  174. DO 55 J = 1, 36
  175. XDUM(I,J) = 0.D0
  176. XKP(I, J) = 0.D0
  177. 55 CONTINUE
  178. 99 CONTINUE
  179. C Calcul
  180. DO 102 II = 1, 3
  181. DO 101 IL = 1, 6
  182. DO 100 IS = 1, 3
  183. DO 60 IT = 1, 6
  184. XRES = 0.D0
  185. DO 70 J = 1, 3
  186. IFLAG = 0
  187. DO 71 K = 1, 30
  188. A(K) = XN(IL, K)
  189. D(K) = 0.D0
  190. 71 CONTINUE
  191. IF (SKRO(II, J, IS) .NE. 0.D0) THEN
  192. DO 81 K = 1, 30
  193. B(K) = DN(2, IT, K)
  194. C(K) = DX(1, J, K)
  195. 81 CONTINUE
  196. CALL MULQP2(B, C, E)
  197. DO 72 K = 1, 30
  198. D(K) = SKRO(II, J, IS)*E(K)
  199. 72 CONTINUE
  200. IFLAG = 1
  201. ENDIF
  202. IF (SKRO(II, IS, J) .NE. 0.D0) THEN
  203. DO 82 K = 1, 30
  204. B(K) = DN(1, IT, K)
  205. C(K) = DX(2, J, K)
  206. 82 CONTINUE
  207. CALL MULQP2(B, C, E)
  208. IF (IFLAG .EQ. 1) THEN
  209. DO 73 K = 1, 30
  210. D(K) = D(K) + SKRO(II, IS, J)*E(K)
  211. 73 CONTINUE
  212. ELSE
  213. DO 74 K = 1, 30
  214. D(K) = SKRO(II, IS, J)*E(K)
  215. 74 CONTINUE
  216. ENDIF
  217. IFLAG = 1
  218. ENDIF
  219. IF (IFLAG .NE. 0) THEN
  220. CALL MULQP2(A, D, XTIN)
  221. CALL INT6P2(XTIN, TING)
  222. XRES = XRES + TING
  223. ENDIF
  224. 70 CONTINUE
  225. XRES = XRES*P
  226. XDUM(6*(IL-1) + II, 6*(IT-1) + IS) = XRES
  227. 60 CONTINUE
  228. 100 CONTINUE
  229. 101 CONTINUE
  230. 102 CONTINUE
  231. IF (IANT .EQ. 0) THEN
  232. DO 103 II = 1, 36
  233. DO 90 IJ = II, 36
  234. XKP(II, IJ) = (XDUM(II, IJ) + XDUM(IJ, II))*0.5D0
  235. XKP(IJ, II) = XKP(II, IJ)
  236. 90 CONTINUE
  237. 103 CONTINUE
  238. ELSE
  239. DO 104 II = 1, 36
  240. DO 91 IJ = 1, 36
  241. XKP(II, IJ) = XDUM(II, IJ)
  242. 91 CONTINUE
  243. 104 CONTINUE
  244. ENDIF
  245. RETURN
  246. END
  247.  
  248.  
  249.  
  250.  

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