Télécharger tnumac.eso

Retour à la liste

Numérotation des lignes :

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

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