Télécharger capaba.eso

Retour à la liste

Numérotation des lignes :

capaba
  1. C CAPABA SOURCE OF166741 25/02/21 21:15:20 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 d'un element BARRe =
  10. C= =
  11. C= Parametres : (E)=Entree (S)=Sortie =
  12. C= ------------ =
  13. C= IMAIL (E) Numero du segment IMODEL dans le segment MMODEL =
  14. C= IPCHA1 (E) Pointeur sur un segment MCHEL1 de CARACTERISTIQUES =
  15. C= CLAT (E) Chaleur latente du changement de phase =
  16. C= TPHA1 (E) Temperature 1 de changement de phase =
  17. C= TPHA2 (E) Temperature 2 de changement de phase =
  18. C= IPVAL1 (E) CHAMELEM de temperatures au pas N =
  19. C= IPVAL2 (E) CHAMELEM de temperatures au pas N + 1 =
  20. C= IPRIGI (E/S) Pointeur sur l'objet RIGIDITE (CAPACITE) (ACTIF) =
  21. C= =
  22. C= Denis ROBERT, le 15 fevrier 1988. =
  23. C=======================================================================
  24.  
  25. SUBROUTINE CAPABA (NEF,IPMAIL,IPINTE,IVAMAT,NVAMAT,IVAPHA,NVAPHA,
  26. & IPMATR,NLIGR,INFOR)
  27.  
  28. IMPLICIT INTEGER(I-N)
  29. IMPLICIT REAL*8 (A-H,O-Z)
  30.  
  31. -INC PPARAM
  32. -INC CCOPTIO
  33. -INC CCREEL
  34. -INC CCHAMP
  35.  
  36. -INC SMCOORD
  37. -INC SMINTE
  38. -INC SMRIGID
  39. -INC SMELEME
  40. -INC SMCHAML
  41.  
  42. -INC TMPTVAL
  43.  
  44. SEGMENT MMAT1
  45. REAL*8 CAP(NLIGR,NLIGR),XE(3,NBNN)
  46. REAL*8 SHP(6,NBNN),FORME(NBNN)
  47. REAL*8 VACOMP(NVAMAT)
  48. ENDSEGMENT
  49.  
  50. CHARACTER*16 MOFOR
  51. INTEGER INFOR
  52.  
  53. C* IF (NEF.NE.46) CALL ERREUR(5)
  54. IF (IFOMOD.NE.-1 .AND. IFOMOD.NE.2.and.ifomod.ne.0) THEN
  55. CALL ERREUR(251)
  56. RETURN
  57. ENDIF
  58. IFIN = IDIM+1
  59.  
  60. C 1 - INITIALISATIONS ET VERIFICATIONS
  61. C ======================================
  62. MELEME = IPMAIL
  63. c* SEGACT,MELEME
  64. NBNN = NUM(/1)
  65. NBELEM = NUM(/2)
  66. C =====
  67. MINTE = IPINTE
  68. c* SEGACT,MINTE
  69. NBPGAU = POIGAU(/1)
  70. C =====
  71. c* MPTVAL = IVAMAT
  72. c* SEGACT,MPTVAL
  73. c* IF (IVAPHA.NE.0) THEN
  74. c* MPTVAL = IVAPHA
  75. c* SEGACT,MPTVAL
  76. c* ENDIF
  77. C =====
  78. XMATRI = IPMATR
  79. c* SEGACT,XMATRI*MOD
  80. c* NLIGRP = NLIGR
  81. c* NLIGRD = NLIGR
  82. C =====
  83. SEGINI,MMAT1
  84.  
  85. C 2 - BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IPMAIL
  86. C ============================================================
  87. DO iElt = 1, NBELEM
  88. C =====
  89. C 2.1 - Mise a zero de la matrice de CAPACITE de l'element iElt
  90. C =====
  91. CALL ZERO(CAP,NLIGR,NLIGR)
  92. C =====
  93. C 2.2 - Recuperation des coordonnees GLOBALES des noeuds de l'element
  94. C =====
  95. CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE)
  96. C =====
  97. C 2.3 - Boucle sur les points de Gauss de l'element iElt
  98. C =====
  99. iFois=0
  100. DO iGau = 1, NBPGAU
  101. C- Calcul du jacobien, des fonctions de forme et de leurs derivees
  102. C- au point de Gauss iGau
  103. DO j = 1, NBNN
  104. FORME(j) = SHPTOT(1,j,iGau)
  105. DO i = 1, IFIN
  106. SHP(i,j) = SHPTOT(i,j,iGau)
  107. ENDDO
  108. ENDDO
  109. CALL TCONV4(XE,SHP,IDIM,NBNN,DJAC)
  110. IF (IERR.NE.0) GOTO 9990
  111. IF (DJAC.LT.XZero) iFois=iFois+1
  112. DJAC = ABS(DJAC)
  113. C- Erreur si le jacobien est nul en ce point de Gauss
  114. IF (DJAC.LT.XPetit) THEN
  115. INTERR(1) = iElt
  116. CALL ERREUR(259)
  117. GOTO 9990
  118. ENDIF
  119.  
  120. C- Calcul du terme Rho.Cp.Vol.Se en ce point de Gauss pour la THERMIQUE
  121. MPTVAL = IVAMAT
  122. DO i = 1, NVAMAT
  123. MELVAL = IVAL(i)
  124. IGMN = MIN(iGau,VELCHE(/1))
  125. IEMN = MIN(iElt,VELCHE(/2))
  126. VACOMP(i) = VELCHE(IGMN,IEMN)
  127. ENDDO
  128. VALRHO = VACOMP(1)
  129.  
  130. C CAS THERMIQUE on fait RHO.CP
  131. IF (INFOR .EQ. 1) VACOMP(1) = VALRHO * VACOMP(2)
  132.  
  133. C- Erreur si la section d'un element BARRe est nulle
  134. SE = VACOMP(NVAMAT)
  135. IF (SE.LE.XPetit) THEN
  136. CALL ERREUR(517)
  137. GOTO 9990
  138. ENDIF
  139. CAPA = SE * DJAC * POIGAU(iGau) * VACOMP(1)
  140. C- Calcul de la contribution du point de Gauss a la matrice CAPACITE
  141. C- elementaire pour cet element fini
  142. CALL NTNST(FORME,CAPA,NBNN,1,CAP)
  143.  
  144. C =======
  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. ENDDO
  160.  
  161. C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS
  162. C ====================================================
  163. 9990 CONTINUE
  164. SEGSUP,MMAT1
  165. c* SEGDES,MELEME,MINTE,XMATRI
  166. c* MPTVAL = IVAMAT
  167. c* SEGDES,MPTVAL
  168. c* IF (IVAPHA.NE.0) THEN
  169. c* MPTVAL = IVAPHA
  170. c* SEGDES,MPTVAL
  171. c* ENDIF
  172.  
  173. RETURN
  174. END
  175.  
  176.  
  177.  

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