Télécharger rtens4.eso

Retour à la liste

Numérotation des lignes :

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

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