Télécharger cli22r.eso

Retour à la liste

Numérotation des lignes :

  1. C CLI22R SOURCE BECC 06/06/06 21:15:01 5459
  2. SUBROUTINE CLI22R(NSP,MELEMF,MELEMC,MELECB,MELEFC,INORM,ICHPVO,
  3. & ICHPSU,LRECP,LRECV,IPC,ICHLIM,ICHRES,ICHRLI)
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : CLI22R
  9. C
  10. C DESCRIPTION : Subroutine appellée par CLIM22
  11. C calcul de RESIDU et CLIM at the board
  12. C OPTION: 'RESE' 2D, 3D
  13. C
  14. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  15. C
  16. C AUTEUR : A. Beccantini, DEN/DM2S/SFME/LTMF
  17. C
  18. C************************************************************************
  19. C
  20. C APPELES (Calcul) :
  21. C
  22. C************************************************************************
  23. C
  24. C HISTORIQUE (Anomalies et modifications éventuelles)
  25. C
  26. C HISTORIQUE :
  27. C
  28. C************************************************************************
  29. C
  30. C We know everything outside
  31. C
  32. C 1) PC < PF
  33. C Condition de type reservoir
  34. C
  35. C 2) PC > PF
  36. C We stop the mass flux
  37. C We put zero velocity on the wall
  38. C We put P = PF at the wall
  39. C
  40. IMPLICIT INTEGER(I-N)
  41. -INC CCOPTIO
  42. -INC SMLMOTS
  43. -INC SMELEME
  44. POINTEUR MELEFC.MELEME
  45. -INC SMLENTI
  46. POINTEUR MLEMC.MLENTI, MLEMCB.MLENTI,MLEMF.MLENTI
  47. -INC SMCHPOI
  48. POINTEUR MPNORM.MPOVAL, MPVOL.MPOVAL, MPSURF.MPOVAL,
  49. & MPPC.MPOVAL, MPLIM.MPOVAL,
  50. & MPRES.MPOVAL, MPRLI.MPOVAL
  51. C----------------------------------------
  52. C**** Variables de COOPTIO
  53. C----------------------------------------
  54. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  55. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  56. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  57. C & ,IECHO, IIMPI, IOSPI
  58. C & ,IDIM, IFICLE, IPREFI
  59. C & ,MCOORD
  60. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  61. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  62. C & ,NORINC,NORVAL,NORIND,NORVAD
  63. C & ,NUCROU, IPSAUV
  64. C
  65. INTEGER MELEMF,MELEMC,MELECB,INORM,ICHPVO,ICHPSU,IPC
  66. & ,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC
  67. & ,NGF,NGC,NLF,NLC,NLCB,LRECP,LRECV,I,NSP
  68. REAL*8 VOLU,SURF,PC,CNX,CNY,CNZ
  69. & ,RF,PF,PCR,TOP,BOT
  70. & ,GAMF
  71. & ,UN,RHO,P,UX,UY,UZ
  72. CHARACTER*(8) TYPE
  73. C------------------------------------------------------------
  74. -INC SMLREEL
  75. POINTEUR MLRECP.MLREEL, MLRECV.MLREEL
  76. C
  77. C-------------------------------------------------------------
  78. C******* Les fractionines massiques **************************
  79. C-------------------------------------------------------------
  80. SEGMENT FRAMAS
  81. REAL*8 YET(NSP)
  82. ENDSEGMENT
  83. POINTEUR YF.FRAMAS
  84. C------------------------------------------------------
  85. C**** KRIPAD pour la correspondance global/local
  86. C------------------------------------------------------
  87. CALL KRIPAD(MELEMC,MLEMC)
  88. CALL KRIPAD(MELECB,MLEMCB)
  89. CALL KRIPAD(MELEMF,MLEMF)
  90. C------------------------------------------------------
  91. C**** CHPOINTs de la table DOMAINE
  92. C------------------------------------------------------
  93. CALL LICHT(INORM,MPNORM,TYPE,ICEL)
  94. CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
  95. CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
  96. C------------------------------------------------------
  97. C**** CHPOINTs des variables
  98. C------------------------------------------------------
  99. CALL LICHT(IPC,MPPC,TYPE,ICEL)
  100. CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
  101. CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
  102. CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
  103.  
  104. C---------------------------------------------------------
  105. C**** Boucle sur le face pour le calcul du flux
  106. C---------------------------------------------------------
  107.  
  108. MLRECV = LRECV
  109. MLRECP = LRECP
  110.  
  111. SEGACT MLRECV
  112. SEGACT MLRECP
  113. SEGACT MELEFC
  114. SEGINI YF
  115.  
  116. NFAC=MELEFC.NUM(/2)
  117. CNZ=0.0D0
  118. DO 1 IFAC=1,NFAC,1
  119. NGF=MELEFC.NUM(1,IFAC)
  120. NGC=MELEFC.NUM(2,IFAC)
  121. NLF=MLEMF.LECT(NGF)
  122. NLC=MLEMC.LECT(NGC)
  123. NLCB=MLEMCB.LECT(NGF)
  124. VOLU=MPVOL.VPOCHA(NLC,1)
  125. SURF=MPSURF.VPOCHA(NLF,1)
  126. C----------------------------------------------
  127. C In CASTEM les normales sont sortantes
  128. C----------------------------------------------
  129. CNX=-1*MPNORM.VPOCHA(NLF,1)
  130. CNY=-1*MPNORM.VPOCHA(NLF,2)
  131. IF(IDIM.EQ.3)THEN
  132. CNZ=-1*MPNORM.VPOCHA(NLF,3)
  133. ENDIF
  134. C----------------------------
  135. C Variables au centre
  136. C----------------------------
  137. PC=MPPC.VPOCHA(NLC,1)
  138. C----------------------------
  139. C Variables à la face
  140. C----------------------------
  141. RF=MPLIM.VPOCHA(NLCB,1)
  142. PF=MPLIM.VPOCHA(NLCB,2)
  143. DO 101 I=1,(NSP-1)
  144. YF.YET(I)=MPLIM.VPOCHA(NLCB,2+I)
  145. 101 CONTINUE
  146. c-------------------------------------------------------------
  147. c Computing GAMMA at the face-center
  148. c-------------------------------------------------------------
  149. top=0.0D0
  150. bot=0.0D0
  151. do 103 i=1,(nsp-1)
  152. top=top+yf.yet(i)*(MLRECP.PROG(i)-MLRECP.PROG(nsp))
  153. bot=bot+yf.yet(i)*(MLRECV.PROG(i)-MLRECV.PROG(nsp))
  154. 103 continue
  155. top=MLRECP.PROG(nsp)+top
  156. bot=MLRECV.PROG(nsp)+bot
  157. GAMF=top/bot
  158. C----------------------------------------
  159. C******* PCR, P, RHO and UN on the border
  160. C----------------------------------------
  161. IF(PF .LT. PC)THEN
  162. C
  163. C P_{interface}=PF
  164. C \rho_{interface}=RF
  165. C U_{interface}=0.0D0
  166. C Y_{interface}=YF
  167. C
  168. MPRLI.VPOCHA(NLCB,1)=RF
  169. MPRLI.VPOCHA(NLCB,2)=0.0D0
  170. MPRLI.VPOCHA(NLCB,3)=0.0D0
  171. IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=0.0D0
  172. MPRLI.VPOCHA(NLCB,IDIM+2)=PF
  173. do 104 i=1,(nsp-1),1
  174. MPRLI.VPOCHA(NLCB,IDIM+2+I)=YF.YET(I)
  175. 104 continue
  176. MPRES.VPOCHA(IFAC,1)=0.0D0
  177. MPRES.VPOCHA(IFAC,2)=(PC*CNX)*SURF/VOLU
  178. MPRES.VPOCHA(IFAC,3)=(PC*CNY)*SURF/VOLU
  179. IF(IDIM.EQ.3)
  180. & MPRES.VPOCHA(IFAC,4)=(PC*CNZ)*SURF/VOLU
  181. MPRES.VPOCHA(IFAC,IDIM+2)=0.0D0
  182. do 105 i=1,(nsp-1),1
  183. MPRES.VPOCHA(IFAC,IDIM+2+I)=0.0D0
  184. 105 continue
  185. ELSE
  186. PCR=PF*((2.0D0/(GAMF+1.0D0))**((GAMF/(GAMF-1.0D0))))
  187. P=MAX(PCR,PC)
  188. RHO=(P/PF)**(1.0D0/GAMF)
  189. RHO=RHO*RF
  190. C
  191. UN=(2*GAMF)/(GAMF-1.0D0)
  192. UN=UN*((PF/RF)-(P/RHO))
  193. UN=MAX(UN,1.0D-16*((P/RHO)*0.5D0))
  194. UN=UN**0.5D0
  195. C
  196. UX=UN*CNX
  197. UY=UN*CNY
  198. UZ=UN*CNZ
  199. C
  200. MPRLI.VPOCHA(NLCB,1)=RHO
  201. MPRLI.VPOCHA(NLCB,2)=UX
  202. MPRLI.VPOCHA(NLCB,3)=UY
  203. IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZ
  204. MPRLI.VPOCHA(NLCB,IDIM+2)=P
  205. do 106 i=1,(nsp-1),1
  206. MPRLI.VPOCHA(NLCB,IDIM+2+I)=YF.YET(I)
  207. 106 continue
  208. C-------------------------------------------------------
  209. C******* Residuum (son SPG a le meme ordre que MELEFC)
  210. C-------------------------------------------------------
  211. MPRES.VPOCHA(IFAC,1)=RHO*UN*SURF/VOLU
  212. MPRES.VPOCHA(IFAC,2)=(RHO*UN*UX+(P*CNX))*SURF/VOLU
  213. MPRES.VPOCHA(IFAC,3)=(RHO*UN*UY+(P*CNY))*SURF/VOLU
  214. IF(IDIM.EQ.3)
  215. & MPRES.VPOCHA(IFAC,4)=(RHO*UN*UZ+(P*CNZ))*SURF/VOLU
  216. MPRES.VPOCHA(IFAC,IDIM+2)=((UN*GAMF*P/(GAMF-1.0D0)) +
  217. & (0.5D0*RHO*UN*UN*UN))*SURF/VOLU
  218. do 107 i=1,(nsp-1)
  219. MPRES.VPOCHA(IFAC,IDIM+2+I)=RHO*YF.YET(I)*UN*SURF/VOLU
  220. 107 continue
  221. ENDIF
  222. 1 CONTINUE
  223. C
  224. SEGDES MELEFC
  225. C
  226. SEGSUP MLEMC
  227. SEGSUP MLEMCB
  228. SEGSUP MLEMF
  229. SEGSUP YF
  230. C
  231. C
  232. SEGDES MPNORM
  233. SEGDES MPVOL
  234. SEGDES MPSURF
  235. SEGDES MPPC
  236. SEGDES MPLIM
  237. SEGDES MPRES
  238. SEGDES MPRLI
  239. SEGDES MLRECP
  240. SEGDES MLRECV
  241. C
  242. 9999 CONTINUE
  243. RETURN
  244. END
  245.  
  246.  
  247.  
  248.  

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