Télécharger thnumac.eso

Retour à la liste

Numérotation des lignes :

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

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