Télécharger bbst2.eso

Retour à la liste

Numérotation des lignes :

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

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