Télécharger bbst2.eso

Retour à la liste

Numérotation des lignes :

  1. C BBST2 SOURCE CHAT 05/01/12 21:36:37 5004
  2. SUBROUTINE BBST2(TRACE,NBPGAU,IFOUR,MELE,POIGAU,QSIGAU,
  3. & ETAGAU,DZEGAU,SHPTOT,NBNO,SHP,XE)
  4. c
  5. c
  6. c projection de la trace de epsi2 sur la base reduite des elements icq
  7. c
  8. c entree
  9. c trace : tableau contenant la valeur de trace de epsi2 en
  10. c chaque point de gauss
  11. c nbpgau : nombre de point de gauss
  12. c ifour : variable du ccoptio
  13. c mele : numero de l'element
  14. c poigau : poids d'integration
  15. c qsigau : 1ere composante sur l'element de reference
  16. c etagau : 2eme composante sur l'element de reference
  17. c dzegau : 3eme composante sur l'element de reference
  18. c shptot : valeurs des fonctions de forme
  19. c
  20. c sortie
  21. c trac : contient la correction à apporter à chaque composante diagonale de
  22. c la deformation
  23. c
  24. c
  25. IMPLICIT INTEGER(I-N)
  26. IMPLICIT REAL*8(A-H,O-Z)
  27. c
  28. DIMENSION TRACE(*),POIGAU(*),QSIGAU(*),ETAGAU(*),DZEGAU(*)
  29. & ,SHPTOT(6,NBNO,*),SHP(6,*),XE(3,*)
  30. DIMENSION P(3,3),T(3)
  31.  
  32. c
  33. c elements icq4 et ict3 et ict6
  34. c
  35. IF (MELE.EQ.69.OR.MELE.EQ.70.OR.MELE.EQ.71) THEN
  36. TRINTG = 0.D0
  37. aire = 0.d0
  38. DO 10 I=1,NBPGAU
  39. DO 5 J=1,NBNO
  40. DO 5 K =1,6
  41. SHP(K,J)=SHPTOT(K,J,I)
  42. 5 CONTINUE
  43. CALL JACOBI(XE,SHP,2,NBNO,DJAC)
  44. TRINTG = TRINTG + POIGAU(I)*TRACE(I)*DJAC
  45. AIRE = AIRE +POIGAU(I)*DJAC
  46. 10 CONTINUE
  47. trintg = TRINTG / AIRE
  48. c
  49. COEF = 2.D0
  50. IF (IFOUR .EQ. 0 ) COEF = 3.D0
  51. DO 20 I=1,NBPGAU
  52. TRACE(I) = (TRINTG - TRACE(I))/COEF
  53. 20 CONTINUE
  54. RETURN
  55. c
  56. c élement ICQ8
  57. c
  58. ELSE IF ( MELE.EQ.72) THEN
  59. c
  60. c matrice P calculée analytiquement voir routine BBCALC
  61. c
  62. P(1,1) = 2.D0/3.D0*(XE(1,1)*(XE(2,2)-XE(2,8))
  63. 1 +XE(1,2)*(XE(2,3)-XE(2,1))
  64. 1 +XE(1,3)*(XE(2,4)-XE(2,2))+XE(1,4)*(XE(2,5)-XE(2,3))
  65. 2 +XE(1,5)*(XE(2,6)-XE(2,4))+XE(1,6)*(XE(2,7)-XE(2,5))
  66. 3 +XE(1,7)*(XE(2,8)-XE(2,6))+XE(1,8)*(XE(2,1)-XE(2,7)))
  67. 4 +1.D0/6.D0*((XE(1,1)-XE(1,5))*(XE(2,7)-XE(2,3))
  68. 5 +(XE(1,3)-XE(1,7))*(XE(2,1)-XE(2,5)))
  69.  
  70. P(1,2) = 5.D0/9.D0*(-XE(2,2)*(XE(1,1)+XE(1,3))
  71. 1 +XE(1,2)*(XE(2,1)+XE(2,3))+XE(1,6)*(-XE(2,5)-XE(2,7))
  72. 1 +XE(2,6)*(XE(1,5)+XE(1,7)))
  73. 2 +4.D0/9.D0*(XE(1,8)*(XE(2,7)+XE(2,2)-XE(2,6)-XE(2,1))
  74. 2 +XE(2,8)*(-XE(1,7)-XE(1,2)+XE(1,6)+XE(1,1))
  75. 2 +XE(1,4)*(XE(2,2)-XE(2,6)+XE(2,5)-XE(2,3))
  76. 2 +XE(2,4)*(-XE(1,2)+XE(1,6)-XE(1,5)+XE(1,3)))
  77. 3 +7.D0/45.D0*(XE(1,2)*(XE(2,5)+XE(2,7))
  78. 3 -XE(2,2)*(XE(1,5)+XE(1,7))-XE(1,6)*(XE(2,1)+XE(2,3))
  79. 3 +XE(2,6)*(XE(1,1)+XE(1,3)))
  80. 4 +8.D0/15.D0*(XE(1,6)*XE(2,2)-XE(1,2)*XE(2,6))
  81. 5 +7.D0/90.D0*(XE(1,7)*XE(2,1)-XE(1,3)*XE(2,5)
  82. 5 +XE(1,5)*XE(2,3)-XE(1,1)*XE(2,7))
  83. 6 +1.D0/30.D0*(-XE(1,7)*XE(2,3)+XE(1,3)*XE(2,7)
  84. 6 -XE(1,5)*XE(2,1)+XE(1,1)*XE(2,5))
  85.  
  86.  
  87. P(1,3) = 5.D0/9.D0*(-XE(1,8)*(XE(2,7)+XE(2,1))
  88. 1 +XE(2,8)*(XE(1,7)+XE(1,1))
  89. 1 +XE(1,4)*(XE(2,3)+XE(2,5))
  90. 1 -XE(2,4)*(XE(1,3)+XE(1,5)))
  91. 2 +4.D0/9.D0*((XE(1,8)-XE(1,4))*(XE(2,2)+XE(2,6))
  92. 2 +(-XE(2,8)+XE(2,4))*(XE(1,2)+XE(1,6))
  93. 2 +XE(1,2)*(XE(2,1)-XE(2,3))+XE(2,2)*(-XE(1,1)+XE(1,3))
  94. 2 +XE(1,6)*(XE(2,7)-XE(2,5))+XE(2,6)*(-XE(1,7)+XE(1,5)))
  95. 3 +7.D0/45.D0*(-XE(1,8)*(XE(2,3)+XE(2,5))
  96. 3 +XE(2,8)*(XE(1,3)+XE(1,5))
  97. 3 +XE(1,4)*(XE(2,1)+XE(2,7))
  98. 3 -XE(2,4)*(XE(1,1)+XE(1,7)))
  99. 4 +1.D0/30.D0*(-XE(1,7)*XE(2,3)+XE(1,3)*XE(2,7)
  100. 4 +XE(1,5)*XE(2,1)-XE(1,1)*XE(2,5))
  101. 5 +7.D0/90.D0*(XE(1,7)*XE(2,5)-XE(1,3)*XE(2,1)
  102. 5 -XE(1,5)*XE(2,7)+XE(1,1)*XE(2,3))
  103. 6 +8.D0/15.D0*(XE(1,8)*XE(2,4)-XE(1,4)*XE(2,8))
  104.  
  105. P(2,1) = P(1,2)
  106.  
  107. P(2,2) = 16.D0/45.D0*(XE(2,6)*(XE(1,5)-XE(1,7))
  108. 1 +XE(1,6)*(XE(2,7)-XE(2,5))+XE(1,2)*(XE(2,3)-XE(2,1))
  109. 1 +XE(2,2)*(XE(1,1)-XE(1,3)))
  110. 2 +14.D0/45.D0*(XE(2,4)*(XE(1,3)-XE(1,5))
  111. 2 +XE(1,4)*(XE(2,5)-XE(2,3))+XE(1,8)*(XE(2,1)-XE(2,7))
  112. 2 +XE(2,8)*(XE(1,7)-XE(1,1)))
  113. 3 +8.D0/45.D0*(XE(1,4)*(XE(2,2)-XE(2,6))
  114. 3 +XE(1,8)*(XE(2,6)-XE(2,2))+XE(1,2)*(XE(2,8)-XE(2,4))
  115. 3 +XE(1,6)*(XE(2,4)-XE(2,8)))
  116. 4 +2.D0/45.D0*(XE(2,2)*(XE(1,5)-XE(1,7))
  117. 4 +XE(1,2)*(XE(2,7)-XE(2,5)) +XE(1,6)*(XE(2,3)-XE(2,1))
  118. 4 +XE(2,6)*(XE(1,1)-XE(1,3)))
  119. 5 +4.D0/45.D0*(XE(2,4)*(XE(1,1)-XE(1,7))
  120. 5 +XE(1,4)*(XE(2,7)-XE(2,1)) +XE(1,8)*(XE(2,3)-XE(2,5))
  121. 5 +XE(2,8)*(XE(1,5)-XE(1,3)))
  122. 6 +17.D0/90.D0*(XE(1,7)*XE(2,5)+XE(1,3)*XE(2,1)
  123. 6 -XE(1,5)*XE(2,7)-XE(1,1)*XE(2,3))
  124. 7 +1.D0/90.D0*(-XE(1,7)*XE(2,1)-XE(1,3)*XE(2,5)
  125. 7 +XE(1,5)*XE(2,3)+XE(1,1)*XE(2,7))
  126.  
  127.  
  128. P(2,3) = 1.D0/3.D0*(XE(1,5)*(XE(2,6)-XE(2,4))
  129. 1 +XE(1,8)*(XE(2,7)+XE(2,1))+XE(1,7)*(XE(2,6)-XE(2,8))
  130. 1 -XE(1,2)*(XE(2,1)+XE(2,3))+XE(1,1)*(XE(2,2)-XE(2,8))
  131. 1 +XE(1,4)*(XE(2,5)+XE(2,3))-XE(1,6)*(XE(2,7)+XE(2,5))
  132. 1 +XE(1,3)*(XE(2,2)-XE(2,4)))
  133. 2 +4.D0/9.D0*(-XE(1,4)*(XE(2,2)+XE(2,6))
  134. 2 -XE(1,8)*(XE(2,6)+XE(2,2))+XE(1,2)*(XE(2,8)+XE(2,4))
  135. 2 +XE(1,6)*(XE(2,4)+XE(2,8)))
  136. 3 +1.D0/9.D0*(XE(1,7)*(XE(2,2)-XE(2,4))
  137. 3 +XE(1,8)*(XE(2,3)+XE(2,5))
  138. 3 +XE(1,5)*(XE(2,2)-XE(2,8))+XE(1,3)*(XE(2,6)-XE(2,8))
  139. 3 -XE(1,2)*(XE(2,5)+XE(2,7))+XE(1,1)*(XE(2,6)-XE(2,4))
  140. 3 +XE(1,4)*(XE(2,1)+XE(2,7))-XE(1,6)*(XE(2,1)+XE(2,3)))
  141.  
  142.  
  143. P(3,1) = P(1,3)
  144.  
  145. P(3,2) = P(2,3)
  146.  
  147. P(3,3) = 14.D0/45.D0*(XE(1,6)*(XE(2,7)-XE(2,5))
  148. 1 +XE(2,6)*(XE(1,5)-XE(1,7))+XE(1,2)*(XE(2,3)-XE(2,1))
  149. 1 +XE(2,2)*(XE(1,1)-XE(1,3)))
  150. 2 +16.D0/45.D0*(XE(1,8)*(XE(2,1)-XE(2,7))
  151. 2 +XE(2,8)*(XE(1,7)-XE(1,1))+XE(1,4)*(XE(2,5)-XE(2,3))
  152. 2 +XE(2,4)*(XE(1,3)-XE(1,5)))
  153. 3 +8.D0/45.D0*(XE(1,4)*(XE(2,2)-XE(2,6))
  154. 3 +XE(1,8)*(XE(2,6)-XE(2,2))+XE(1,2)*(XE(2,8)-XE(2,4))
  155. 3 +XE(1,6)*(XE(2,4)-XE(2,8)))
  156. 4 +2.D0/45.D0*(XE(2,4)*(XE(1,7)-XE(1,1))
  157. 4 +XE(1,8)*(XE(2,5)-XE(2,3))+XE(2,8)*(-XE(1,5)+XE(1,3))
  158. 4 +XE(1,4)*(XE(2,1)-XE(2,7)))
  159. 5 +4.D0/45.D0*(XE(2,2)*(XE(1,7)-XE(1,5))
  160. 5 +XE(1,2)*(XE(2,5)-XE(2,7))+XE(1,6)*(XE(2,1)-XE(2,3))
  161. 5 +XE(2,6)*(XE(1,3)-XE(1,1)))
  162. 6 +1.D0/90.D0*(-XE(1,5)*XE(2,7)+XE(1,3)*XE(2,1)
  163. 6 +XE(1,7)*XE(2,5)-XE(1,1)*XE(2,3))
  164. 7 +17.D0/90.D0*(-XE(1,7)*XE(2,1)-XE(1,3)*XE(2,5)
  165. 7 +XE(1,5)*XE(2,3)+XE(1,1)*XE(2,7))
  166.  
  167. c
  168. c calcul des produits <tr eII . 1 > , <tr eII . eta > , <tr eII . xsi >
  169. c
  170. T(1) = 0.D0
  171. T(2) = 0.D0
  172. T(3) = 0.D0
  173. DO 40 I=1,NBPGAU
  174. DO 30 J=1,NBNO
  175. DO 30 K =1,6
  176. SHP(K,J)=SHPTOT(K,J,I)
  177. 30 CONTINUE
  178. CALL JACOBI(XE,SHP,2,NBNO,DJAC)
  179. T(1) = T(1) + POIGAU(I)*TRACE(I)*DJAC
  180. T(2) = T(2) + POIGAU(I)*TRACE(I)*DJAC*QSIGAU(I)
  181. T(3) = T(3) + POIGAU(I)*TRACE(I)*DJAC*ETAGAU(I)
  182. 40 CONTINUE
  183. *
  184. c resolution du systme P.X=T
  185. c
  186. CALL GAUSSJ(P,3,3,T,1,1)
  187. *
  188. c caclul du terme correctif
  189. c
  190. COEF = 2.D0
  191. IF (IFOUR .EQ. 0 ) COEF = 3.D0
  192. DO 50 I=1,NBPGAU
  193. TRACE(I)=(T(1)+QSIGAU(I)*T(2)+ETAGAU(I)*T(3)-TRACE(I))/COEF
  194. 50 CONTINUE
  195. c
  196. RETURN
  197. c
  198. ENDIF
  199. c
  200. c pas de correction pour les autres éléments
  201. c
  202. DO 70 I=1,NBPGAU
  203. TRACE(I)=0.D0
  204. 70 CONTINUE
  205. c
  206. c
  207. RETURN
  208. END
  209.  
  210.  
  211.  

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