Télécharger fron1.eso

Retour à la liste

Numérotation des lignes :

  1. C FRON1 SOURCE CHAT 05/01/13 00:09:10 5004
  2. SUBROUTINE FRON1
  3. C
  4. C FONCTION: TRAITEMENT DE LA COMBUSTION DANS CASTEM2000
  5. C
  6. C CHPT2 = COMBU CHPT1 CHPV DT T ;
  7. C CHPT2 : instant de debut de combustion calcule pour t + dt
  8. C CHPT1 : instant de debut de combustion calcule pour t
  9. C CHPV : vitesse d'avance et durée de combustion
  10. C T : instant t
  11. C DT : pas de temps
  12. C
  13. C
  14. C A de Gayffier
  15. c 12/12/94
  16. C
  17. C FORTRAN + ESOPE
  18. IMPLICIT INTEGER(I-N)
  19. IMPLICIT REAL*8 (A-H,O-Z)
  20. LOGICAL FLAG1
  21. * INTEGER OOOVAL
  22. -INC SMCHPOI
  23. -INC CCOPTIO
  24. -INC SMCOORD
  25. -INC SMELEME
  26. PARAMETER(GRAND=1.D50)
  27. C
  28. C recuperation des objets
  29. C
  30. * print *,'Segments actifs',oooval(2,3)
  31. * print *,'Total segments',oooval(2,1)
  32. CALL LIROBJ('CHPOINT',ICHPO1,1,IRETOU)
  33. IF (IERR .NE. 0) RETURN
  34. CALL LIROBJ('CHPOINT',ICHPO2,1,IRETOU)
  35. IF (IERR .NE. 0) RETURN
  36. CALL LIRREE(TEMPS1,1,IRETOU)
  37. IF (IERR .NE. 0) RETURN
  38. CALL LIRREE(DTEMPS,1,IRETOU)
  39. IF (IERR .NE. 0) RETURN
  40. C
  41. C on assemble les deux champs par point lus
  42. C
  43. 40 FLAG1 = .FALSE.
  44. CALL ADCHPO(ICHPO1,ICHPO2,ICHPO,1.D0,1.D0)
  45. MCHPO1 = ICHPO1
  46. MCHPO2 = ICHPO2
  47. SEGDES MCHPO2,MCHPO1
  48. IF (IERR .NE. 0) RETURN
  49. C
  50. C on cree l'ensemble des points tels que CHP1(P) < t+dt
  51. C et ceux tels que CHP1(P) < min(t,t+dt-tcombustion)
  52. C
  53. MCHPOI = ICHPO
  54. SEGACT MCHPOI*MOD
  55. NPTOT = 0
  56. DO 50 K=1,IPCHP(/1)
  57. MSOUPO = IPCHP(K)
  58. SEGACT MSOUPO
  59. MELEME = IGEOC
  60. MPOVAL = IPOVAL
  61. SEGACT MELEME*MOD,MPOVAL
  62. NPTOT = NPTOT + NUM(/2)
  63. 50 CONTINUE
  64. C
  65. TEMPS2 = DTEMPS + TEMPS1
  66. C
  67. C on cree trois maillages qui contiennent les points
  68. C des trois ensemble
  69. C
  70. NBNN = 1
  71. NBELEM = NPTOT
  72. NBSOUS = 0
  73. NBREF = 0
  74. SEGINI IPT1,IPT2,IPT3
  75. C
  76. C on cree trois MPOVAL pour stocker les valeurs en chaque point
  77. C
  78. N=NPTOT
  79. NC=2
  80. SEGINI MPOVA1,MPOVA2,MPOVA3
  81. C
  82. 60 CONTINUE
  83. IND1 = 0
  84. IND2 = 0
  85. IND3 = 0
  86. C
  87. C boucle sur les msoupo
  88. C
  89. DO 150 K=1,IPCHP(/1)
  90. C
  91. MSOUPO = IPCHP(K)
  92. MELEME = IGEOC
  93. MPOVAL = IPOVAL
  94. C on numerote les composantes 'VIT' TCMB' 'TPS'
  95. IF ( NOCOMP(/2) .NE. 3 ) THEN
  96. CALL ERREUR(665)
  97. RETURN
  98. ENDIF
  99. DO 70 I=1,NOCOMP(/2)
  100. IF (NOCOMP(I) .EQ. 'VIT' ) THEN
  101. IVIT = I
  102. ELSE IF (NOCOMP(I) .EQ. 'TCMB') THEN
  103. ITCMB = I
  104. ELSE IF (NOCOMP(I) .EQ. 'TPS') THEN
  105. ITEMPS =I
  106. ELSE
  107. CALL ERREUR(665)
  108. SEGSUP IPT1,IPT2,IPT3,MPOVA1,MPOVA2,MPOVA3
  109. SEGDES MSOUPO,MELEME,MPOVAL,MCHPOI
  110. RETURN
  111. ENDIF
  112. 70 CONTINUE
  113. C
  114. C on remplit mpova1,2,3 et ipt1,2,3
  115. C
  116. C
  117. DO 100 I=1,VPOCHA(/1)
  118. BINF = MIN(TEMPS1,TEMPS2-VPOCHA(I,ITCMB))
  119. C
  120. IF (VPOCHA(I,1) .LE. TEMPS2 .AND.
  121. & VPOCHA(I,1) .GE. BINF ) THEN
  122. c le point est en combustion
  123. IND1 = IND1 + 1
  124. IPT1.NUM(1,IND1)=NUM(1,I)
  125. MPOVA1.VPOCHA(IND1,1)=VPOCHA(I,ITEMPS)
  126. MPOVA1.VPOCHA(IND1,2)=VPOCHA(I,IVIT)
  127. C
  128. ELSE IF (VPOCHA(I,1) .GT. TEMPS2 ) THEN
  129. c le point n'a pas brule
  130. IND2 = IND2 + 1
  131. IPT2.NUM(1,IND2)=NUM(1,I)
  132. MPOVA2.VPOCHA(IND2,1)=GRAND
  133. MPOVA2.VPOCHA(IND2,2)=VPOCHA(I,IVIT)
  134. C
  135. ELSE
  136. c le point a deja brulé
  137. IND3 = IND3 + 1
  138. IPT3.NUM(1,IND3)=NUM(1,I)
  139. MPOVA3.VPOCHA(IND3,1)=VPOCHA(I,ITEMPS)
  140. ENDIF
  141. 100 CONTINUE
  142. 150 CONTINUE
  143. C
  144. C ici on controle que ind1 n'est pas nul
  145. C
  146. IF (IND1 .EQ. 0) THEN
  147. C dans ce cas on agrandi la fenetre
  148. TEMPS1 = TEMPS1 - DTEMPS
  149. GOTO 60
  150. ENDIF
  151. C
  152. IF ((IND1+IND2+IND3) .NE. NPTOT) THEN
  153. SEGSUP IPT1,IPT2,IPT3,MPOVA1,MPOVA2,MPOVA3
  154. SEGDES MSOUPO,MELEME,MPOVAL,MCHPOI
  155. CALL ERREUR(5)
  156. RETURN
  157. ENDIF
  158. C
  159. C boucle sur les points de ipt2
  160. C
  161. DO 300 I=1,IND2
  162. IM = IPT2.NUM(1,I)
  163. XM = XCOOR((IM-1)*(IDIM+1) +1)
  164. YM = XCOOR((IM-1)*(IDIM+1) +2)
  165. ZM = XCOOR((IM-1)*(IDIM+1) +3) * (IDIM - 2)
  166.  
  167. DO 200 J=1,IND1
  168. IP = IPT1.NUM(1,J)
  169. XP = XCOOR((IP-1)*(IDIM+1) +1)
  170. YP = XCOOR((IP-1)*(IDIM+1) +2)
  171. ZP = XCOOR((IP-1)*(IDIM+1) +3) * (IDIM - 2)
  172. DPM = SQRT( (XM-XP)*(XM-XP)+(YM-YP)*(YM-YP) +
  173. & (ZM-ZP)*(ZM-ZP))
  174. VPM = (MPOVA1.VPOCHA(J,2) + MPOVA2.VPOCHA(I,2))/2.D0
  175. TM2 = MPOVA1.VPOCHA(J,1)+ DPM / VPM
  176. MPOVA2.VPOCHA(I,1) = MIN(MPOVA2.VPOCHA(I,1),TM2)
  177. 200 CONTINUE
  178. IF (MPOVA2.VPOCHA(I,1) .LT. TEMPS2) FLAG1 = .TRUE.
  179. C le resultat n'est pas consistent
  180. C ca veut dire qu'il va falloir recommencer
  181. 300 CONTINUE
  182. C
  183. C on rempli le resultat dans le chpo resultat
  184. C
  185. C creation
  186. NAT=1
  187. NSOUPO=1
  188. SEGINI ,MCHPO1
  189. MCHPO1.JATTRI(1)=1
  190. MCHPO1.MOCHDE='Temps d allumage du point cree par FRON'
  191. IFOPOI = (IDIM-2)*3 + 1
  192. ICHPO1 = MCHPO1
  193. C
  194. NC = 1
  195. SEGINI ,MSOUP1
  196. MCHPO1.IPCHP(1)=MSOUP1
  197. MSOUP1.NOCOMP(1)='TPS'
  198. C
  199. NC = 1
  200. N = IND1 + IND2 + IND3
  201. SEGINI MPOVA4
  202. MSOUP1.IPOVAL = MPOVA4
  203. C
  204. NBNN = 1
  205. NBELEM = IND1 + IND2 + IND3
  206. NBSOUS = 0
  207. NBREF = 0
  208. SEGINI ,IPT4
  209. ITYPEL = 1
  210. MSOUP1.IGEOC = IPT4
  211. C
  212. C remplissage
  213. C
  214. DO 600 I=1,IND3
  215. IPT4.NUM(1,I)=IPT3.NUM(1,I)
  216. MPOVA4.VPOCHA(I,1)= MPOVA3.VPOCHA(I,1)
  217. 600 CONTINUE
  218. C
  219. DO 400 I=1,IND1
  220. IPT4.NUM(1,I+IND3)=IPT1.NUM(1,I)
  221. MPOVA4.VPOCHA(I+IND3,1)= MPOVA1.VPOCHA(I,1)
  222. 400 CONTINUE
  223. C
  224. DO 500 I=1,IND2
  225. IPT4.NUM(1,I+IND1+IND3)=IPT2.NUM(1,I)
  226. MPOVA4.VPOCHA(I+IND1+IND3,1)= MPOVA2.VPOCHA(I,1)
  227. 500 CONTINUE
  228. C
  229. C gestion des segments
  230. C
  231. DO 700 I=1,IPCHP(/1)
  232. MSOUPO = IPCHP(I)
  233. MPOVAL = IPOVAL
  234. MELEME = IGEOC
  235. SEGDES MELEME
  236. SEGSUP ,MSOUPO,MPOVAL
  237. 700 CONTINUE
  238. C
  239. SEGSUP MCHPOI
  240. SEGDES MCHPO1,MSOUP1,MPOVA4,IPT4
  241. SEGSUP IPT1,IPT2,IPT3
  242. SEGSUP MPOVA1,MPOVA2,MPOVA3
  243. C
  244. C
  245. IF ( FLAG1 ) THEN
  246. C le chpo trouvé n'est pas consistent
  247. GOTO 40
  248. ENDIF
  249. C
  250. ICHPO1 = MCHPO1
  251. CALL ECROBJ('CHPOINT',ICHPO1)
  252. * print *,'Segments actifs',oooval(2,3)
  253. * print *,'Total segments',oooval(2,1)
  254. RETURN
  255. END
  256.  
  257.  
  258.  
  259.  

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