Télécharger hookan.eso

Retour à la liste

Numérotation des lignes :

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

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