Télécharger thetor.eso

Retour à la liste

Numérotation des lignes :

thetor
  1. C THETOR SOURCE BP208322 17/03/01 21:18:30 9325
  2.  
  3. C=======================================================================
  4. C= T H E T O R =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul des contraintes d'origine THERMIQUE dans le cas des mate- =
  10. C= riaux ORTHOTROPES. Sous-programme appele par THETAP (thetap.eso). =
  11. C= =
  12. C= Parametres : (E)=Entree (S)=Sortie =
  13. C= ------------ =
  14. C= MFR (E) Numero de la FORMULATION utilisee =
  15. C= MELE (E) Numero de l'element fini dans NOMTP (cf. CCHAMP) =
  16. C= VALMAT (E) Tableau des caracteristiques du materiau =
  17. C= LHOOK (E) Dimension de la matrice de Hooke =
  18. C= NSTRS (E) Nombre de composantes de contraintes =
  19. C= TEMP (E) Temperature au point de Gauss considere =
  20. C= THIF (E) | Temperatures des differentes couches =
  21. C= THM (E) | dans les cas des elements coques =
  22. C= THSU (E) | (couches INFErieure, MOYEnne, SUPErieure) =
  23. C= E3 (E) Excentrement dans la cas d'elements coques =
  24. C= SD (E) Section dans le cas d'elements barres =
  25. C= EPAIST (E) Epaisseur dans le cas d'elements coques =
  26. C= RES (S) Tableau des valeurs des deformation thermiques =
  27. C= KERRE (S) Indicateur d'erreur si non nul =
  28. C= DHOOK (S) Matrice de Hooke au point de Gauss considere =
  29. C= TXR,XLOC,XGLOB,ROTS (E/S) Tableaux de travail =
  30. C=======================================================================
  31.  
  32. SUBROUTINE THETOR (MFR,MELE,VALMAT,LHOOK,NSTRS,TEMP,THIF,THM,
  33. . THSU,E3,SD,EPAIST,TXR,XLOC,XGLOB,ROTS,DHOOK,
  34. . RES,KERRE)
  35.  
  36. IMPLICIT INTEGER(I-N)
  37. IMPLICIT REAL*8 (A-H,O-Z)
  38.  
  39.  
  40. -INC PPARAM
  41. -INC CCOPTIO
  42. -INC CCHAMP
  43. -INC CCREEL
  44.  
  45. DIMENSION XLOC(3,3),XGLOB(3,3),ROTS(NSTRS,*),DHOOK(LHOOK,*),
  46. . TXR(IDIM,*),RES(NSTRS),VALMAT(*)
  47.  
  48. PARAMETER (UN=1.,DEUX=2.)
  49.  
  50. KERRE=0
  51.  
  52. C 1 - Elements MASSIFS et POREUX
  53. C ================================
  54. IF (MFR.EQ.1.OR.MFR.EQ.33.OR.MFR.EQ.31) THEN
  55. C =====
  56. C 1.1 - Bidimensionnel PLAN Contraintes Planes
  57. C =====
  58. IF (IFOUR.EQ.-2)THEN
  59. YG1=VALMAT(1)
  60. YG2=VALMAT(2)
  61. XNU12=VALMAT(3)
  62. ALP1=VALMAT(4)
  63. ALP2=VALMAT(5)
  64. XLOC(1,1)=VALMAT(6)
  65. XLOC(2,1)=VALMAT(7)
  66. XLOC(1,2)=-XLOC(2,1)
  67. XLOC(2,2)=XLOC(1,1)
  68. DO K=1,IDIM
  69. DO J=1,IDIM
  70. AA=XZero
  71. DO I=1,IDIM
  72. AA=AA+TXR(J,I)*XLOC(I,K)
  73. ENDDO
  74. XGLOB(J,K)=AA
  75. ENDDO
  76. ENDDO
  77. CC=XGLOB(1,1)*XGLOB(1,1)
  78. SS=XGLOB(2,1)*XGLOB(2,1)
  79. CS=XGLOB(1,1)*XGLOB(2,1)
  80. AA=TEMP/(UN-(XNU12*XNU12*YG2/YG1))
  81. st1=(YG1*ALP1+XNU12*YG2*ALP2)*AA
  82. st2=(YG2*ALP2+XNU12*YG2*ALP1)*AA
  83. RES(1)=CC*st1+SS*st2
  84. RES(2)=CC*st2+SS*st1
  85. RES(3)=XZero
  86. RES(4)=CS*(st1-st2)
  87. C =====
  88. C 1.2 - Bidimensionnel PLAN (DP/DPGE) et Axisymetrie
  89. C =====
  90. ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-3.OR.IFOUR.EQ.0) THEN
  91. YG1=VALMAT(1)
  92. YG2=VALMAT(2)
  93. YG3=VALMAT(3)
  94. XNU12=VALMAT(4)
  95. XNU23=VALMAT(5)
  96. XNU13=VALMAT(6)
  97. ALP1=VALMAT(7)
  98. ALP2=VALMAT(8)
  99. ALP3=VALMAT(9)
  100. XLOC(1,1)=VALMAT(10)
  101. XLOC(2,1)=VALMAT(11)
  102. XLOC(1,2)=-XLOC(2,1)
  103. XLOC(2,2)=XLOC(1,1)
  104. DO K=1,IDIM
  105. DO J=1,IDIM
  106. AA=XZero
  107. DO I=1,IDIM
  108. AA=AA+TXR(J,I)*XLOC(I,K)
  109. ENDDO
  110. XGLOB(J,K)=AA
  111. ENDDO
  112. ENDDO
  113. CC=XGLOB(1,1)*XGLOB(1,1)
  114. SS=XGLOB(2,1)*XGLOB(2,1)
  115. CS=XGLOB(1,1)*XGLOB(2,1)
  116. XNU21=(YG2/YG1)*XNU12
  117. XNU32=(YG3/YG2)*XNU23
  118. XNU31=(YG3/YG1)*XNU13
  119. AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31
  120. . -DEUX*XNU21*XNU32*XNU13)
  121. AUX1=YG1/AUX
  122. AUX2=YG2/AUX
  123. AUX3=YG3/AUX
  124. DHOOK(1,1)=(UN-XNU23*XNU32)*AUX1
  125. DHOOK(1,2)=(XNU21+XNU31*XNU23)*AUX1
  126. DHOOK(2,1)=DHOOK(1,2)
  127. DHOOK(1,3)=(XNU31+XNU21*XNU32)*AUX1
  128. DHOOK(3,1)=DHOOK(1,3)
  129. DHOOK(2,2)=(UN-XNU13*XNU31)*AUX2
  130. DHOOK(2,3)=(XNU32+XNU12*XNU31)*AUX2
  131. DHOOK(3,2)=DHOOK(2,3)
  132. DHOOK(3,3)=(UN-XNU12*XNU21)*AUX3
  133. st1=DHOOK(1,1)*ALP1+DHOOK(1,2)*ALP2+DHOOK(1,3)*ALP3
  134. st2=DHOOK(2,1)*ALP1+DHOOK(2,2)*ALP2+DHOOK(2,3)*ALP3
  135. st3=DHOOK(3,1)*ALP1+DHOOK(3,2)*ALP2+DHOOK(3,3)*ALP3
  136. RES(1)=(CC*st1+SS*st2)*TEMP
  137. RES(2)=(CC*st2+SS*st1)*TEMP
  138. RES(3)=st3*TEMP
  139. RES(4)=CS*(st1-st2)*TEMP
  140. IF (IFOUR.EQ.1) THEN
  141. RES(5)=XZero
  142. RES(6)=XZero
  143. ENDIF
  144. C =====
  145. C 1.3 - Tridimensionnel ou 2D Fourier
  146. C =====
  147. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.1) THEN
  148. YG1=VALMAT(1)
  149. YG2=VALMAT(2)
  150. YG3=VALMAT(3)
  151. XNU12=VALMAT(4)
  152. XNU23=VALMAT(5)
  153. XNU13=VALMAT(6)
  154. ALP1=VALMAT(7)
  155. ALP2=VALMAT(8)
  156. ALP3=VALMAT(9)
  157. XLOC(1,1)=VALMAT(10)
  158. XLOC(2,1)=VALMAT(11)
  159. XLOC(3,1)=VALMAT(12)
  160. XLOC(1,2)=VALMAT(13)
  161. XLOC(2,2)=VALMAT(14)
  162. XLOC(3,2)=VALMAT(15)
  163. CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)
  164. DO K=1,3
  165. DO J=1,IDIM
  166. AA=XZero
  167. DO I=1,IDIM
  168. AA=AA+TXR(J,I)*XLOC(I,K)
  169. ENDDO
  170. XGLOB(J,K)=AA
  171. ROTS(J,K)=AA*AA
  172. ENDDO
  173. ENDDO
  174. cbp en 2D Fourier, vrai TXR = [TXR(2x2) [0] ; [0] 1]
  175. IF (IFOUR.EQ.1) THEN
  176. XGLOB(3,1)=XLOC(3,1)
  177. XGLOB(3,2)=XLOC(3,2)
  178. XGLOB(3,3)=XLOC(3,3)
  179. ENDIF
  180. DO i=1,3
  181. ROTS(i,4)=2.*XGLOB(i,1)*XGLOB(i,2)
  182. ROTS(i,5)=2.*XGLOB(i,2)*XGLOB(i,3)
  183. ROTS(i,6)=2.*XGLOB(i,1)*XGLOB(i,3)
  184. ROTS(4,i)=XGLOB(1,i)*XGLOB(2,i)
  185. ROTS(5,i)=XGLOB(2,i)*XGLOB(3,i)
  186. ROTS(6,i)=XGLOB(1,i)*XGLOB(3,i)
  187. ENDDO
  188. DO i=4,6
  189. IL1=i-3
  190. IL2=IL1+1
  191. IF (IL2.GT.3) IL2=IL2-3
  192. DO j=4,6
  193. IC1=j-3
  194. IC2=IC1+1
  195. IF (IC2.GT.3) IC2=IC2-3
  196. ROTS(i,j)= XGLOB(IL1,IC1)*XGLOB(IL2,IC2)
  197. . +XGLOB(IL1,IC2)*XGLOB(IL2,IC1)
  198. ENDDO
  199. ENDDO
  200. DO i=1,6
  201. AA=ROTS(6,i)
  202. ROTS(6,i)=ROTS(5,i)
  203. ROTS(5,i)=AA
  204. ENDDO
  205. DO i=1,6
  206. AA=ROTS(i,6)
  207. ROTS(i,6)=ROTS(i,5)
  208. ROTS(i,5)=AA
  209. ENDDO
  210. XNU21=(YG2/YG1)*XNU12
  211. XNU32=(YG3/YG2)*XNU23
  212. XNU31=(YG3/YG1)*XNU13
  213. AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31
  214. . -DEUX*XNU21*XNU32*XNU13)
  215. AUX1=YG1/AUX
  216. AUX2=YG2/AUX
  217. AUX3=YG3/AUX
  218. DHOOK(1,1)=(UN-XNU23*XNU32)*AUX1
  219. DHOOK(1,2)=(XNU21+XNU31*XNU23)*AUX1
  220. DHOOK(2,1)=DHOOK(1,2)
  221. DHOOK(1,3)=(XNU31+XNU21*XNU32)*AUX1
  222. DHOOK(3,1)=DHOOK(1,3)
  223. DHOOK(2,2)=(UN-XNU13*XNU31)*AUX2
  224. DHOOK(2,3)=(XNU32+XNU12*XNU31)*AUX2
  225. DHOOK(3,2)=DHOOK(2,3)
  226. DHOOK(3,3)=(UN-XNU12*XNU21)*AUX3
  227. st1=DHOOK(1,1)*ALP1+DHOOK(1,2)*ALP2+DHOOK(1,3)*ALP3
  228. st2=DHOOK(2,1)*ALP1+DHOOK(2,2)*ALP2+DHOOK(2,3)*ALP3
  229. st3=DHOOK(3,1)*ALP1+DHOOK(3,2)*ALP2+DHOOK(3,3)*ALP3
  230. RES(1)=(st1*ROTS(1,1)+st2*ROTS(1,2)+st3*ROTS(1,3))*TEMP
  231. RES(2)=(st1*ROTS(2,1)+st2*ROTS(2,2)+st3*ROTS(2,3))*TEMP
  232. RES(3)=(st1*ROTS(3,1)+st2*ROTS(3,2)+st3*ROTS(3,3))*TEMP
  233. RES(4)=(st1*ROTS(4,1)+st2*ROTS(4,2)+st3*ROTS(4,3))*TEMP
  234. RES(5)=(st1*ROTS(5,1)+st2*ROTS(5,2)+st3*ROTS(5,3))*TEMP
  235. RES(6)=(st1*ROTS(6,1)+st2*ROTS(6,2)+st3*ROTS(6,3))*TEMP
  236. C =====
  237. C 1.4 - Unidimensionnel (1D)
  238. C Les axes d'orthotropie sont confondus avec le repere global.
  239. C =====
  240. ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15.AND.MFR.EQ.1) THEN
  241. IF (IFOUR.EQ.6) THEN
  242. RES(1)=VALMAT(1)*VALMAT(7)*TEMP
  243. RES(2)=0.
  244. RES(3)=0.
  245. ELSE IF (IFOUR.EQ.4.OR.IFOUR.EQ.8) THEN
  246. YG1=VALMAT(1)
  247. YG2=VALMAT(2)
  248. XNU12=VALMAT(4)
  249. XNU21=(YG2/YG1)*XNU12
  250. AUX=Un/(Un-XNU12*XNU21)
  251. DHOOK(1,1)=YG1*AUX
  252. DHOOK(2,1)=XNU21*YG1*AUX
  253. DHOOK(1,2)=DHOOK(2,1)
  254. DHOOK(2,2)=YG2*AUX
  255. ALP1=VALMAT(7)
  256. ALP2=VALMAT(8)
  257. RES(1)=(DHOOK(1,1)*ALP1+DHOOK(1,2)*ALP2)*TEMP
  258. RES(2)=(DHOOK(2,1)*ALP1+DHOOK(2,2)*ALP2)*TEMP
  259. RES(3)=0.
  260. ELSE IF (IFOUR.EQ.5.OR.IFOUR.EQ.10.OR.IFOUR.EQ.13) THEN
  261. YG1=VALMAT(1)
  262. YG3=VALMAT(3)
  263. XNU13=VALMAT(6)
  264. XNU31=(YG3/YG1)*XNU13
  265. AUX=Un/(Un-XNU13*XNU31)
  266. DHOOK(1,1)=YG1*AUX
  267. DHOOK(3,1)=XNU31*YG1*AUX
  268. DHOOK(1,3)=DHOOK(3,1)
  269. DHOOK(3,3)=YG3*AUX
  270. ALP1=VALMAT(7)
  271. ALP3=VALMAT(8)
  272. RES(1)=(DHOOK(1,1)*ALP1+DHOOK(1,3)*ALP3)*TEMP
  273. RES(2)=0.
  274. RES(3)=(DHOOK(3,1)*ALP1+DHOOK(3,3)*ALP3)*TEMP
  275. ELSE
  276. YG1=VALMAT(1)
  277. YG2=VALMAT(2)
  278. YG3=VALMAT(3)
  279. XNU12=VALMAT(4)
  280. XNU23=VALMAT(5)
  281. XNU13=VALMAT(6)
  282. XNU21=(YG2/YG1)*XNU12
  283. XNU32=(YG3/YG2)*XNU23
  284. XNU31=(YG3/YG1)*XNU13
  285. AUX=Un/(Un-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31
  286. . -Deux*XNU12*XNU23*XNU31)
  287. AUX1=AUX*YG1
  288. DHOOK(1,1)=(Un-XNU23*XNU32)*AUX1
  289. DHOOK(1,2)=(XNU21+XNU31*XNU23)*AUX1
  290. DHOOK(2,1)=DHOOK(1,2)
  291. DHOOK(1,3)=(XNU31+XNU21*XNU32)*AUX1
  292. DHOOK(3,1)=DHOOK(1,3)
  293. AUX2=AUX*YG2
  294. DHOOK(2,2)=(Un-XNU13*XNU31)*AUX2
  295. DHOOK(2,3)=(XNU32+XNU12*XNU31)*AUX2
  296. DHOOK(3,2)=DHOOK(2,3)
  297. DHOOK(3,3)=(Un-XNU12*XNU21)*AUX*YG3
  298. ALP1=VALMAT(7)*TEMP
  299. ALP2=VALMAT(8)*TEMP
  300. ALP3=VALMAT(9)*TEMP
  301. RES(1)=DHOOK(1,1)*ALP1+DHOOK(1,2)*ALP2+DHOOK(1,3)*ALP3
  302. RES(2)=DHOOK(2,1)*ALP1+DHOOK(2,2)*ALP2+DHOOK(2,3)*ALP3
  303. RES(3)=DHOOK(3,1)*ALP1+DHOOK(3,2)*ALP2+DHOOK(3,3)*ALP3
  304. ENDIF
  305. C =====
  306. C 1.5 - Cas non prevus
  307. C =====
  308. ELSE
  309. KERRE=19
  310. ENDIF
  311.  
  312. C 2 - Elements JOINT 3D : JOT4 et JOI4
  313. C ======================================
  314. ELSE IF (MELE.EQ.87.OR.MELE.EQ.88) THEN
  315. IF (IFOUR.EQ.2) THEN
  316. ZKN=VALMAT(3)
  317. ALPN=VALMAT(4)
  318. RES(1)=XZero
  319. RES(2)=XZero
  320. RES(3)=ALPN * ZKN * TEMP
  321. ELSE
  322. KERRE=19
  323. ENDIF
  324.  
  325. C 3 - Elements COQUES MINCES sauf COQ2
  326. C ======================================
  327. ELSE IF (MELE.EQ.27.OR.MELE.EQ.28.OR.MELE.EQ.49.OR.
  328. . MELE.EQ.93) THEN
  329. IF (IFOUR.GT.0) THEN
  330. YG1=VALMAT(1)
  331. YG2=VALMAT(2)
  332. XNU12=VALMAT(3)
  333. ALP1=VALMAT(4)
  334. ALP2=VALMAT(5)
  335. V1X=VALMAT(6)
  336. V1Y=VALMAT(7)
  337. CC=V1X*V1X
  338. SS=V1Y*V1Y
  339. CS=V1X*V1Y
  340. X1NUNU=UN-(XNU12*XNU12 * YG2 /YG1)
  341. THMO=(THSU+THIF+4.D0*THM)/6.D0
  342. THDI=THSU-THIF
  343. EXCEN=XZero
  344. EP2=EPAIST*EPAIST/12.D0
  345. FACM=THMO*EPAIST
  346. FACF=THMO*EPAIST*EXCEN+THDI*EP2
  347. st1=(YG1*ALP1+XNU12*YG2*ALP2)/X1NUNU
  348. st2=(YG2*ALP2+XNU12*YG2*ALP1)/X1NUNU
  349. RES(4)=CC*st1+SS*st2
  350. RES(5)=CC*st2+SS*st1
  351. RES(6)=CS*(st1-st2)
  352. RES(1)=RES(4)*FACM
  353. RES(2)=RES(5)*FACM
  354. RES(3)=RES(6)*FACM
  355. RES(4)=RES(4)*FACF
  356. RES(5)=RES(5)*FACF
  357. RES(6)=RES(6)*FACF
  358. ELSE
  359. KERRE=19
  360. ENDIF
  361.  
  362. C 4 - Element COQ2
  363. C ==================
  364. ELSE IF (MELE.EQ.44) THEN
  365. YG1=VALMAT(1)
  366. YG2=VALMAT(2)
  367. XNU12=VALMAT(3)
  368. ALP1=VALMAT(4)
  369. ALP2=VALMAT(5)
  370. V1X=VALMAT(6)
  371. V1Y=VALMAT(7)
  372. CC=V1X*V1X
  373. SS=V1Y*V1Y
  374. CS=V1X*V1Y
  375. X1NUNU=UN-(XNU12*XNU12 * YG2 / YG1)
  376. THMO=(THSU+THIF+4.D0*THM)/6.D0
  377. THDI=THSU-THIF
  378. EXCEN=XZero
  379. EP2=EPAIST*EPAIST/12.D0
  380. FACM=THMO*EPAIST
  381. FACF=THMO*EPAIST*EXCEN+THDI*EP2
  382. st1=(YG1*ALP1+XNU12*YG2*ALP2)/X1NUNU
  383. st2=(YG2*ALP2+XNU12*YG2*ALP1)/X1NUNU
  384. IF (IFOUR.GT.0) THEN
  385. RES(4)=CC*st1+SS*st2
  386. RES(5)=CC*st2+SS*st1
  387. RES(6)=CS*(st1-st2)
  388. RES(1)=RES(4)*FACM
  389. RES(2)=RES(5)*FACM
  390. RES(3)=RES(6)*FACM
  391. RES(4)=RES(4)*FACF
  392. RES(5)=RES(5)*FACF
  393. RES(6)=RES(6)*FACF
  394. ELSE IF (IFOUR.EQ.0) THEN
  395. RES(3)=CC*st1+SS*st2
  396. RES(4)=CC*st2+SS*st1
  397. RES(1)=RES(3)*FACM
  398. RES(2)=RES(4)*FACM
  399. RES(3)=RES(3)*FACF
  400. RES(4)=RES(4)*FACF
  401. ELSE
  402. KERRE=19
  403. ENDIF
  404.  
  405. C 5 - Elements COQUES EPAISSES
  406. C ==============================
  407. ELSE IF (MELE.EQ.41.OR.MELE.EQ.56) THEN
  408. YG1=VALMAT(1)
  409. YG2=VALMAT(2)
  410. XNU12=VALMAT(3)
  411. ALP1=VALMAT(4)
  412. ALP2=VALMAT(5)
  413. V1X=VALMAT(6)
  414. V1Y=VALMAT(7)
  415. CC=V1X*V1X
  416. SS=V1Y*V1Y
  417. CS=V1X*V1Y
  418. X1NUNU=UN-(XNU12*XNU12 * YG2 / YG1)
  419. THG=0.5*E3*((E3+UN)*THSU+(E3-UN)*THIF)+(UN-E3*E3)*THM
  420. st1=(YG1*ALP1+XNU12*YG2*ALP2)/X1NUNU
  421. st2=(YG2*ALP2+XNU12*YG2*ALP1)/X1NUNU
  422. RES(1)=(CC*st1+SS*st2)*THG
  423. RES(2)=(CC*st2+SS*st1)*THG
  424. RES(3)=CS*(st1-st2)*THG
  425. RES(4)=XZero
  426. RES(5)=XZero
  427.  
  428. C 6 - Elements POUTRES et TUYAUX
  429. C ================================
  430. ELSE IF (MELE.EQ.29.OR.MELE.EQ.42.OR.MELE.EQ.84) THEN
  431. YOU=VALMAT(1)
  432. ALPH=VALMAT(2)
  433. RES(1)=YOU*ALPH*SD*TEMP
  434.  
  435. C 7 - Elements BARRES, CERCES et POINT
  436. C ======================================
  437. ELSEIF(MELE.EQ.46.OR.MELE.EQ.95.OR.MELE.EQ.45)THEN
  438. IF (MELE.EQ.45.AND.IFOUR.NE.-3) THEN
  439. KERRE=86
  440. ELSE IF (MELE.EQ.95.AND.IFOUR.NE.0) THEN
  441. KERRE=86
  442. ELSE
  443. YOU=VALMAT(1)
  444. ALPH=VALMAT(2)
  445. RES(1)=YOU*ALPH*SD*TEMP
  446. ENDIF
  447.  
  448. C 8 - Autres cas non prevus
  449. C ===========================
  450. ELSE
  451. KERRE=19
  452. ENDIF
  453.  
  454. RETURN
  455. END
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  

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