Télécharger capanu.eso

Retour à la liste

Numérotation des lignes :

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

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