Télécharger tnumac.eso

Retour à la liste

Numérotation des lignes :

tnumac
  1. C TNUMAC SOURCE OF166741 25/02/21 21:18:59 12166
  2.  
  3. C=======================================================================
  4. C= T N U M A C =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul de la matrice de CONDUCTIVITE THERMIQUE (conduction) pour =
  10. C= les elements finis MASSIFs a integration NUMERIQUE =
  11. C= =
  12. C= Parametres : (E)=Entree (S)=Sortie =
  13. C= ------------ =
  14. C= NEF (E) Numero de l'ELEMENT FINI dans NOMTP (cf. CCHAMP) =
  15. C= IMAIL (E) Numero du segment IMODEL dans le segment MMODEL =
  16. C= IPMODE (E) Pointeur sur un segment IMODEL suppose ACTIF =
  17. C= IPCHEM (E) Pointeur sur un segment MCHELM de CARACTERISTIQUES =
  18. C= IPRIGI (E/S) Pointeur sur l'objet RIGIDITE (CONDUCTIVITE) =
  19. C= =
  20. C= Variables locales : =
  21. C= ------------------- =
  22. C= NBNN Nombre de NOEUDS dans l'element considere =
  23. C= NbElem Nombre d'ELEMENTS dans le maillage elementaire =
  24. C= NbPGau Nombre de points de Gauss de l'element fini =
  25. C= XE(3,NBNN) Coordonnees GLOBALES des noeuds de l'ELEMENT =
  26. C= SHP(6,NBNN) Tableau de TRAVAIL =
  27. C= FORME(NBNN) Fonctions de FORME =
  28. C= NDIM Nombre de lignes de la matrice GRADIENT =
  29. C= GRAD(NDIM,NBNN) Matrice GRADIENT des fonctions de forme =
  30. C= CEL(NBNN,NBNN) Matrice de CONDUCTIVITE ELEMENTAIRE =
  31. C= CMAT(NDIM,NDIM) Matrice de CONDUCTIBILITE du materiau =
  32. C= VALMAT Valeurs des composantes de CONDUCTIBILITE et des =
  33. C= cos.directeurs des axes orthotropie/repere LOCAL =
  34. C= XGLOB Cos.directeurs des 3 axes d'ortho./repere GLOBAL =
  35. C= XLOC Cos.directeurs des 3 axes d'ortho./repere LOCAL =
  36. C= TXR Cos.directeurs des axes LOCAUX/repere GLOBAL =
  37. C= =
  38. C= Denis ROBERT, le 7 janvier 1988. P. DOWLATYARI, octobre 1990. =
  39. C=======================================================================
  40.  
  41. SUBROUTINE TNUMAC (NEF,IPMAIL,IPINTE,IMATE,IVAMAT,NVAMAT,
  42. & IPMATR,NLIGR)
  43.  
  44. IMPLICIT INTEGER(I-N)
  45. IMPLICIT REAL*8 (A-H,O-Z)
  46.  
  47. -INC PPARAM
  48. -INC CCOPTIO
  49. -INC CCREEL
  50. -INC CCHAMP
  51.  
  52. -INC SMCHAML
  53. -INC SMCOORD
  54. -INC SMELEME
  55. -INC SMINTE
  56. -INC SMRIGID
  57.  
  58. -INC TMPTVAL
  59.  
  60. SEGMENT MMAT1
  61. REAL*8 VALMAT(NV1)
  62. REAL*8 CEL(NLIGR,NLIGR),XE(3,NBNN)
  63. REAL*8 SHP(6,NBNN),GRAD(NDIM,NBNN)
  64. REAL*8 CMAT(NDIM,NDIM),CMAT1(IDIM,IDIM),CMAT2(IDIM,IDIM)
  65. ENDSEGMENT
  66.  
  67. SEGMENT MAXE
  68. REAL*8 TXR(IDIM,IDIM),XLOC(3,3),XGLOB(3,3)
  69. ENDSEGMENT
  70.  
  71. C 1 - INITIALISATIONS ET VERIFICATIONS
  72. C ======================================
  73. MELEME = IPMAIL
  74. c* SEGACT,MELEME
  75. NBNN = NUM(/1)
  76. NBELEM = NUM(/2)
  77. C =====
  78. MINTE = IPINTE
  79. c* SEGACT,MINTE
  80. NBPGAU = POIGAU(/1)
  81. C =====
  82. MPTVAL = IVAMAT
  83. c* SEGACT,MPTVAL
  84. C =====
  85. XMATRI = IPMATR
  86. c* SEGACT,XMATRI*MOD
  87. C =====
  88. C Recuperation des fonctions de forme et de leurs derivees au
  89. C centre de gravite de l'element pour le calcul des axes locaux
  90. C d'orthotropie ou d'anisotropie
  91. C =====
  92. IF (IMATE.EQ.2 .OR. IMATE.EQ.3) THEN
  93. NLG = NUMGEO(NEF)
  94. CALL RESHPT(1,NBNN,NLG,NEF,0,IPINT1,IOK)
  95. C*OF IF (IOK.EQ.0) RETURN
  96. MINTE1 = IPINT1
  97. SEGACT,MINTE1
  98. NBSH = MINTE1.SHPTOT(/2)
  99. ENDIF
  100. C =====
  101. C Initialisation des segments de travail
  102. C =====
  103. IF (IFOMOD.EQ.1) THEN
  104. NDIM = 3
  105. ELSE
  106. NDIM = IDIM
  107. ENDIF
  108. NV1 = NVAMAT
  109. SEGINI,MMAT1
  110. IF (IMATE.EQ.2 .OR. IMATE.EQ.3) THEN
  111. SEGINI,MAXE
  112. ENDIF
  113.  
  114. C 2 - BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IPMAIL
  115. C ============================================================
  116. DO iElt = 1, NBELEM
  117. C =====
  118. C 2.1 - Mise a zero de la matrice de CONDUCTIVITE de l'element iElt
  119. C =====
  120. CALL ZERO(CEL,NBNN,NBNN)
  121. C =====
  122. C 2.2 - Recuperation des coordonnees GLOBALES des noeuds de l'element
  123. C =====
  124. CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE)
  125. C =====
  126. C 2.3 - Calculs des axes locaux d'orthotropie ou d'anisotropie
  127. C =====
  128. IF (IMATE.EQ.2 .OR. IMATE.EQ.3) THEN
  129. CALL RLOCAL(XE,MINTE1.SHPTOT,NBSH,NBNN,TXR)
  130. IF (nbsh.EQ.-1) THEN
  131. CALL ERREUR(525)
  132. GOTO 9990
  133. ENDIF
  134. ENDIF
  135. C =====
  136. C 2.4 - Boucle sur les points de Gauss de l'element iElt
  137. C =====
  138. iFois=0
  139. DO iGau = 1, NBPGAU
  140. C =======
  141. C 2.4.1 - Calcul du jacobien, des fonctions de forme et de leurs
  142. C derivees (matrice gradient) au point de Gauss iGau
  143. C =======
  144. CALL TCOND5(iGau,NBNN,NDIM,XE,SHPTOT,SHP,GRAD,DJAC)
  145. IF (IERR.NE.0) GOTO 9990
  146. IF (DJAC.LT.XZERO) iFois=iFois+1
  147. DJAC=ABS(DJAC)
  148. C =======
  149. C 2.4.2 - Erreur si le jacobien est nul en ce point de Gauss
  150. C =======
  151. IF (DJAC.LT.XPETIT) THEN
  152. INTERR(1) = iElt
  153. CALL ERREUR(259)
  154. GOTO 9990
  155. ENDIF
  156. C =======
  157. C 2.4.3 - Recuperation de la ou des valeurs de conductibilite au point
  158. C de Gauss iGau (tableau VALMAT)
  159. C =======
  160. DJAC=DJAC*POIGAU(iGau)
  161. DO i = 1, NVAMAT
  162. IF (IVAL(i).NE.0) THEN
  163. MELVAL=IVAL(i)
  164. IBMN = MIN(iElt,VELCHE(/2))
  165. IGMN = MIN(iGau,VELCHE(/1))
  166. VALMAT(i) = VELCHE(IGMN,IBMN)
  167. ELSE
  168. VALMAT(i) = XZERO
  169. ENDIF
  170. ENDDO
  171. C =======
  172. C 2.4.4 - Cas d'un materiau ISOTROPE de conductibilite K
  173. C Calcul de la contribution du point de Gauss a la matrice
  174. C CONDUCTIVITE elementaire de cet element fini
  175. C Ajout du terme XK*transposee(GRAD)*GRAD
  176. C Seul cas valide en dimension 1
  177. C =======
  178. IF (IMATE.EQ.1) THEN
  179. XK = VALMAT(1)*DJAC
  180. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL)
  181. C =======
  182. C 2.4.5 - Cas d'un materiau ORTHOTROPE ou ANISOTROPE
  183. C Calcul de la contribution du point de Gauss a la matrice
  184. C CONDUCTIVITE elementaire de cet element fini
  185. C =======
  186. ELSE
  187. C 2.4.5.1 - Calcul de la matrice de conductibilite (CMAT1) dans le
  188. C repere de "tropie" et de la matrice des cosinus directeurs
  189. C (XLOC) des directions de "tropie" dans le repere LOCAL
  190. C Cas des elements MASSIFS 2D
  191. IF (IDIM.EQ.2) THEN
  192. C= Cas d'un materiau ORTHOTROPE
  193. IF (IMATE.EQ.2) THEN
  194. CMAT1(1,1) = VALMAT(1)
  195. CMAT1(2,1) = XZERO
  196. CMAT1(1,2) = XZERO
  197. CMAT1(2,2) = VALMAT(2)
  198. XLOC(1,1) = VALMAT(3)
  199. XLOC(2,1) = VALMAT(4)
  200. XLOC(1,2) = -VALMAT(4)
  201. XLOC(2,2) = VALMAT(3)
  202. ELSE IF (IMATE.EQ.3) THEN
  203. C= Cas d'un materiau ANISOTROPE
  204. CMAT1(1,1) = VALMAT(1)
  205. CMAT1(2,1) = VALMAT(3)
  206. CMAT1(1,2) = VALMAT(3)
  207. CMAT1(2,2) = VALMAT(2)
  208. XLOC(1,1) = VALMAT(4)
  209. XLOC(2,1) = VALMAT(5)
  210. XLOC(1,2) = -VALMAT(5)
  211. XLOC(2,2) = VALMAT(4)
  212. ENDIF
  213. C 2.4.5.2 - Calcul de la matrice de conductibilite (CMAT1) dans le
  214. C repere de "tropie" et de la matrice des cosinus directeurs
  215. C (XLOC) des directions de "tropie" dans le repere LOCAL
  216. C Cas des elements MASSIFS 3D
  217. ELSE
  218. C= Cas d'un materiau ORTHOTROPE
  219. IF (IMATE.EQ.2) THEN
  220. CMAT1(1,1) = VALMAT(1)
  221. CMAT1(2,1) = XZERO
  222. CMAT1(3,1) = XZERO
  223. CMAT1(1,2) = XZERO
  224. CMAT1(2,2) = VALMAT(2)
  225. CMAT1(3,2) = XZERO
  226. CMAT1(1,3) = XZERO
  227. CMAT1(2,3) = XZERO
  228. CMAT1(3,3) = VALMAT(3)
  229. XLOC(1,1) = VALMAT(4)
  230. XLOC(2,1) = VALMAT(5)
  231. XLOC(3,1) = VALMAT(6)
  232. XLOC(1,2) = VALMAT(7)
  233. XLOC(2,2) = VALMAT(8)
  234. XLOC(3,2) = VALMAT(9)
  235. C= Cas d'un materiau ANISOTROPE
  236. ELSE IF (IMATE.EQ.3) THEN
  237. CMAT1(1,1) = VALMAT(1)
  238. CMAT1(2,1) = VALMAT(4)
  239. CMAT1(3,1) = VALMAT(5)
  240. CMAT1(1,2) = VALMAT(4)
  241. CMAT1(2,2) = VALMAT(2)
  242. CMAT1(3,2) = VALMAT(6)
  243. CMAT1(1,3) = VALMAT(5)
  244. CMAT1(2,3) = VALMAT(6)
  245. CMAT1(3,3) = VALMAT(3)
  246. XLOC(1,1) = VALMAT(7)
  247. XLOC(2,1) = VALMAT(8)
  248. XLOC(3,1) = VALMAT(9)
  249. XLOC(1,2) = VALMAT(10)
  250. XLOC(2,2) = VALMAT(11)
  251. XLOC(3,2) = VALMAT(12)
  252. ENDIF
  253. C= Calcul de la troisieme direction de "tropie"
  254. CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IOK)
  255. ENDIF
  256. C 2.4.5.3 - Calcul de la matrice (XGLOB) des cosinus directeurs des
  257. C axes de "tropie" par rapport au repere GLOBAL
  258. C*OF CALL ZERO(XGLOB,IDIM,IDIM)
  259. DO j=1,IDIM
  260. DO k=1,IDIM
  261. Cte = XZERO
  262. DO i=1,IDIM
  263. Cte=Cte+TXR(j,i)*XLOC(i,k)
  264. ENDDO
  265. XGLOB(k,j) = Cte
  266. ENDDO
  267. ENDDO
  268. C 2.4.5.4 - Calcul de la matrice de conductibilite (CMAT) dans le
  269. C repere GLOBAL (traitement particulier du mode 'FOURIER')
  270. CALL ZERO(CMAT,NDIM,NDIM)
  271. IF (IFOMOD.EQ.1) THEN
  272. CALL ZERO(CMAT2,IDIM,IDIM)
  273. CALL PRODT3(CMAT2,CMAT1,XGLOB,IDIM,IDIM)
  274. CMAT(1,1)=CMAT2(1,1)
  275. IF (IMATE.EQ.2) THEN
  276. CMAT(2,2)=VALMAT(5)
  277. ELSE
  278. CMAT(2,2)=VALMAT(6)
  279. ENDIF
  280. CMAT(1,3)=CMAT2(1,2)
  281. CMAT(3,1)=CMAT2(1,2)
  282. CMAT(3,3)=CMAT2(2,2)
  283. ELSE
  284. CALL PRODT3(CMAT,CMAT1,XGLOB,IDIM,IDIM)
  285. ENDIF
  286. C 2.4.5.5 - Contribution a la matrice de CONDUCTIVITE de cet element
  287. C Ajout du terme transposee(GRAD)*CMAT*GRAD
  288. CALL BDBST(GRAD,DJAC,CMAT,NBNN,NDIM,CEL)
  289. ENDIF
  290. ENDDO
  291. C =====
  292. C 2.5 - Erreur si, en un point de Gauss, le jacobien change de signe.
  293. C =====
  294. IF (iFois.NE.0.AND.iFois.NE.NBPGAU) THEN
  295. INTERR(1) = iElt
  296. CALL ERREUR(195)
  297. GOTO 9990
  298. ENDIF
  299. C =====
  300. C 2.6 - Stockage de la matrice de CONDUCTIVITE pour cet element fini
  301. C ===== (remplissage de XMATRI)
  302. CALL REMPMT(CEL,NLIGR,RE(1,1,ielt))
  303. C
  304. ENDDO
  305.  
  306. C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS
  307. C ====================================================
  308. 9990 CONTINUE
  309. SEGSUP,MMAT1
  310. IF (IMATE.EQ.2.OR.IMATE.EQ.3) THEN
  311. SEGDES,MINTE1
  312. SEGSUP,MAXE
  313. ENDIF
  314.  
  315. RETURN
  316. END
  317.  
  318.  
  319.  

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