Télécharger rtens2.eso

Retour à la liste

Numérotation des lignes :

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

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