Télécharger capanu.eso

Retour à la liste

Numérotation des lignes :

capanu
  1. C CAPANU SOURCE CB215821 18/09/13 21:15:07 9917
  2.  
  3. C=======================================================================
  4. C= C A P A N U =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul de la matrice de CAPACITE CALORIFIQUE pour EF MASSIF =
  10. C= =
  11. C= Parametres : (E)=Entree (S)=Sortie =
  12. C= ------------ =
  13. C= NEF (E) Numero de l'ELEMENT FINI dans NOMTP (cf. CCHAMP) =
  14. C= IPMAIL (E) Numero du segment MELEME dans le segment MMODEL =
  15. C= IPMODL (E) Pointeur sur un segment IMODEL (ACTIF) =
  16. C= IPCHA1 (E) Pointeur sur un segment MCHELM de CARACTERISTIQUES =
  17. C= IPRIGI (E/S) Pointeur sur l'objet RIGIDITE (CAPACITE) (ACTIF) =
  18. C= =
  19. C= Variables locales : =
  20. C= ------------------- =
  21. C= NBNN Nombre de NOEUDS dans l'element considere =
  22. C= NbElem Nombre d'ELEMENTS dans le maillage elementaire =
  23. C= NBPGAU Nombre de points de Gauss de l'element fini =
  24. C= CAP(NBNN,NBNN) Matrice de CAPACITE ELEMENTAIRE =
  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= VACOMP Valeurs des composantes recherchees =
  29. C= =
  30. C= Denis ROBERT, le 15 fevrier 1988. =
  31. C=======================================================================
  32.  
  33. SUBROUTINE CAPANU (NEF,IPMAIL,IPINTE,IVAMAT,NVAMAT,IVAPHA,NVAPHA,
  34. & IPMATR,NLIGR,INFOR)
  35.  
  36. IMPLICIT INTEGER(I-N)
  37. IMPLICIT REAL*8 (A-H,O-Z)
  38.  
  39.  
  40. -INC PPARAM
  41. -INC CCOPTIO
  42. -INC CCREEL
  43.  
  44. -INC SMCHAML
  45. -INC SMCOORD
  46. -INC SMELEME
  47. -INC SMINTE
  48. -INC SMRIGID
  49.  
  50. CHARACTER*16 MOFOR
  51.  
  52. SEGMENT MPTVAL
  53. INTEGER IPOS(NS),NSOF(NS),IVAL(NCOSOU)
  54. CHARACTER*16 TYVAL(NCOSOU)
  55. ENDSEGMENT
  56.  
  57. SEGMENT MMAT1
  58. REAL*8 CAP(NLIGR,NLIGR),XE(3,NBNN)
  59. REAL*8 SHP(6,NBNN),FORME(NBNN)
  60. ENDSEGMENT
  61.  
  62. SEGMENT SVACOM
  63. REAL*8 VACOMP(NVAMAT)
  64. ENDSEGMENT
  65.  
  66. SEGINI,SVACOM
  67.  
  68. C 1 - INITIALISATIONS ET VERIFICATIONS
  69. C ======================================
  70. MINTE = IPINTE
  71. C* SEGACT,MINTE
  72. NBPGAU = POIGAU(/1)
  73. C =====
  74. MELEME = IPMAIL
  75. C* SEGACT,MELEME
  76. NBNN = NUM(/1)
  77. NBELEM = NUM(/2)
  78. C =====
  79. MPTVAL = IVAMAT
  80. c* SEGACT,MPTVAL
  81. IF (IVAPHA.NE.0) THEN
  82. MPTVAL = IVAPHA
  83. c* SEGACT,MPTVAL
  84. ENDIF
  85. C =====
  86. XMATRI = IPMATR
  87. C* SEGACT,XMATRI*MOD
  88. C =====
  89. SEGINI,MMAT1
  90.  
  91. C 2 - BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IPMAIL
  92. C ============================================================
  93. DO iElt = 1, NBELEM
  94. C =====
  95. C 2.1 - Mise a zero de la matrice de CAPACITE de l'element iElt
  96. C =====
  97. CALL ZERO(CAP,NLIGR,NLIGR)
  98. C =====
  99. C 2.2 - Recuperation des coordonnees GLOBALES des noeuds de l'element
  100. C =====
  101. CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE)
  102. C =====
  103. C 2.3 - Boucle sur les points de Gauss de l'element iElt
  104. C =====
  105. iFois=0
  106. DO iGau = 1, NBPGAU
  107. C =======
  108. C 2.3.1 - Calcul du jacobien, des fonctions de forme et de leurs
  109. C derivees au point de Gauss iGau
  110. C =======
  111. CALL CAPA4(0,iGau,NBNN,XE,SHPTOT,SHP,FORME,DJAC)
  112. C IF (IERR.NE.0) GOTO 9990
  113. IF (DJAC.LT.XZero) iFois=iFois+1
  114. DJAC = ABS(DJAC)
  115. C =======
  116. C 2.3.2 - Erreur si le jacobien est nul en ce point de Gauss
  117. C =======
  118. IF (DJAC.LT.XPetit) THEN
  119. INTERR(1) = iElt
  120. CALL ERREUR(259)
  121. GOTO 9990
  122. ENDIF
  123. C =======
  124. C 2.3.3 - Calcul du terme Rho.Cp.Vol en ce point de Gauss avec prise
  125. C en compte d'un eventuel changement de phase et de la section
  126. C dans le cas d'un element BARRe (erreur si celle-ci est nulle)
  127. C =======
  128.  
  129. C MPTVAL = IVAMAT
  130. DO i = 1, NVAMAT
  131. MELVAL = IVAL(i)
  132. IGMN = MIN(iGau,VELCHE(/1))
  133. IEMN = MIN(iElt,VELCHE(/2))
  134. VACOMP(i) = VELCHE(IGMN,IEMN)
  135. ENDDO
  136. VALRHO = VACOMP(1)
  137.  
  138. C CAS THERMIQUE on fait RHO.CP
  139. IF (INFOR .EQ. 1) VACOMP(1) = VALRHO * VACOMP(2)
  140.  
  141. CAPA = DJAC * POIGAU(iGau) * VACOMP(1)
  142. C =======
  143. C 2.3.4 - Calcul de la contribution du point de Gauss a la matrice
  144. C CAPACITE elementaire pour cet element fini
  145. C =======
  146. CALL NTNST(FORME,CAPA,NLIGR,1,CAP)
  147. ENDDO
  148. C =====
  149. C 2.4 - Erreur si, en un point de Gauss, le jacobien change de signe
  150. C =====
  151. IF (iFois.NE.0.AND.iFois.NE.NBPGAU) THEN
  152. INTERR(1) = iElt
  153. CALL ERREUR(195)
  154. GOTO 9990
  155. ENDIF
  156. C =====
  157. C 2.5 - Stockage de la matrice de CAPACITE pour cet element fini
  158. C (remplissage de XMATRI)
  159. C =====
  160. CALL REMPMT(CAP,NLIGR,RE(1,1,iElt))
  161. C
  162. ENDDO
  163.  
  164. C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS
  165. C ====================================================
  166. 9990 CONTINUE
  167. SEGSUP,MMAT1,SVACOM
  168.  
  169. RETURN
  170. END
  171.  
  172.  
  173.  
  174.  
  175.  

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