Télécharger thnumac.eso

Retour à la liste

Numérotation des lignes :

thnumac
  1. C THNUMAC SOURCE OF166741 25/02/21 21:18:57 12166
  2.  
  3. C=======================================================================
  4. C= T H N U M A C =
  5. C= ----------- =
  6. C= (TNUMAC dans le cas de la thermique) =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul de la matrice de CONDUCTIVITE THERMOHYDRIQUE pour les =
  10. C= 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= IPCHEM (E) Pointeur sur un segment MCHELM de CARACTERISTIQUES =
  17. C= IPRIGI (E/S) Pointeur sur l'objet RIGIDITE (CONDUCTIVITE) =
  18. C= =
  19. C= Zakaria HABIBI le 30 juin 2008. =
  20. C=======================================================================
  21.  
  22. SUBROUTINE THNUMAC (NEF,ipmail,ipinte,ipint1,IVAMAT,NMATT,
  23. & ipmatr,LRE)
  24.  
  25. IMPLICIT INTEGER(I-N)
  26. IMPLICIT REAL*8 (A-H,O-Z)
  27.  
  28.  
  29. -INC PPARAM
  30. -INC CCOPTIO
  31. -INC CCREEL
  32.  
  33. -INC SMCHAML
  34. -INC SMCOORD
  35. -INC SMELEME
  36. -INC SMINTE
  37. -INC SMRIGID
  38.  
  39. -INC TMPTVAL
  40.  
  41. SEGMENT MMAT1
  42. REAL*8 VALMAT(NV1)
  43. REAL*8 CEL1(NBNN,NBNN),CEL2(NBNN,NBNN),CEL3(NBNN,NBNN)
  44. REAL*8 CEL4(NBNN,NBNN),CEL5(NBNN,NBNN),CEL6(NBNN,NBNN)
  45. REAL*8 CEL7(NBNN,NBNN),CEL8(NBNN,NBNN),CEL9(NBNN,NBNN)
  46. REAL*8 CE10(NBNN,NBNN),CE11(NBNN,NBNN),CE12(NBNN,NBNN)
  47. REAL*8 XE(3,NBNN),GDT1(IDIM),GDT2(IDIM),GDT3(IDIM)
  48. REAL*8 SHP(6,NBNN),GRAD(NDIM,NBNN),FORME(NBNN)
  49. REAL*8 CMAT(NDIM,NDIM),CMAT1(IDIM,IDIM),CMAT2(IDIM,IDIM)
  50. ENDSEGMENT
  51.  
  52. SEGMENT MAXE
  53. REAL*8 TXR(IDIM,IDIM),XLOC(3,3),XGLOB(3,3)
  54. ENDSEGMENT
  55.  
  56. C 1 - INITIALISATIONS ET VERIFICATIONS
  57. C ======================================
  58. C Recuperation d'informations sur le maillage elementaire
  59. C =====
  60. MELEME = ipmail
  61. c* SEGACT,MELEME
  62. NBNN = NUM(/1)
  63. NBELEM = NUM(/2)
  64. C =====
  65. C Recuperation d'informations sur l'element fini
  66. C =====
  67. MINTE = IPINTE
  68. c* SEGACT,MINTE
  69. NBPGAU = POIGAU(/1)
  70. C =====
  71. C Recuperation des fonctions de forme et de leurs derivees au
  72. C centre de gravite de l'element pour le calcul des axes locaux
  73. C d'orthotropie ou d'anisotropie
  74. C =====
  75. IF (ipint1.NE.0) THEN
  76. MINTE1 = IPINT1
  77. c* SEGACT,MINTE1
  78. NBSH = MINTE1.SHPTOT(/2)
  79. ENDIF
  80. C =====
  81. C Initialisation des segments de travail
  82. C =====
  83. MPTVAL = IVAMAT
  84. IF (IFOMOD.EQ.1) THEN
  85. NDIM=3
  86. ELSE
  87. NDIM=IDIM
  88. ENDIF
  89. NV1 = NMATT
  90. SEGINI,MMAT1
  91. MAXE = 0
  92. IF (ipint1.GT.0) THEN
  93. SEGINI,MAXE
  94. ENDIF
  95.  
  96. C =====
  97. C Matrice CONDUCTIVITE GLOBALE a calculer
  98. C =====
  99. XMATRI = ipmatr
  100. C* SEGACT,xMATRI*MOD
  101. NLIGRP = LRE
  102. NLIGRD = LRE
  103.  
  104. C 2 - BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IMAIL/IMAMOD
  105. C ==================================================================
  106. DO iElt = 1, NBELEM
  107. C ===
  108. C - Mise a zero de la matrice de CONDUCTIVITE de l'element iElt
  109. C ===
  110. CALL ZERO(CEL1,NBNN,NBNN)
  111. CALL ZERO(CEL2,NBNN,NBNN)
  112. CALL ZERO(CEL3,NBNN,NBNN)
  113. CALL ZERO(CEL4,NBNN,NBNN)
  114. CALL ZERO(CEL5,NBNN,NBNN)
  115. CALL ZERO(CEL6,NBNN,NBNN)
  116. CALL ZERO(CEL7,NBNN,NBNN)
  117. CALL ZERO(CEL8,NBNN,NBNN)
  118. CALL ZERO(CEL9,NBNN,NBNN)
  119. CALL ZERO(CE10,NBNN,NBNN)
  120. CALL ZERO(CE11,NBNN,NBNN)
  121. CALL ZERO(CE12,NBNN,NBNN)
  122. C ===
  123. C - Recuperation des coordonnees GLOBALES des noeuds de l'element
  124. C ===
  125. CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE)
  126. C ===
  127. C - Calculs des axes locaux d'orthotropie ou d'anisotropie
  128. C ===
  129. IF (ipint1.NE.0) THEN
  130. CALL RLOCAL(XE,MINTE1.SHPTOT,NBSH,NBNN,TXR)
  131. IF (nbsh.EQ.-1) THEN
  132. CALL ERREUR(525)
  133. GOTO 9990
  134. ENDIF
  135. ENDIF
  136. C ===
  137. C - Boucle sur les points de Gauss de l'element iElt
  138. C ===
  139. iFois=0
  140. DO iGau = 1, NbPGau
  141. C =======
  142. C 2.4.1 - Calcul du jacobien, des fonctions de forme et de leurs
  143. C derivees au point de Gauss iGau
  144. C =======
  145. CALL TCOND5(iGau,NBNN,NDIM,XE,SHPTOT,SHP,GRAD,DJAC)
  146. IF (IERR.NE.0) GOTO 9990
  147. IF (DJAC.LT.XZERO) iFois=iFois+1
  148. DJAC=ABS(DJAC)
  149. C =======
  150. C 2.4.2 - Erreur si le jacobien est nul en ce point de Gauss
  151. C =======
  152. IF (DJAC.LT.XPetit) THEN
  153. INTERR(1)=iElt
  154. CALL ERREUR(259)
  155. GOTO 9990
  156. ENDIF
  157.  
  158. C* VALEURS DES COMPOSANTES DES GRADIENTS POUR G
  159. C MELVAL=IVAL(19)
  160. C IBMN=MIN(iElt,VELCHE(/2))
  161. C IGMN=MIN(iGau,VELCHE(/1))
  162. C GDT1(1)=VELCHE(IGMN,IBMN)
  163. C MELVAL=IVAL(20)
  164. C IBMN=MIN(iElt,VELCHE(/2))
  165. C IGMN=MIN(iGau,VELCHE(/1))
  166. C GDT1(2)=VELCHE(IGMN,IBMN)
  167. C* VALEURS DES COMPOSANTES DES GRADIENTS POUR C
  168. C MELVAL=IVAL(19)
  169. C IBMN=MIN(iElt,VELCHE(/2))
  170. C IGMN=MIN(iGau,VELCHE(/1))
  171. C GDT2(1)=VELCHE(IGMN,IBMN)
  172. C MELVAL=IVAL(20)
  173. C IBMN=MIN(iElt,VELCHE(/2))
  174. C IGMN=MIN(iGau,VELCHE(/1))
  175. C GDT2(2)=VELCHE(IGMN,IBMN)
  176. C* VALEURS DES COMPOSANTES DES GRADIENTS POUR T
  177. C MELVAL=IVAL(19)
  178. C IBMN=MIN(iElt,VELCHE(/2))
  179. C IGMN=MIN(iGau,VELCHE(/1))
  180. C GDT3(1)=VELCHE(IGMN,IBMN)
  181. C MELVAL=IVAL(20)
  182. C IBMN=MIN(iElt,VELCHE(/2))
  183. C IGMN=MIN(iGau,VELCHE(/1))
  184. C GDT3(2)=VELCHE(IGMN,IBMN)
  185.  
  186. C =======
  187. C 2.4.3 - Recuperation de la ou des valeurs de conductibilite au point
  188. C de Gauss iGau (tableau VALMAT)
  189. C =======
  190. DJAC=DJAC*POIGAU(iGau)
  191. DO i = 1, NMATT
  192. IF (IVAL(i).NE.0) THEN
  193. MELVAL=IVAL(i)
  194. IBMN=MIN(iElt,VELCHE(/2))
  195. IGMN=MIN(iGau,VELCHE(/1))
  196. VALMAT(i)=VELCHE(IGMN,IBMN)
  197. ELSE
  198. VALMAT(i)=XZERO
  199. ENDIF
  200. ENDDO
  201. C =======
  202. C 2.4.4 - Cas d'un materiau ISOTROPE de conductibilite K
  203. C Calcul de la contribution du point de Gauss a la matrice
  204. C CONDUCTIVITE elementaire de cet element fini
  205. C Ajout du terme XK*transposee(GRAD)*GRAD
  206. C Seul cas valide en dimension 1
  207. C =======
  208. XK=VALMAT(1)*DJAC
  209. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL1)
  210. XK=VALMAT(2)*DJAC
  211. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL2)
  212. XK=VALMAT(3)*DJAC
  213. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL3)
  214. XK=VALMAT(4)*DJAC
  215. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL4)
  216. XK=VALMAT(5)*DJAC
  217. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL5)
  218. XK=VALMAT(6)*DJAC
  219. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL6)
  220. XK=VALMAT(7)*DJAC
  221. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL7)
  222. XK=VALMAT(8)*DJAC
  223. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL8)
  224. XK=VALMAT(9)*DJAC
  225. CALL NTNST(GRAD,XK,NBNN,NDIM,CEL9)
  226.  
  227. CC Calcul des termes en GRAD(PG,PC,T)
  228. C RK =DJAC
  229. C DO 700 K=1,IDIM
  230. C XK1 = GDT1(K)*RK
  231. C DO 300 I=1,NBNN
  232. C DO 400 J=1,NBNN
  233. C CE10(J,I) = CE10(J,I) + SHP(1,I)*GRAD(K,J)*XK1
  234. C 400 CONTINUE
  235. C 300 CONTINUE
  236. C 700 CONTINUE
  237. C
  238. C DO 701 K=1,IDIM
  239. C XK2 = GDT2(K)*RK
  240. C DO 301 I=1,NBNN
  241. C DO 401 J=1,NBNN
  242. C CE11(J,I) = CE11(J,I) + SHP(1,I)*GRAD(K,J)*XK2
  243. C 401 CONTINUE
  244. C 301 CONTINUE
  245. C 701 CONTINUE
  246. C
  247. C
  248. C DO 702 K=1,IDIM
  249. C XK3 = GDT3(K)*RK
  250. C DO 302 I=1,NBNN
  251. C DO 402 J=1,NBNN
  252. C CE12(J,I) = CE12(J,I) + SHP(1,I)*GRAD(K,J)*XK3
  253. C 402 CONTINUE
  254. C 302 CONTINUE
  255. C 702 CONTINUE
  256. ENDDO
  257.  
  258. C =====
  259. C 2.5 - Erreur si, en un point de Gauss, le jacobien change de signe.
  260. C =====
  261. IF (iFois.NE.0.AND.iFois.NE.NbPGau) THEN
  262. INTERR(1)=iElt
  263. CALL ERREUR(195)
  264. GOTO 9990
  265. ENDIF
  266. C =====
  267. C 2.6 - Stockage de la matrice de CONDUCTIVITE pour cet element fini
  268. C ===== (remplissage de XMATRI)
  269. C Note : CE10,CE11,CE12 servaient a calculer les termes en Grad(PG,PC,T)
  270. C du couplage. Desormais laisses a 0. en attendant de voir com-
  271. C -ment traiter le couplage (champ (PG,PC,T) en entree de COND ?)
  272. CALL REMPTH
  273. & (CEL1,CEL2,CEL3,CEL4,CEL5,CEL6,
  274. & CEL7,CEL8,CEL9,CE10,CE11,CE12,NBNN,RE(1,1,ielt))
  275.  
  276. ENDDO
  277.  
  278. C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS
  279. C ====================================================
  280. 9990 CONTINUE
  281. SEGSUP,MMAT1
  282. IF (IPINT1.GT.0) THEN
  283. SEGSUP,MAXE
  284. ENDIF
  285.  
  286. RETURN
  287. END
  288.  
  289.  
  290.  

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