Télécharger thnumac2.eso

Retour à la liste

Numérotation des lignes :

thnumac2
  1. C THNUMAC2 SOURCE AM 18/01/16 21:15:53 9700
  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.  
  30. -INC PPARAM
  31. -INC CCOPTIO
  32. -INC CCREEL
  33.  
  34. -INC SMCHAML
  35. -INC SMCOORD
  36. -INC SMELEME
  37. -INC SMINTE
  38. -INC SMRIGID
  39.  
  40. SEGMENT MMAT1
  41. REAL*8 VALMAT(NV1)
  42. REAL*8 CEL1(NBNN,NBNN),CEL2(NBNN,NBNN),CEL3(NBNN,NBNN)
  43. REAL*8 CEL4(NBNN,NBNN),CEL5(NBNN,NBNN),CEL6(NBNN,NBNN)
  44. REAL*8 CEL7(NBNN,NBNN),CEL8(NBNN,NBNN),CEL9(NBNN,NBNN)
  45. REAL*8 XE(3,NBNN)
  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 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 le maillage elementaire
  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.NE.0) THEN
  96. SEGINI,MAXE
  97. ENDIF
  98. C =====
  99. C Matrice de CAPACITE thermohydrique
  100. C =====
  101. XMATRI = ipmatr
  102. c* SEGACT,XMATRI*MOD
  103. c* NLIGRP = 3*NBNN = LRE
  104. c* NLIGRD = 3*NBNN = LRE
  105.  
  106. C BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IPMAIL
  107. C ======================================================
  108. DO iElt=1,NBELEM
  109. C ===
  110. C Mise a zero de la matrice de CAPACITE de l'element iElt
  111. C ===
  112. CALL ZERO(CEL1,NBNN,NBNN)
  113. CALL ZERO(CEL2,NBNN,NBNN)
  114. CALL ZERO(CEL3,NBNN,NBNN)
  115. CALL ZERO(CEL4,NBNN,NBNN)
  116. CALL ZERO(CEL5,NBNN,NBNN)
  117. CALL ZERO(CEL6,NBNN,NBNN)
  118. CALL ZERO(CEL7,NBNN,NBNN)
  119. CALL ZERO(CEL8,NBNN,NBNN)
  120. CALL ZERO(CEL9,NBNN,NBNN)
  121. C ===
  122. C Recuperation des coordonnees GLOBALES des noeuds de l'element
  123. C ===
  124. CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE)
  125. C ===
  126. C Calculs des axes locaux d'orthotropie ou d'anisotropie
  127. C ===
  128. IF (ipint1.NE.0) 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 Boucle sur les points de Gauss de l'element iElt
  137. C ===
  138. iFois=0
  139. DO iGau=1,NbPGau
  140. C - Calcul du jacobien, des fonctions de forme et de leurs
  141. C derivees au point de Gauss iGau
  142. CALL CAPA4(NEF,iGau,NBNN,XE,SHPTOT,SHP,FORME,DJAC)
  143. IF (IERR.NE.0) GOTO 9990
  144. IF (DJAC.LT.XZero) iFois=iFois+1
  145. DJAC=ABS(DJAC)
  146. C - Erreur si le jacobien est nul en ce point de Gauss
  147. IF (DJAC.LT.XPetit) THEN
  148. INTERR(1)=iElt
  149. CALL ERREUR(259)
  150. GOTO 9990
  151. ENDIF
  152. DJAC=DJAC*POIGAU(iGau)
  153. C - Recuperation de la ou des valeurs de conductibilite au point
  154. C de Gauss iGau (tableau VALMAT)
  155. DO i=1,NMATT
  156. IF (IVAL(i).NE.0) THEN
  157. MELVAL=IVAL(i)
  158. IBMN=MIN(iElt,VELCHE(/2))
  159. IGMN=MIN(iGau,VELCHE(/1))
  160. VALMAT(i)=VELCHE(IGMN,IBMN)
  161. ELSE
  162. VALMAT(i)=XZERO
  163. ENDIF
  164. ENDDO
  165. C - Cas d'un materiau ISOTROPE de conductibilite K
  166. C Calcul de la contribution du point de Gauss a la matrice
  167. C CAPACITE elementaire de cet element fini
  168. C Ajout du terme XK*transposee(N)*N
  169. C Seul cas valide en dimension 1
  170. XK=VALMAT(10)*DJAC
  171. CALL NTNST(FORME,XK,NBNN,1,CEL1)
  172. XK=VALMAT(11)*DJAC
  173. CALL NTNST(FORME,XK,NBNN,1,CEL2)
  174. XK=VALMAT(12)*DJAC
  175. CALL NTNST(FORME,XK,NBNN,1,CEL3)
  176. XK=VALMAT(13)*DJAC
  177. CALL NTNST(FORME,XK,NBNN,1,CEL4)
  178. XK=VALMAT(14)*DJAC
  179. CALL NTNST(FORME,XK,NBNN,1,CEL5)
  180. XK=VALMAT(15)*DJAC
  181. CALL NTNST(FORME,XK,NBNN,1,CEL6)
  182. XK=VALMAT(16)*DJAC
  183. CALL NTNST(FORME,XK,NBNN,1,CEL7)
  184. XK=VALMAT(17)*DJAC
  185. CALL NTNST(FORME,XK,NBNN,1,CEL8)
  186. XK=VALMAT(18)*DJAC
  187. CALL NTNST(FORME,XK,NBNN,1,CEL9)
  188.  
  189. ENDDO
  190. C =====
  191. C Erreur si, en un point de Gauss, le jacobien change de signe
  192. C =====
  193. IF (iFois.NE.0.AND.iFois.NE.NbPGau) THEN
  194. INTERR(1)=iElt
  195. CALL ERREUR(195)
  196. GOTO 9990
  197. ENDIF
  198. C =====
  199. C Stockage de la matrice de CAPACITE pour cet element fini
  200. C ===== (remplissage de XMATRI)
  201. CALL REMPMCH
  202. & (CEL1,CEL2,CEL3,CEL4,CEL5,CEL6,CEL7,CEL8,CEL9,NBNN,RE(1,1,ielt))
  203.  
  204. ENDDO
  205.  
  206. C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS
  207. C ====================================================
  208. 9990 CONTINUE
  209. SEGSUP,MMAT1
  210. IF (ipint1.GT.0) THEN
  211. SEGSUP,MAXE
  212. ENDIF
  213.  
  214. RETURN
  215. END
  216.  
  217.  
  218.  
  219.  
  220.  

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