Télécharger bcoq4.eso

Retour à la liste

Numérotation des lignes :

bcoq4
  1. C BCOQ4 SOURCE CHAT 06/03/29 21:15:38 5360
  2. SUBROUTINE BCOQ4
  3. & (IGAU,XEL,SHPTOT,SHP,BGENE,DJAC,EXCEN,NOPLAN,IARR,IFS)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8(A-H,O-Z)
  6. ************************************************************************
  7. *
  8. * B C O Q 4
  9. * ---------
  10. *
  11. * FONCTION:
  12. * ---------
  13. *
  14. * Calcul de la matrice "B" pour un COQ4 excentr{ ou non.
  15. *
  16. * PARAMETRES: (E)=ENTREE (S)=SORTIE
  17. * -----------
  18. *
  19. * IGAU (E) Num{ro du point d'int{gration.
  20. * XEL (E) Coordonn{es locales des noeuds de l'{l{ment.
  21. * SHPTOT (E) Fonctions de forme et d{riv{es dans l'espace de
  22. * r{f{rence.
  23. * SHPTOT(1,... = fonction,
  24. * SHPTOT(2,... = d{riv{e par rapport @ Qsi,
  25. * SHPTOT(3,... = d{riv{e par rapport @ Eta.
  26. * EXCEN (E) Excentrement.
  27. * NOPLAN (E) = 1 si {l{ment non plan,
  28. * = 0 sinon.
  29. * IFS (E) = 1 si demande de Matrice "B" compl}te
  30. * (pour SIGMA et EPSILON),
  31. * = 0 sinon.
  32. * SHP (S) Fonctions de forme et d{riv{es dans l'espace
  33. * g{om{trique.
  34. * SHP(1,... = fonction,
  35. * SHP(2,... = d{riv{e par rapport @ "X" local,
  36. * SHP(3,... = d{riv{e par rapport @ "Y" local.
  37. * - au point d'int{gration n.5 si IFS=1,
  38. * - au point d'int{gration IGAU courant sinon.
  39. * DJAC (S) Jacobien au point d'int{gration IGAU.
  40. * BGENE (S) Matrice "B" au point d'int{gration IGAU.
  41. * IARR (S) Diff{rent de 0 si erreur.
  42. *
  43. PARAMETER (LRE=24,NST=8,NBNO=4)
  44. REAL*8 XEL(3,*),BGENE(NST,*),SHP(6,*),SHPTOT(6,NBNO,*)
  45. *
  46. * CONSTANTES:
  47. * -----------
  48. *
  49. * NBNO = Nombre de noeuds.
  50. * LRE = Nombre de colonnes de la Matrice "B".
  51. * NST = Nombre de composantes de contraintes.
  52. *
  53. * VARIABLES:
  54. * ----------
  55. *
  56. * FULL = .TRUE. si on veut une Matrice "B" compl}te.
  57. * GAUSS = .TRUE. si utilisation d'un point d'int{gration n.1 @ 4.
  58. * SHP7 = Fonctions d'interpolation mixte pour le cisaillement X-Z
  59. * SHP8 = Fonctions d'interpolation mixte pour le cisaillement Y-Z
  60. *
  61. REAL*8 SHP7(4:5,NBNO),SHP8(4:5,NBNO)
  62. LOGICAL FULL,GAUSS
  63. *
  64. * MODE DE FONCTIONNEMENT:
  65. * -----------------------
  66. *
  67. * POUR LA RIGIDITE:
  68. *
  69. * Pour la membrane,
  70. * - int{gration r{duite (1 point) pour le cisaillement,
  71. * - int{gration r{duite de tout si {l{ment non plan.
  72. *
  73. * Pour le cisaillement transverse, voir:
  74. * DONEA / LAMAIN (1987) - ISPRA
  75. * ({l{ment de type "A.N.S.")
  76. *
  77. * Pour le couplage membrane-flexion (excentrement), int{gration
  78. * r{duite analogue @ membrane, non justifi{e au niveau de la
  79. * Rigidit{, mais indispensable pour le calcul pratique des forces
  80. * nodales @ partir des contraintes, par "BSIGMA".
  81. *
  82. * POUR LES CONTRAINTES:
  83. *
  84. * Pour {viter des surcontraintes dues @ un "hourglass", il ne faut
  85. * pas calculer aux 4 points de Gauss des contraintes qui ont {t{
  86. * calcul{es au centre lors de la cr{ation de la Matrice de Rigidit{.
  87. * Par cons{quent, il faut prendre
  88. * - toujours : le cisaillement de membrane au centre,
  89. * - quand NOPLAN=1: toutes les contraintes de membrane au centre.
  90. * (centre = point d'int{gration n.5)
  91. * Calcul au centre dans les memes conditions pour le couplage
  92. * membrane-flexion.
  93. *
  94. * Cependant, pour que le champ de contraintes produit soit facile
  95. * @ lire par l'utilisateur et @ traiter par les op{rateurs tels
  96. * que:
  97. * - CHANGER CHPOINT,
  98. * - TRACER, ...
  99. * on inscrit aux points de Gauss 1 @ 4 les valeurs de contrainte
  100. * au point d'int{gration n.5 pour les parties concern{es.
  101. * De plus, on remplit compl}tement le champ de valeurs au point
  102. * d'int{gration n.5 .
  103. *
  104. * AUTEUR, DATE DE CREATION:
  105. * -------------------------
  106. *
  107. * Pascal MANIGOT 17 Juin 1991
  108. *
  109. ************************************************************************
  110. *
  111. IARR=0
  112. FULL = IFS .EQ. 1
  113. GAUSS = IGAU .LE. 4
  114. *
  115. *
  116. * Matrice jacobienne:
  117. * -------------------
  118. *
  119. DO 110 I=1,NBNO
  120. SHP(1,I)=SHPTOT(1,I,IGAU)
  121. SHP(2,I)=SHPTOT(2,I,IGAU)
  122. SHP(3,I)=SHPTOT(3,I,IGAU)
  123. 110 CONTINUE
  124. * END DO
  125. *
  126. DXDQSI = 0.D0
  127. DXDETA = 0.D0
  128. DYDQSI = 0.D0
  129. DYDETA = 0.D0
  130. DO 120 I=1,NBNO
  131. DXDQSI=DXDQSI+SHP(2,I)*XEL(1,I)
  132. DXDETA=DXDETA+SHP(3,I)*XEL(1,I)
  133. DYDQSI=DYDQSI+SHP(2,I)*XEL(2,I)
  134. DYDETA=DYDETA+SHP(3,I)*XEL(2,I)
  135. 120 CONTINUE
  136. * END DO
  137. DJAC=DXDQSI*DYDETA-DXDETA*DYDQSI
  138. IF(DJAC.LE. 0.D0) THEN
  139. IARR=1
  140. RETURN
  141. END IF
  142. *
  143. * Fonctions de forme dans l'espace g{om{trique:
  144. DQSIDX= DYDETA/DJAC
  145. DQSIDY=-DXDETA/DJAC
  146. DETADX=-DYDQSI/DJAC
  147. DETADY= DXDQSI/DJAC
  148. DO 130 I=1,NBNO
  149. TT=SHP(2,I)*DQSIDX+SHP(3,I)*DETADX
  150. SHP(3,I)=SHP(2,I)*DQSIDY+SHP(3,I)*DETADY
  151. SHP(2,I)=TT
  152. 130 CONTINUE
  153. * END DO
  154. *
  155. *
  156. * Matrice "B":
  157. * ------------
  158. *
  159. CALL ZERO(BGENE,NST,LRE)
  160. *
  161. IF (GAUSS .OR. FULL) THEN
  162. * Pr{paration pour cisaillement transverse:
  163. *
  164. N1 = 1
  165. N2 = 2
  166. DX1 = SHPTOT(2,N1,IGAU)*XEL(1,N1)+SHPTOT(2,N2,IGAU)*XEL(1,N2)
  167. DY1 = SHPTOT(2,N1,IGAU)*XEL(2,N1)+SHPTOT(2,N2,IGAU)*XEL(2,N2)
  168. N1 = 3
  169. N2 = 4
  170. DX2 = SHPTOT(2,N1,IGAU)*XEL(1,N1)+SHPTOT(2,N2,IGAU)*XEL(1,N2)
  171. DY2 = SHPTOT(2,N1,IGAU)*XEL(2,N1)+SHPTOT(2,N2,IGAU)*XEL(2,N2)
  172. N1 = 1
  173. N2 = 4
  174. DX3 = SHPTOT(3,N1,IGAU)*XEL(1,N1)+SHPTOT(3,N2,IGAU)*XEL(1,N2)
  175. DY3 = SHPTOT(3,N1,IGAU)*XEL(2,N1)+SHPTOT(3,N2,IGAU)*XEL(2,N2)
  176. N1 = 2
  177. N2 = 3
  178. DX4 = SHPTOT(3,N1,IGAU)*XEL(1,N1)+SHPTOT(3,N2,IGAU)*XEL(1,N2)
  179. DY4 = SHPTOT(3,N1,IGAU)*XEL(2,N1)+SHPTOT(3,N2,IGAU)*XEL(2,N2)
  180. *
  181. D2JAC = 2.D0 * DJAC
  182. *
  183. SHP7(4,1) = (- DYDETA*DY1 + DYDQSI*DY3) / D2JAC
  184. SHP7(4,2) = (- DYDETA*DY1 + DYDQSI*DY4) / D2JAC
  185. SHP7(4,3) = (- DYDETA*DY2 + DYDQSI*DY4) / D2JAC
  186. SHP7(4,4) = (- DYDETA*DY2 + DYDQSI*DY3) / D2JAC
  187. SHP7(5,1) = ( DYDETA*DX1 - DYDQSI*DX3) / D2JAC
  188. SHP7(5,2) = ( DYDETA*DX1 - DYDQSI*DX4) / D2JAC
  189. SHP7(5,3) = ( DYDETA*DX2 - DYDQSI*DX4) / D2JAC
  190. SHP7(5,4) = ( DYDETA*DX2 - DYDQSI*DX3) / D2JAC
  191. *
  192. SHP8(4,1) = ( DXDETA*DY1 - DXDQSI*DY3) / D2JAC
  193. SHP8(4,2) = ( DXDETA*DY1 - DXDQSI*DY4) / D2JAC
  194. SHP8(4,3) = ( DXDETA*DY2 - DXDQSI*DY4) / D2JAC
  195. SHP8(4,4) = ( DXDETA*DY2 - DXDQSI*DY3) / D2JAC
  196. SHP8(5,1) = (- DXDETA*DX1 + DXDQSI*DX3) / D2JAC
  197. SHP8(5,2) = (- DXDETA*DX1 + DXDQSI*DX4) / D2JAC
  198. SHP8(5,3) = (- DXDETA*DX2 + DXDQSI*DX4) / D2JAC
  199. SHP8(5,4) = (- DXDETA*DX2 + DXDQSI*DX3) / D2JAC
  200. *
  201. END IF
  202. *
  203. DO 300 I=1,NBNO
  204. K = 6*(I-1)
  205. *
  206. IF (GAUSS .OR. FULL) THEN
  207. IF (NOPLAN .EQ. 0) THEN
  208. * Membrane:
  209. BGENE(1,K+1)=SHP(2,I)
  210. BGENE(2,K+2)=SHP(3,I)
  211. * Couplage membrane-flexion:
  212. BGENE(1,K+5) = SHP(2,I) * EXCEN
  213. BGENE(2,K+4) = -SHP(3,I) * EXCEN
  214. ENDIF
  215. * Flexion:
  216. BGENE(4,K+5)=SHP(2,I)
  217. BGENE(5,K+4)=-SHP(3,I)
  218. BGENE(6,K+4)=-SHP(2,I)
  219. BGENE(6,K+5)=SHP(3,I)
  220. * Cisaillement transverse:
  221. BGENE(7,K+3)=SHP(2,I)
  222. BGENE(7,K+4) = SHP7(4,I)
  223. BGENE(7,K+5) = SHP7(5,I)
  224. BGENE(8,K+3)=SHP(3,I)
  225. BGENE(8,K+4) = SHP8(4,I)
  226. BGENE(8,K+5) = SHP8(5,I)
  227. ENDIF
  228. *
  229. IF (.NOT. GAUSS) THEN
  230. IF (NOPLAN.EQ.1 .OR. FULL) THEN
  231. * Membrane:
  232. BGENE(1,K+1)=SHP(2,I)
  233. BGENE(2,K+2)=SHP(3,I)
  234. * Couplage membrane-flexion:
  235. BGENE(1,K+5) = SHP(2,I) * EXCEN
  236. BGENE(2,K+4) = -SHP(3,I) * EXCEN
  237. ENDIF
  238. * Cisaillement de membrane et de couplage membrane-flexion:
  239. BGENE(3,K+1)=SHP(3,I)
  240. BGENE(3,K+2)=SHP(2,I)
  241. BGENE(3,K+4) = -SHP(2,I) * EXCEN
  242. BGENE(3,K+5) = SHP(3,I) * EXCEN
  243. ENDIF
  244. *
  245. 300 CONTINUE
  246. * END DO
  247. *
  248. *
  249. IF (GAUSS .AND. FULL) THEN
  250. * On finit de compl{ter la Matrice "B", pour les contraintes ou
  251. * les d{formations, par des valeurs calcul{es au centre:
  252. *
  253. DO 500 I=1,NBNO
  254. SHP(1,I)=SHPTOT(1,I, 5 )
  255. SHP(2,I)=SHPTOT(2,I, 5 )
  256. SHP(3,I)=SHPTOT(3,I, 5 )
  257. 500 CONTINUE
  258. * END DO
  259. * FONCTIONS DE FORME DANS LA G{OM{TRIE R{ELLE:
  260. CALL JACOBI(XEL,SHP,2,NBNO,DJAC5)
  261. IF(DJAC5 .LE. 0.D0) THEN
  262. IARR=1
  263. RETURN
  264. END IF
  265. *
  266. DO 520 I=1,NBNO
  267. K = 6*(I-1)
  268. IF (NOPLAN .EQ. 1) THEN
  269. * Membrane:
  270. BGENE(1,K+1)=SHP(2,I)
  271. BGENE(2,K+2)=SHP(3,I)
  272. * Couplage membrane-flexion:
  273. BGENE(1,K+5) = SHP(2,I) * EXCEN
  274. BGENE(2,K+4) = -SHP(3,I) * EXCEN
  275. ENDIF
  276. * Cisaillement de membrane et de couplage membrane-flexion:
  277. BGENE(3,K+1)=SHP(3,I)
  278. BGENE(3,K+2)=SHP(2,I)
  279. BGENE(3,K+4) = -SHP(2,I) * EXCEN
  280. BGENE(3,K+5) = SHP(3,I) * EXCEN
  281. 520 CONTINUE
  282. * END DO
  283. *
  284. ENDIF
  285. *
  286. END
  287.  
  288.  
  289.  

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