Télécharger hookan.eso

Retour à la liste

Numérotation des lignes :

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

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