Télécharger flamcr.eso

Retour à la liste

Numérotation des lignes :

flamcr
  1. C FLAMCR SOURCE OF166741 24/12/13 21:15:54 12097
  2. SUBROUTINE FLAMCR()
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : FLAMCR
  8. C
  9. C DESCRIPTION : CREBCOM: critere de combustion
  10. C
  11. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  12. C
  13. C AUTEUR : A. BECCANTINI, DM2S/SFME/LTMF
  14. C
  15. C************************************************************************
  16. C
  17. C
  18. C************************************************************************
  19. C
  20. C HISTORIQUE (Anomalies et modifications éventuelles)
  21. C
  22. C HISTORIQUE :
  23. C
  24. C
  25. C************************************************************************
  26. C
  27. IMPLICIT INTEGER(I-N)
  28.  
  29. -INC PPARAM
  30. -INC CCOPTIO
  31. -INC SMELEME
  32. POINTEUR MELEFE.MELEME
  33. -INC SMCHPOI
  34. POINTEUR MPOCSI.MPOVAL
  35. -INC SMLMOTS
  36. -INC SMLENTI
  37. INTEGER JGN, JGM
  38. POINTEUR MLECEN.MLENTI
  39. C
  40. C**** Les variables
  41. C
  42. INTEGER IDOMA,IRET,MELEMC,ICSI,IGEOM,NCEN,NFAC,NLCF,ICEN
  43. & ,ICHPO1,NGCED,NGCEG,NLCED,NLCEG,N,NC, ICOND, INEFMD
  44.  
  45. REAL*8 EPS1, CSIMAX, VCSIG, VCSID, VCSI2G, VCSI2D, EPS12
  46. & , CSIG
  47. CHARACTER*8 TYPE
  48. C
  49. C**** Lecture de l'objet MODELE
  50. C
  51. ICOND = 1
  52. CALL QUETYP(TYPE,ICOND,IRET)
  53.  
  54. IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN
  55. WRITE(6,*)' On attend un objet MMODEL'
  56. RETURN
  57. ENDIF
  58. CALL LIROBJ('MMODEL',MMODEL,ICOND,IRET)
  59. IF(IERR.NE.0)GOTO 9999
  60. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  61. IF(IERR.NE.0)GOTO 9999
  62. C
  63. C**** CENTRE, et FACEL
  64. C
  65. CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  66. IF(IERR .NE. 0) GOTO 9999
  67. C
  68. CALL LEKTAB(IDOMA,'FACEL',MELEFE)
  69. IF(IERR .NE. 0) GOTO 9999
  70. C
  71. C**** EPS1
  72. C Critere original du model CREBCOM
  73. C
  74. CALL LIRREE(EPS1,1,IRET)
  75. IF(IERR.NE.0) GOTO 9999
  76. C
  77. C**** CSIMAX
  78. C
  79. CALL LIRREE(CSIMAX,1,IRET)
  80. IF(IERR.NE.0) GOTO 9999
  81. C
  82. C**** ICSI = Progress Variable
  83. C
  84. TYPE='CHPOINT '
  85. CALL LIROBJ(TYPE,ICSI,1,IRET)
  86. IF(IERR.NE.0) GOTO 9999
  87. C
  88. MLMOT1=0
  89. CALL QUEPO1(ICSI,MELEMC,MLMOT1)
  90. IF(IERR.NE.0) GOTO 9999
  91. SEGSUP MLMOT1
  92. C
  93. CALL LICHT(ICSI,MPOCSI,TYPE,IGEOM)
  94. C SEGACT MPOCSI
  95. IF(IERR.NE.0) GOTO 9999
  96. C
  97. C**** CHPOINT qui vaut 1 si on a combustion
  98. C zero o contraire
  99. JGN=4
  100. JGM=1
  101. SEGINI MLMOT1
  102. MLMOT1.MOTS(1)='SCAL'
  103. TYPE = ' '
  104. CALL KRCHP1(TYPE, MELEMC, ICHPO1, MLMOT1)
  105. C SEGDES MLMOT1
  106. IF(IERR.NE.0) GOTO 9999
  107. CALL LICHT(ICHPO1,MPOVA1,TYPE,IGEOM)
  108. C SEGACT MPOVA1
  109. IF(IERR.NE.0) GOTO 9999
  110. C
  111. C**** KRIPAD pour la correspondance global/local de centre
  112. C
  113. CALL KRIPAD(MELEMC,MLECEN)
  114. IF(IERR .NE. 0)GOTO 9999
  115. C
  116. C SEGACT MLECEN
  117. IPT1 = MELEMC
  118. SEGACT IPT1
  119. NCEN = IPT1.NUM(/2)
  120. SEGDES IPT1
  121. C
  122. SEGACT MELEFE
  123. NFAC=MELEFE.NUM(/2)
  124. C
  125. DO NLCF = 1, NFAC
  126. C
  127. C******* NLCF = numero local du centre de facel
  128. C NGCEG = numero global du centre ELT "gauche"
  129. C NLCEG = numero local du centre ELT "gauche"
  130. C NGCED = numero global du centre ELT "droite"
  131. C NLCED = numero local du centre ELT "droite"
  132. C
  133. NGCEG = MELEFE.NUM(1,NLCF)
  134. NGCED = MELEFE.NUM(3,NLCF)
  135. NLCEG = MLECEN.LECT(NGCEG)
  136. NLCED = MLECEN.LECT(NGCED)
  137. C
  138. VCSIG=MPOCSI.VPOCHA(NLCEG,1)
  139. VCSID=MPOCSI.VPOCHA(NLCED,1)
  140. VCSI2G=VCSIG*VCSIG
  141. VCSI2D=VCSID*VCSID
  142. C
  143. IF(NLCEG .EQ. NLCED)THEN
  144. C
  145. C********** Murs
  146. C
  147. MPOVA1.VPOCHA(NLCEG,1)=MPOVA1.VPOCHA(NLCEG,1) + (0.5D0 *
  148. & VCSI2D)
  149. C
  150. ELSE
  151. C
  152. MPOVA1.VPOCHA(NLCEG,1)=MPOVA1.VPOCHA(NLCEG,1) +
  153. & (VCSI2D - (0.5D0 * VCSI2G))
  154. MPOVA1.VPOCHA(NLCED,1)=MPOVA1.VPOCHA(NLCED,1) +
  155. & (VCSI2G - (0.5D0 * VCSI2D))
  156. C
  157. ENDIF
  158. ENDDO
  159. C
  160. EPS12 = EPS1 * EPS1
  161. DO ICEN = 1, NCEN, 1
  162. VCSIG = MPOVA1.VPOCHA(ICEN,1)
  163. CSIG = MPOCSI.VPOCHA(ICEN,1)
  164. C
  165. C******* In 2D, contribution of the ideal upper and lower cells
  166. C
  167. IF(IDIM .EQ. 2) VCSIG = VCSIG + (CSIG * CSIG)
  168. IF((VCSIG .GT. EPS12) .AND. (CSIG .LT. CSIMAX))THEN
  169. C
  170. C********** Il y a combustion
  171. C
  172. MPOVA1.VPOCHA(ICEN,1) = 1.0D0
  173. ELSE
  174. MPOVA1.VPOCHA(ICEN,1) = 0.0D0
  175. ENDIF
  176. ENDDO
  177. C
  178. SEGDES MPOVA1
  179. SEGDES MPOCSI
  180. SEGDES MELEFE
  181. SEGSUP MLECEN
  182. C
  183. C**** Ecriture du resultat
  184. C
  185. CALL ECROBJ('CHPOINT ',ICHPO1)
  186. IF(IERR.NE.0)GOTO 9999
  187. C
  188. 9999 RETURN
  189. END
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  

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