Télécharger capanu.eso

Retour à la liste

Numérotation des lignes :

capanu
  1. C CAPANU SOURCE OF166741 25/02/21 21:15:24 12166
  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. -INC PPARAM
  40. -INC CCOPTIO
  41. -INC CCREEL
  42.  
  43. -INC SMCHAML
  44. -INC SMCOORD
  45. -INC SMELEME
  46. -INC SMINTE
  47. -INC SMRIGID
  48.  
  49. -INC TMPTVAL
  50.  
  51. SEGMENT MMAT1
  52. REAL*8 CAP(NLIGR,NLIGR),XE(3,NBNN)
  53. REAL*8 SHP(6,NBNN),FORME(NBNN)
  54. REAL*8 VACOMP(NVAMAT)
  55. ENDSEGMENT
  56.  
  57. CHARACTER*16 MOFOR
  58.  
  59. C 1 - INITIALISATIONS ET VERIFICATIONS
  60. C ======================================
  61. MINTE = IPINTE
  62. C* SEGACT,MINTE
  63. NBPGAU = POIGAU(/1)
  64. C =====
  65. MELEME = IPMAIL
  66. C* SEGACT,MELEME
  67. NBNN = NUM(/1)
  68. NBELEM = NUM(/2)
  69. C =====
  70. MPTVAL = IVAMAT
  71. c* SEGACT,MPTVAL
  72. IF (IVAPHA.NE.0) THEN
  73. MPTVAL = IVAPHA
  74. c* SEGACT,MPTVAL
  75. ENDIF
  76. C =====
  77. XMATRI = IPMATR
  78. C* SEGACT,XMATRI*MOD
  79. C =====
  80. SEGINI,MMAT1
  81.  
  82. C 2 - BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IPMAIL
  83. C ============================================================
  84. DO iElt = 1, NBELEM
  85. C =====
  86. C 2.1 - Mise a zero de la matrice de CAPACITE de l'element iElt
  87. C =====
  88. CALL ZERO(CAP,NLIGR,NLIGR)
  89. C =====
  90. C 2.2 - Recuperation des coordonnees GLOBALES des noeuds de l'element
  91. C =====
  92. CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE)
  93. C =====
  94. C 2.3 - Boucle sur les points de Gauss de l'element iElt
  95. C =====
  96. iFois=0
  97. DO iGau = 1, NBPGAU
  98. C =======
  99. C 2.3.1 - Calcul du jacobien, des fonctions de forme et de leurs
  100. C derivees au point de Gauss iGau
  101. C =======
  102. CALL CAPA4(0,iGau,NBNN,XE,SHPTOT,SHP,FORME,DJAC)
  103. C IF (IERR.NE.0) GOTO 9990
  104. IF (DJAC.LT.XZero) iFois=iFois+1
  105. DJAC = ABS(DJAC)
  106. C =======
  107. C 2.3.2 - Erreur si le jacobien est nul en ce point de Gauss
  108. C =======
  109. IF (DJAC.LT.XPetit) THEN
  110. INTERR(1) = iElt
  111. CALL ERREUR(259)
  112. GOTO 9990
  113. ENDIF
  114. C =======
  115. C 2.3.3 - Calcul du terme Rho.Cp.Vol en ce point de Gauss avec prise
  116. C en compte d'un eventuel changement de phase et de la section
  117. C dans le cas d'un element BARRe (erreur si celle-ci est nulle)
  118. C =======
  119.  
  120. C MPTVAL = IVAMAT
  121. DO i = 1, NVAMAT
  122. MELVAL = IVAL(i)
  123. IGMN = MIN(iGau,VELCHE(/1))
  124. IEMN = MIN(iElt,VELCHE(/2))
  125. VACOMP(i) = VELCHE(IGMN,IEMN)
  126. ENDDO
  127. VALRHO = VACOMP(1)
  128.  
  129. C CAS THERMIQUE on fait RHO.CP
  130. IF (INFOR .EQ. 1) VACOMP(1) = VALRHO * VACOMP(2)
  131.  
  132. CAPA = DJAC * POIGAU(iGau) * VACOMP(1)
  133. C =======
  134. C 2.3.4 - Calcul de la contribution du point de Gauss a la matrice
  135. C CAPACITE elementaire pour cet element fini
  136. C =======
  137. CALL NTNST(FORME,CAPA,NLIGR,1,CAP)
  138. ENDDO
  139. C =====
  140. C 2.4 - Erreur si, en un point de Gauss, le jacobien change de signe
  141. C =====
  142. IF (iFois.NE.0.AND.iFois.NE.NBPGAU) THEN
  143. INTERR(1) = iElt
  144. CALL ERREUR(195)
  145. GOTO 9990
  146. ENDIF
  147. C =====
  148. C 2.5 - Stockage de la matrice de CAPACITE pour cet element fini
  149. C (remplissage de XMATRI)
  150. C =====
  151. CALL REMPMT(CAP,NLIGR,RE(1,1,iElt))
  152. C
  153. ENDDO
  154.  
  155. C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS
  156. C ====================================================
  157. 9990 CONTINUE
  158. SEGSUP,MMAT1
  159.  
  160. RETURN
  161. END
  162.  
  163.  
  164.  

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