Télécharger rtens3.eso

Retour à la liste

Numérotation des lignes :

rtens3
  1. C RTENS3 SOURCE OF166741 25/02/21 21:18:26 12166
  2. SUBROUTINE RTENS3(IPCHE1,IFOMEM,IMOT,IPTV2,IELEME,IVAVEC,IVACOM,
  3. & IVARES,IVAEP,IDEFO,IINTE,IINTE1,MELE,NPINT,NVEC,
  4. & V1,V2,W2,W3,CENTR1,CENTR2,AXEI1,ICAS,IER1)
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8(A-H,O-Z)
  7. *-----------------------------------------------------------------------*
  8. * Operateur RTENS : cas de la formulation coque epaisse *
  9. * (COQ6, COQ8) *
  10. * *
  11. * IPCHE1 (e) pointeur sur un MCHAML de caracteristiques *
  12. * = 0 si isotropie *
  13. * IFOMEM (e) = IFOUR de CCOPTIO *
  14. * IMOT (e) indique le type de repere desire (cf RTENS) *
  15. * IPTV2 (e) pointeur sur le 2nd point repere *
  16. * IELEME (e) pointeur sur le segment MELEME (actif) *
  17. * IVAVEC (e/s) pointeur sur un segment MPTVAL (actif) *
  18. * IVACOM (e/s) pointeur sur un segment MPTVAL (actif) *
  19. * IVARES (e/s) pointeur sur un segment MPTVAL (actif) *
  20. * IVAEP (e) pointeur sur un segment MPTVAL (actif) *
  21. * IDEFO (e) =1 : tenseur de deformations (contraintes sinon) *
  22. * IINTE (e) pointeur sur le segment MINTE (actif) *
  23. * IINTE1 (e) pointeur sur le segment MINTE1 (non actif) *
  24. * MELE (e) numero de l'element-fini dans NOMTP *
  25. * NPINT (e) nombre de points d'integration (coques) *
  26. * NVEC (e) nombre de composantes du futur MCHAML *
  27. * V1 (e) coordonnees et norme du 1er vecteur *
  28. * V2 (e) coordonnees et norme du 2nd vecteur *
  29. * W2 (e) coordonnees d'un 1er vecteur de travail *
  30. * W3 (e) coordonnees d'un 2nd vecteur de travail *
  31. * CENTR1 (e) coordonnees du 1er point repere *
  32. * CENTR2 (e) coordonnees du 2nd point repere *
  33. * AXEI1 (e) coordonnees du vecteur de l'axe de symetrie *
  34. * ICAS (e) distingue les differentes syntaxes d'appel *
  35. * IER1 (s) code d'erreur pour desactivation *
  36. * D.R.-M. le 21/3/94 *
  37. *-----------------------------------------------------------------------*
  38.  
  39. -INC PPARAM
  40. -INC CCOPTIO
  41. -INC CCHAMP
  42.  
  43. -INC SMCHAML
  44. -INC SMINTE
  45. -INC SMCOORD
  46. -INC SMELEME
  47.  
  48. -INC TMPTVAL
  49. *
  50. * MWRK1,2,3 initialises dans RTENS3
  51. *
  52. SEGMENT MWRK1
  53. REAL*8 XEL(3,NBNN),XEL2(3,NBNN)
  54. ENDSEGMENT
  55. *
  56. SEGMENT MWRK2
  57. REAL*8 TXR(3,3,NBNN),TH(NBNN)
  58. ENDSEGMENT
  59. *
  60. SEGMENT MWRK3
  61. REAL*8 A(NDIM,NDIM),R(NDIM,NDIM),RT(NDIM,NDIM),TRAV(NDIM,NDIM)
  62. ENDSEGMENT
  63. *
  64. DIMENSION BPSS(3,3),T(9),V1(4),V2(4),W2(3),W3(3)
  65. DIMENSION CENTR1(3),CENTR2(3),AXEI1(3)
  66. *
  67. IER1=0
  68. MELEME = IELEME
  69. NBNN = NUM(/1)
  70. NBELEM = NUM(/2)
  71. NDIM = 3
  72. MINTE = IINTE
  73. NBPGAU = POIGAU(/1)
  74. SEGINI MWRK1,MWRK2,MWRK3
  75. MINTE1 = IINTE1
  76. SEGACT MINTE1
  77. *
  78. * Boucle sur les elements
  79. *
  80. DO 1050 IB=1,NBELEM
  81. *
  82. IF (ICAS.NE.1) THEN
  83. *
  84. * Epaisseur de l'element courant
  85. *
  86. DO 1060 IG = 1,NBNN
  87. MPTVAL = IVAEP
  88. MELVAL=IVAL(1)
  89. IGMN=MIN(IG,VELCHE(/1))
  90. IBMN=MIN(IB,VELCHE(/2))
  91. TH(IG)=VELCHE(IGMN,IBMN)
  92. 1060 CONTINUE
  93. *
  94. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XEL)
  95. CALL CQ8LOC(XEL,NBNN,MINTE1.SHPTOT,TXR,IRR)
  96. ENDIF
  97. *
  98. * Boucle sur les points de Gauss
  99. *
  100. DO 1050 IGAU=1,NBPGAU
  101. *
  102. IF (ICAS.EQ.1) THEN
  103. *
  104. * On veut le tenseur dans le repere d'orthotropie
  105. *
  106. MPTVAL=IVAVEC
  107. *
  108. MELVAL=IVAL(1)
  109. IBMN=MIN(IB,VELCHE(/2))
  110. IGMN=MIN(IGAU,VELCHE(/1))
  111. R(1,1)=VELCHE(IGMN,IBMN)
  112. *
  113. MELVAL=IVAL(2)
  114. IGMN=MIN(IGAU,VELCHE(/1))
  115. IBMN=MIN(IB,VELCHE(/2))
  116. R(2,1)=VELCHE(IGMN,IBMN)
  117. RN=R(1,1)*R(1,1)+R(2,1)*R(2,1)
  118. *
  119. IF (RN.EQ.0.D0) THEN
  120. CALL ERREUR(344)
  121. IER1 = 1
  122. GOTO 1050
  123. ENDIF
  124. *
  125. R(1,2)=-R(2,1)
  126. R(2,2)= R(1,1)
  127. R(3,3)= 1.D0
  128. *
  129. CALL TRSPOD(R,NDIM,NDIM,RT)
  130. ELSE
  131. E = DZEGAU(IGAU)
  132. CALL CQ8LC1(IGAU,NBNN,E,XEL,TH,SHPTOT,TXR,T,IRR)
  133. *
  134. * Construction de la matrice de rotation qui fait
  135. * passer d'un repere global au repere local au point
  136. * d'integration
  137. *
  138. K=0
  139. DO 1053 I=1,3
  140. DO 1054 J=1,3
  141. K=K+1
  142. BPSS(I,J)=T(K)
  143. 1054 CONTINUE
  144. 1053 CONTINUE
  145. ENDIF
  146. *
  147. IF (ICAS.EQ.2) THEN
  148. *
  149. * On veut le tenseur dans un repere defini
  150. * par 1 ou 2 vecteurs
  151. *
  152. VL11=BPSS(1,1)*V1(1)+BPSS(1,2)*V1(2)+BPSS(1,3)*V1(3)
  153. VL12=BPSS(2,1)*V1(1)+BPSS(2,2)*V1(2)+BPSS(2,3)*V1(3)
  154. VL1N=SQRT(VL11**2+VL12**2)
  155. *
  156. IF (VL1N.EQ.0.D0) THEN
  157. CALL ERREUR(344)
  158. IER1 = 1
  159. GOTO 1050
  160. ENDIF
  161. *
  162. IF (IPTV2.NE.0) THEN
  163. VL21=BPSS(1,1)*V2(1)+BPSS(1,2)*V2(2)+BPSS(1,3)*V2(3)
  164. VL22=BPSS(2,1)*V2(1)+BPSS(2,2)*V2(2)+BPSS(2,3)*V2(3)
  165. VL2N=SQRT(VL21**2+VL22**2)
  166. IF (VL2N.EQ.0.D0) THEN
  167. CALL ERREUR(344)
  168. IER1 = 1
  169. GOTO 1050
  170. ENDIF
  171. *
  172. WL33=(VL11*VL22-VL12*VL21)/(VL1N*VL2N)
  173. WL21=(-WL33*VL12)/VL1N
  174. WL22=( WL33*VL11)/VL1N
  175. ENDIF
  176. *
  177. * Matrice de rotation faisant passer du repere local
  178. * au point de Gauss au nouveau repere local defini
  179. * a partir de la projection des vecteurs V1 et V2
  180. * sur la coque
  181. *
  182. IF (IPTV2.EQ.0) THEN
  183. R(1,1)= VL11/VL1N
  184. R(2,1)= VL12/VL1N
  185. R(1,2)=-VL12/VL1N
  186. R(2,2)= VL11/VL1N
  187. R(3,3)= 1.D0
  188. ELSE
  189. R(1,1)=VL11/VL1N
  190. R(2,1)=VL12/VL1N
  191. R(1,2)=WL21
  192. R(2,2)=WL22
  193. R(3,3)=WL33
  194. ENDIF
  195. CALL TRSPOD(R,NDIM,NDIM,RT)
  196. ENDIF
  197. *
  198. IF (ICAS.EQ.3) THEN
  199. *
  200. * Matrice de passage entre le repere local de la coque
  201. * et la projection sur celle-ci du repere global choisi
  202. *
  203. CALL RTENS5(IMOT,3,IGAU,NDIM,V1,CENTR1,CENTR2,BPSS,
  204. & SHPTOT,XEL,NBNN,NBPGAU,R,SIGFLX,IER1)
  205. IF (IER1.NE.0) THEN
  206. IF (IER1.EQ.1) CALL ERREUR(344)
  207. IF (IER1.EQ.2) CALL ERREUR(642)
  208. GOTO 1050
  209. ENDIF
  210. CALL TRSPOD(R,NDIM,NDIM,RT)
  211. ENDIF
  212. *
  213. * Rotation du tenseur pour les grandeurs de membrane
  214. *
  215. CALL ZERO(A,3,3)
  216. *
  217. MPTVAL=IVACOM
  218. *
  219. MELVAL=IVAL(1)
  220. IGMN=MIN(IGAU,VELCHE(/1))
  221. IBMN=MIN(IB ,VELCHE(/2))
  222. A(1,1) = VELCHE(IGMN,IBMN)
  223. *
  224. MELVAL=IVAL(2)
  225. IGMN=MIN(IGAU,VELCHE(/1))
  226. IBMN=MIN(IB ,VELCHE(/2))
  227. A(2,2) = VELCHE(IGMN,IBMN)
  228. *
  229. MELVAL=IVAL(3)
  230. IGMN=MIN(IGAU,VELCHE(/1))
  231. IBMN=MIN(IB ,VELCHE(/2))
  232. A(1,2) = VELCHE(IGMN,IBMN)
  233. *
  234. MELVAL=IVAL(4)
  235. IGMN=MIN(IGAU,VELCHE(/1))
  236. IBMN=MIN(IB ,VELCHE(/2))
  237. A(1,3) = VELCHE(IGMN,IBMN)
  238. *
  239. MELVAL=IVAL(5)
  240. IGMN=MIN(IGAU,VELCHE(/1))
  241. IBMN=MIN(IB ,VELCHE(/2))
  242. A(2,3) = VELCHE(IGMN,IBMN)
  243. *
  244. IF (IDEFO.EQ.1) A(1,2)=A(1,2)/2.D0
  245. IF (IDEFO.EQ.1) A(1,3)=A(1,3)/2.D0
  246. IF (IDEFO.EQ.1) A(2,3)=A(2,3)/2.D0
  247. A(2,1)=A(1,2)
  248. A(3,1)=A(1,3)
  249. A(3,2)=A(2,3)
  250. * t
  251. * >>> Changement de repere : A = R A R <<<
  252. *
  253. CALL MULMAT(TRAV,A,R,3,3,3)
  254. CALL MULMAT(A,RT,TRAV,3,3,3)
  255. *
  256. MPTVAL=IVARES
  257. *
  258. MELVAL=IVAL(1)
  259. VELCHE(IGAU,IB)=A(1,1)
  260. *
  261. MELVAL=IVAL(2)
  262. VELCHE(IGAU,IB)=A(2,2)
  263. *
  264. IF (IDEFO.EQ.1) A(1,2)=A(1,2)*2.D0
  265. IF (IDEFO.EQ.1) A(1,3)=A(1,3)*2.D0
  266. IF (IDEFO.EQ.1) A(2,3)=A(2,3)*2.D0
  267. *
  268. MELVAL=IVAL(3)
  269. VELCHE(IGAU,IB) = A(1,2)
  270. *
  271. MELVAL=IVAL(4)
  272. VELCHE(IGAU,IB)=A(1,3)
  273. *
  274. MELVAL=IVAL(5)
  275. VELCHE(IGAU,IB)=A(2,3)
  276. *
  277. * Fin des deux boucles
  278. *
  279. 1050 CONTINUE
  280. *
  281. SEGDES MINTE,MINTE1
  282. SEGSUP MWRK1,MWRK2,MWRK3
  283. RETURN
  284. END
  285.  
  286.  
  287.  

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