Télécharger thnumac2.eso

Retour à la liste

Numérotation des lignes :

thnumac2
  1. C THNUMAC2 SOURCE OF166741 25/02/21 21:18:56 12166
  2.  
  3. C=======================================================================
  4. C= T H N U M A C 2 =
  5. C= --------------- =
  6. C= (TNUMAC dans le cas de la thermique) =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul de la matrice de CAPACITE thermohydrique pour les elements =
  10. C= 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= Zakaria HABIBI le 30 juin 2008. =
  21. C=======================================================================
  22.  
  23. SUBROUTINE THNUMAC2 (NEF,ipmail,ipinte,ipint1,IVAMAT,NMATT,
  24. & ipmatr,LRE)
  25.  
  26. IMPLICIT INTEGER(I-N)
  27. IMPLICIT REAL*8 (A-H,O-Z)
  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 XE(3,NBNN)
  47. REAL*8 SHP(6,NBNN),GRAD(NDIM,NBNN),FORME(NBNN)
  48. REAL*8 CMAT(NDIM,NDIM),CMAT1(IDIM,IDIM),CMAT2(IDIM,IDIM)
  49. ENDSEGMENT
  50.  
  51. SEGMENT MAXE
  52. REAL*8 TXR(IDIM,IDIM),XLOC(3,3),XGLOB(3,3)
  53. ENDSEGMENT
  54.  
  55. C INITIALISATIONS ET VERIFICATIONS
  56. C ================================
  57. C Recuperation d'informations sur le maillage elementaire
  58. C =====
  59. MELEME = IPMAIL
  60. c* SEGACT,MELEME
  61. NBNN = NUM(/1)
  62. NBELEM = NUM(/2)
  63. C =====
  64. C Recuperation d'informations sur le maillage elementaire
  65. C =====
  66. MINTE = ipinte
  67. c* SEGACT,MINTE
  68. NBPGAU = POIGAU(/1)
  69. C =====
  70. C Recuperation des fonctions de forme et de leurs derivees au
  71. C centre de gravite de l'element pour le calcul des axes locaux
  72. C d'orthotropie ou d'anisotropie
  73. C =====
  74. IF (ipint1.NE.0) THEN
  75. MINTE1 = ipint1
  76. c* SEGACT,MINTE1
  77. NBSH = MINTE1.SHPTOT(/2)
  78. ENDIF
  79. C =====
  80. C Initialisation des segments de travail
  81. C =====
  82. MPTVAL = IVAMAT
  83. IF (IFOMOD.EQ.1) THEN
  84. NDIM=3
  85. ELSE
  86. NDIM=IDIM
  87. ENDIF
  88. NV1 = NMATT
  89. SEGINI,MMAT1
  90. MAXE = 0
  91. IF (ipint1.NE.0) THEN
  92. SEGINI,MAXE
  93. ENDIF
  94. C =====
  95. C Matrice de CAPACITE thermohydrique
  96. C =====
  97. XMATRI = ipmatr
  98. c* SEGACT,XMATRI*MOD
  99. c* NLIGRP = 3*NBNN = LRE
  100. c* NLIGRD = 3*NBNN = LRE
  101.  
  102. C BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IPMAIL
  103. C ======================================================
  104. DO iElt=1,NBELEM
  105. C ===
  106. C Mise a zero de la matrice de CAPACITE de l'element iElt
  107. C ===
  108. CALL ZERO(CEL1,NBNN,NBNN)
  109. CALL ZERO(CEL2,NBNN,NBNN)
  110. CALL ZERO(CEL3,NBNN,NBNN)
  111. CALL ZERO(CEL4,NBNN,NBNN)
  112. CALL ZERO(CEL5,NBNN,NBNN)
  113. CALL ZERO(CEL6,NBNN,NBNN)
  114. CALL ZERO(CEL7,NBNN,NBNN)
  115. CALL ZERO(CEL8,NBNN,NBNN)
  116. CALL ZERO(CEL9,NBNN,NBNN)
  117. C ===
  118. C Recuperation des coordonnees GLOBALES des noeuds de l'element
  119. C ===
  120. CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE)
  121. C ===
  122. C Calculs des axes locaux d'orthotropie ou d'anisotropie
  123. C ===
  124. IF (ipint1.NE.0) THEN
  125. CALL RLOCAL(XE,MINTE1.SHPTOT,NBSH,NBNN,TXR)
  126. IF (NBSH.EQ.-1) THEN
  127. CALL ERREUR(525)
  128. GOTO 9990
  129. ENDIF
  130. ENDIF
  131. C ===
  132. C Boucle sur les points de Gauss de l'element iElt
  133. C ===
  134. iFois=0
  135. DO iGau=1,NbPGau
  136. C - Calcul du jacobien, des fonctions de forme et de leurs
  137. C derivees au point de Gauss iGau
  138. CALL CAPA4(NEF,iGau,NBNN,XE,SHPTOT,SHP,FORME,DJAC)
  139. IF (IERR.NE.0) GOTO 9990
  140. IF (DJAC.LT.XZero) iFois=iFois+1
  141. DJAC=ABS(DJAC)
  142. C - Erreur si le jacobien est nul en ce point de Gauss
  143. IF (DJAC.LT.XPetit) THEN
  144. INTERR(1)=iElt
  145. CALL ERREUR(259)
  146. GOTO 9990
  147. ENDIF
  148. DJAC=DJAC*POIGAU(iGau)
  149. C - Recuperation de la ou des valeurs de conductibilite au point
  150. C de Gauss iGau (tableau VALMAT)
  151. DO i=1,NMATT
  152. IF (IVAL(i).NE.0) THEN
  153. MELVAL=IVAL(i)
  154. IBMN=MIN(iElt,VELCHE(/2))
  155. IGMN=MIN(iGau,VELCHE(/1))
  156. VALMAT(i)=VELCHE(IGMN,IBMN)
  157. ELSE
  158. VALMAT(i)=XZERO
  159. ENDIF
  160. ENDDO
  161. C - Cas d'un materiau ISOTROPE de conductibilite K
  162. C Calcul de la contribution du point de Gauss a la matrice
  163. C CAPACITE elementaire de cet element fini
  164. C Ajout du terme XK*transposee(N)*N
  165. C Seul cas valide en dimension 1
  166. XK=VALMAT(10)*DJAC
  167. CALL NTNST(FORME,XK,NBNN,1,CEL1)
  168. XK=VALMAT(11)*DJAC
  169. CALL NTNST(FORME,XK,NBNN,1,CEL2)
  170. XK=VALMAT(12)*DJAC
  171. CALL NTNST(FORME,XK,NBNN,1,CEL3)
  172. XK=VALMAT(13)*DJAC
  173. CALL NTNST(FORME,XK,NBNN,1,CEL4)
  174. XK=VALMAT(14)*DJAC
  175. CALL NTNST(FORME,XK,NBNN,1,CEL5)
  176. XK=VALMAT(15)*DJAC
  177. CALL NTNST(FORME,XK,NBNN,1,CEL6)
  178. XK=VALMAT(16)*DJAC
  179. CALL NTNST(FORME,XK,NBNN,1,CEL7)
  180. XK=VALMAT(17)*DJAC
  181. CALL NTNST(FORME,XK,NBNN,1,CEL8)
  182. XK=VALMAT(18)*DJAC
  183. CALL NTNST(FORME,XK,NBNN,1,CEL9)
  184.  
  185. ENDDO
  186. C =====
  187. C Erreur si, en un point de Gauss, le jacobien change de signe
  188. C =====
  189. IF (iFois.NE.0.AND.iFois.NE.NbPGau) THEN
  190. INTERR(1)=iElt
  191. CALL ERREUR(195)
  192. GOTO 9990
  193. ENDIF
  194. C =====
  195. C Stockage de la matrice de CAPACITE pour cet element fini
  196. C ===== (remplissage de XMATRI)
  197. CALL REMPMCH
  198. & (CEL1,CEL2,CEL3,CEL4,CEL5,CEL6,CEL7,CEL8,CEL9,NBNN,RE(1,1,ielt))
  199.  
  200. ENDDO
  201.  
  202. C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS
  203. C ====================================================
  204. 9990 CONTINUE
  205. SEGSUP,MMAT1
  206. IF (ipint1.GT.0) THEN
  207. SEGSUP,MAXE
  208. ENDIF
  209.  
  210. RETURN
  211. END
  212.  
  213.  
  214.  

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