Télécharger hookun.eso

Retour à la liste

Numérotation des lignes :

  1. C HOOKUN SOURCE BP208322 17/03/01 21:17:38 9325
  2. SUBROUTINE HOOKUN(VALMAT,IB,IGAU,MFR,EXCEN,EPAIST,
  3. + MELE,NPINT,IFOU,KCAS,NBGMAT,NELMAT,SECT,LHOOK,
  4. + TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,DDHOOK,
  5. + COBMA,XMOB,IRET)
  6. C
  7. C----------------------------------------------------------------------
  8. C
  9. C Calcul de la matrice de HOOKE dans le cas d'un
  10. C matériau unidirectionnel
  11. C
  12. C Entrees:
  13. C --------
  14. C VALMAT tableau de materiau
  15. C IB numero de l'element
  16. C IGAU numero du point de Gauss
  17. C MFR numero de formulation
  18. C EXCEN excentrement (coques minces avec ou sans cisail. transv)
  19. C EPAIST epaisseur (coques minces avec ou sans cisail. transv)
  20. C MELE numero de l'element fini
  21. C NPINT coque integree ou non
  22. C IFOU numero d'harmonique de Fourier
  23. C KCAS = 1 si on veut la matrice pour elle-meme
  24. C = 2 si on veut la matrice pour l'inverser ensuite
  25. C NBGMAT, NELMAT tailles des tableaux
  26. C SECT SECTION DE L'ELEMENT IB (<> 0 SI MFR.EQ.27)
  27. C LHOOK taille de la matrice de HOOKE
  28. C TXR,XLOC,XGLOB,D1HOOK,ROTHOO tableaux de travail
  29. C
  30. C Sorties:
  31. C --------
  32. C DDHOOK matrice de HOOKE
  33.  
  34. C IRET = 1 si option existante, 0 sinon
  35. C
  36. C---------------------------------------------------------------------
  37. C
  38. IMPLICIT INTEGER(I-N)
  39. IMPLICIT REAL*8(A-H,O-Z)
  40. PARAMETER(UN=1.D0,DEUX=2.D0,UNDEMI=.5D0)
  41. CHARACTER*8 MATE
  42. C
  43. -INC CCHAMP
  44. -INC CCOPTIO
  45. C
  46. *
  47. DIMENSION VALMAT(*)
  48. DIMENSION DDHOOK(LHOOK,*),DDHOMU(LHOOK,*)
  49. DIMENSION COBMA(10),COBAUX(10)
  50. REAL*8 D3HOO1(3,3),D3HOO2(3,3),RO1HOO(3,3)
  51. REAL*8 D2HOO1(2,2),D2HOO2(2,2),RO2HOO(2,2)
  52. REAL*8 XLOC(3,3),XGLOB(3,3),TXR(IDIM,*)
  53. REAL*8 D1HOOK(LHOOK,*),ROTHOO(LHOOK,*)
  54. C
  55. C INITIALISATION
  56. C
  57. MATE='UNIDIREC'
  58. CALL ZERO(DDHOOK,LHOOK,LHOOK)
  59. CALL ZERO(D1HOOK,LHOOK,LHOOK)
  60. CALL ZERO(XGLOB,IDIM,IDIM)
  61. CALL ZERO(ROTHOO,LHOOK,LHOOK)
  62. CALL ZERO(COBMA,LHOOK,1)
  63. CALL ZERO(COBAUX,LHOOK,1)
  64. C
  65. IF ((MFR.EQ.1.OR.MFR.EQ.33).AND.IGAU.LE.NBGMAT) THEN
  66. c
  67. c Formulation massive
  68. c
  69. IF (MFR.EQ.1) THEN
  70.  
  71. C MATRICE DE HOOKE /AXES D'ARMAURE
  72. D1HOOK(1,1)=VALMAT(1)
  73.  
  74. ELSE
  75. c
  76. c Formulation milieu poreux
  77. c
  78. * elements massifs
  79. *
  80.  
  81. IF(MELE.GE.79.AND.MELE.LE.83) THEN
  82. CALL PORMAO(VALMAT,MATE,IFOU,IDIM,TXR,XLOC,XGLOB,
  83. & D1HOOK,ROTHOO,DDHOOK,LHOOK,
  84. & COBMA,XMOB,KCAS,IRET)
  85. GO TO 2035
  86. *
  87. * elements joints
  88. *
  89. ELSE IF(MELE.GE.108.AND.MELE.LE.110) THEN
  90. CALL DOUO88(VALMAT,MATE,IFOU,LHOOK,DDHOOK,IRET)
  91. *********** COBMA ET XMOB PAS DEFINIS !!!!
  92. IRET=0
  93. GO TO 2035
  94. ELSE
  95. IRET=0
  96. GO TO 2035
  97. ENDIF
  98. *
  99. ENDIF
  100. *
  101. C DEFINITION DES AXES ORTHO./AXES LOCAUX
  102. IF(IDIM.EQ.2)THEN
  103. XLOC(1,1)=VALMAT(2)
  104. XLOC(2,1)=VALMAT(3)
  105. XLOC(1,2)=-XLOC(2,1)
  106. XLOC(2,2)=XLOC(1,1)
  107. ELSEIF(IDIM.EQ.3)THEN
  108. XLOC(1,1)=VALMAT(2)
  109. XLOC(2,1)=VALMAT(3)
  110. XLOC(3,1)=VALMAT(4)
  111. XLOC(1,2)=VALMAT(5)
  112. XLOC(2,2)=VALMAT(6)
  113. XLOC(3,2)=VALMAT(7)
  114. C
  115. CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)
  116. ENDIF
  117. C
  118. C DEFINITION DES AXES ORTHO./AXES GLOBAUX
  119. C
  120. IF(IRET.EQ.1)THEN
  121. C
  122. DO 1045 K=1,IDIM
  123. DO 1045 J=1,IDIM
  124. DO 1045 I=1,IDIM
  125. XGLOB(K,J)=TXR(J,I)*XLOC(I,K)+XGLOB(K,J)
  126. 1045 CONTINUE
  127. C MATRICE DE TRANSFORMATION
  128. IF(IDIM.EQ.2)THEN
  129. ROTHOO(1,1)=XGLOB(1,1)*XGLOB(1,1)
  130. ROTHOO(1,2)=XGLOB(1,2)*XGLOB(1,2)
  131. ROTHOO(1,4)=XGLOB(1,1)*XGLOB(1,2)
  132. ROTHOO(2,1)=XGLOB(2,1)*XGLOB(2,1)
  133. ROTHOO(2,2)=XGLOB(2,2)*XGLOB(2,2)
  134. ROTHOO(2,4)=XGLOB(2,1)*XGLOB(2,2)
  135. ROTHOO(3,3)=UN
  136. ROTHOO(4,1)=DEUX*XGLOB(1,1)*XGLOB(2,1)
  137. ROTHOO(4,2)=DEUX*XGLOB(1,2)*XGLOB(2,2)
  138. ROTHOO(4,4)=XGLOB(1,2)*XGLOB(2,1)+XGLOB(1,1)*XGLOB(2,2)
  139. IF(IFOU.EQ.1)THEN
  140. ROTHOO(5,5)=XGLOB(1,1)
  141. ROTHOO(5,6)=XGLOB(1,2)
  142. ROTHOO(6,5)=XGLOB(2,1)
  143. ROTHOO(6,6)=XGLOB(2,2)
  144. ENDIF
  145. ELSEIF(IDIM.EQ.3)THEN
  146. DO 1050 IC=1,3
  147. DO 1050 IL=1,3
  148. ROTHOO(IL,IC)=XGLOB(IL,IC)*XGLOB(IL,IC)
  149. 1050 CONTINUE
  150. C
  151. DO 1060 IL=1,3
  152. ROTHOO(IL,4)=XGLOB(IL,1)*XGLOB(IL,2)
  153. ROTHOO(IL,5)=XGLOB(IL,2)*XGLOB(IL,3)
  154. ROTHOO(IL,6)=XGLOB(IL,1)*XGLOB(IL,3)
  155. 1060 CONTINUE
  156. C
  157. DO 1065 IC=1,3
  158. ROTHOO(4,IC)=DEUX*XGLOB(1,IC)*XGLOB(2,IC)
  159. ROTHOO(5,IC)=DEUX*XGLOB(2,IC)*XGLOB(3,IC)
  160. ROTHOO(6,IC)=DEUX*XGLOB(1,IC)*XGLOB(3,IC)
  161. 1065 CONTINUE
  162. C
  163. DO 1070 IL=4,6
  164. IL1=IL-3
  165. IL2=IL1+1
  166. IF(IL2.GT.3)IL2=IL2-3
  167. DO 1070 IC=4,6
  168. IC1=IC-3
  169. IC2=IC1+1
  170. IF(IC2.GT.3)IC2=IC2-3
  171. ROTHOO(IL,IC)=XGLOB(IL1,IC1)*XGLOB(IL2,IC2)+
  172. . XGLOB(IL1,IC2)*XGLOB(IL2,IC1)
  173. 1070 CONTINUE
  174. DO 1075 IC=1,6
  175. AA=ROTHOO(6,IC)
  176. ROTHOO(6,IC)=ROTHOO(5,IC)
  177. ROTHOO(5,IC)=AA
  178. 1075 CONTINUE
  179. DO 1080 IL=1,6
  180. AA=ROTHOO(IL,6)
  181. ROTHOO(IL,6)=ROTHOO(IL,5)
  182. ROTHOO(IL,5)=AA
  183. 1080 CONTINUE
  184. ENDIF
  185. C
  186. C TRANSFORMATION DE LA MATRICE DE HOOKE ET DE COBAUX
  187. C
  188. CALL PRODT(DDHOOK,D1HOOK,ROTHOO,LHOOK,LHOOK)
  189. *
  190. IF (MFR.EQ.33) THEN
  191. DO 1085 IL=1,LHOOK
  192. DO 1085 IC=1,LHOOK
  193. COBMA(IL)=COBMA(IL)+ROTHOO(IC,IL)*COBAUX(IC)
  194. 1085 CONTINUE
  195. ENDIF
  196. ENDIF
  197. C
  198. ELSEIF (IGAU.LE.NBGMAT.AND.
  199. + (IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN
  200. C
  201. C Coques minces
  202. C
  203. IF(MFR.EQ.3) THEN
  204. C
  205. C CAS DKT INTEGRE
  206. C
  207. IF (NPINT.NE.0) THEN
  208. * CAS NON ENCORE IMPLEMENTE
  209. IRET=0
  210. GOTO 2035
  211. ELSE
  212. C
  213. C CAS TRIDIMENSIONNEL ET FOURIER
  214. C
  215. IF(IFOU.EQ.2.OR.IFOU.EQ.1) THEN
  216. CALL ZERO(D3HOO1,3,3)
  217. D3HOO1(1,1)=VALMAT(1)
  218. COSA=VALMAT(2)
  219. SINA=VALMAT(3)
  220. C
  221. COS2 = COSA**2
  222. SIN2 = SINA**2
  223. SINCOS = SINA * COSA
  224. C
  225. RO1HOO(1,1) = COS2
  226. RO1HOO(1,2) = SIN2
  227. RO1HOO(1,3) = SINCOS
  228. RO1HOO(2,1) = SIN2
  229. RO1HOO(2,2) = COS2
  230. RO1HOO(2,3) = - SINCOS
  231. RO1HOO(3,1) = - DEUX * SINCOS
  232. RO1HOO(3,2) = DEUX * SINCOS
  233. RO1HOO(3,3) = COS2 - SIN2
  234. C
  235. C PASSAGE DANS LE REPERE DE L'ELEMENT:
  236. CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)
  237. DO 1090 J=1,3
  238. DO 1090 I=1,3
  239. DDHOOK(I,J) = D3HOO2(I,J)
  240. DDHOOK(I+3,J+3) = D3HOO2(I,J)
  241. 1090 CONTINUE
  242. C
  243. C CAS AXISYMETRIQUE ET DEFORMATIONS PLANES
  244. C
  245. ELSE IF(IFOU.EQ.0.OR.IFOU.EQ.-1.OR.IFOU.EQ.-3) THEN
  246. CALL ZERO(D2HOO1,2,2)
  247. D2HOO1(1,1)=VALMAT(1)
  248. COSA=VALMAT(2)
  249. SINA=VALMAT(3)
  250. COS2 = COSA**2
  251. SIN2 = SINA**2
  252. RO2HOO(1,1) = COS2
  253. RO2HOO(1,2) = SIN2
  254. RO2HOO(2,1) = SIN2
  255. RO2HOO(2,2) = COS2
  256. C
  257. C PASSAGE DANS LE REPERE DE L'ELEMENT:
  258. CALL PRODT (D2HOO2,D2HOO1,RO2HOO,2,2)
  259. DO 1095 J=1,2
  260. DO 1095 I=1,2
  261. DDHOOK(I,J) = D2HOO2(I,J)
  262. DDHOOK(I+2,J+2) = D2HOO2(I,J)
  263. 1095 CONTINUE
  264. C
  265. C CAS CONTRAINTES PLANES
  266. C
  267. ELSE IF(IFOU.EQ.-2) THEN
  268. YG1=VALMAT(1)
  269. DDHOOK(1,1)=YG1
  270. DDHOOK(3,3)=YG1
  271. C
  272. ELSE
  273. IRET=0
  274. ENDIF
  275. ENDIF
  276. C
  277. C Coques epaisses
  278. C
  279. ELSE IF(MFR.EQ.5) THEN
  280. C
  281. C CAS TRIDIMENSIONNEL
  282. C
  283. IF(IFOU.EQ.2) THEN
  284. CALL ZERO(D3HOO1,3,3)
  285. CALL ZERO(D2HOO2,2,2)
  286. D3HOO1(1,1)=VALMAT(1)
  287. COSA=VALMAT(2)
  288. SINA=VALMAT(3)
  289. C
  290. COS2 = COSA**2
  291. SIN2 = SINA**2
  292. SINCOS = SINA * COSA
  293. RO1HOO(1,1) = COS2
  294. RO1HOO(1,2) = SIN2
  295. RO1HOO(1,3) = SINCOS
  296. RO1HOO(2,1) = SIN2
  297. RO1HOO(2,2) = COS2
  298. RO1HOO(2,3) = - SINCOS
  299. RO1HOO(3,1) = - DEUX * SINCOS
  300. RO1HOO(3,2) = DEUX * SINCOS
  301. RO1HOO(3,3) = COS2 - SIN2
  302. C
  303. C PASSAGE DANS LE REPERE DE L'ELEMENT:
  304. CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)
  305. DO 2000 J=1,3
  306. DO 2000 I=1,3
  307. DDHOOK(I,J) = D3HOO2(I,J)
  308. 2000 CONTINUE
  309. C
  310. ELSE
  311. IRET=0
  312. ENDIF
  313. C
  314. C Coques minces avec cisaillement transverse
  315. C
  316. ELSE IF(MFR.EQ.9) THEN
  317. C
  318. IF(IFOU.EQ.2) THEN
  319. CALL ZERO(D3HOO1,3,3)
  320. CALL ZERO(D2HOO2,2,2)
  321. D3HOO1(1,1)=VALMAT(1)
  322. COSA=VALMAT(2)
  323. SINA=VALMAT(3)
  324. C
  325. COS2 = COSA**2
  326. SIN2 = SINA**2
  327. SINCOS = SINA * COSA
  328. RO1HOO(1,1) = COS2
  329. RO1HOO(1,2) = SIN2
  330. RO1HOO(1,3) = SINCOS
  331. RO1HOO(2,1) = SIN2
  332. RO1HOO(2,2) = COS2
  333. RO1HOO(2,3) = - SINCOS
  334. RO1HOO(3,1) = - DEUX * SINCOS
  335. RO1HOO(3,2) = DEUX * SINCOS
  336. RO1HOO(3,3) = COS2 - SIN2
  337. C
  338. C PASSAGE DANS LE REPERE DE L'ELEMENT:
  339. CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)
  340. DO 2015 J=1,3
  341. DO 2015 I=1,3
  342. DDHOOK(I,J) = D3HOO2(I,J)
  343. DDHOOK(I+3,J+3) = D3HOO2(I,J)
  344. 2015 CONTINUE
  345. C
  346. ELSE
  347. IRET=0
  348. ENDIF
  349. C
  350. C Cas des barres
  351. C
  352. ELSE IF(MFR.EQ.27) THEN
  353. C
  354. YOU=VALMAT(1)
  355. DDHOOK(1,1)=YOU*SECT
  356. C
  357. ELSE
  358. IRET=0
  359. GOTO 2035
  360. ENDIF
  361. ENDIF
  362. C
  363. C Prise en compte de l'epaisseur et de l'excentrement
  364. C dans le cas des coques minces avec ou sans cisaillement
  365. C transverse
  366. C
  367. IF ((MFR.EQ.3.AND.NPINT.EQ.0).OR.MFR.EQ.9) THEN
  368. CALL HOOKMU(EPAIST,EXCEN,LHOOK,DDHOOK,DDHOMU)
  369. DO 1005 IO=1,LHOOK
  370. DO 1005 JO=1,LHOOK
  371. DDHOOK(IO,JO)=DDHOMU(IO,JO)
  372. 1005 CONTINUE
  373. ENDIF
  374. C
  375. 2035 RETURN
  376. END
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  

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