Télécharger cli251.eso

Retour à la liste

Numérotation des lignes :

cli251
  1. C CLI251 SOURCE OF166741 24/12/13 21:15:35 12097
  2. SUBROUTINE CLI251(NSP,MELEMF,MELEMC,MELECB,MELEFC,INORM,ICHPVO,
  3. & ICHPSU,LRECP,LRECV,IROC,IVITC,IPC,IYC,ICHLIM,ICHRES,ICHRLI)
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : CLI251
  9. C
  10. C DESCRIPTION : Subroutine appellée par CLIM22
  11. C Outlet B.C. (known pressure)
  12. C
  13. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  14. C
  15. C AUTEUR : S. Kudriakov, DEN/DM2S/SFME/LTMF
  16. C
  17. C************************************************************************
  18. C
  19. C APPELES (Calcul) :
  20. C
  21. C************************************************************************
  22. C
  23. C HISTORIQUE (Anomalies et modifications éventuelles)
  24. C
  25. C HISTORIQUE :
  26. C
  27. C************************************************************************
  28. C
  29. IMPLICIT INTEGER(I-N)
  30.  
  31. -INC PPARAM
  32. -INC CCOPTIO
  33. -INC SMLMOTS
  34. -INC SMELEME
  35. POINTEUR MELEFC.MELEME
  36. -INC SMLENTI
  37. POINTEUR MLEMC.MLENTI, MLEMCB.MLENTI,MLEMF.MLENTI
  38. -INC SMCHPOI
  39. POINTEUR MPNORM.MPOVAL, MPVOL.MPOVAL, MPSURF.MPOVAL, MPRC.MPOVAL,
  40. & MPVC.MPOVAL, MPPC.MPOVAL, MPYC.MPOVAL, MPLIM.MPOVAL,
  41. & MPRES.MPOVAL, MPRLI.MPOVAL
  42. C
  43. INTEGER MELEMF,MELEMC,MELECB,INORM,ICHPVO,ICHPSU, IROC,IVITC,IPC
  44. & ,IYC,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC
  45. & ,NGF,NGC,NLF,NLC,NLCB,LRECP,LRECV,NSP,NESP,I
  46. REAL*8 VOLU,SURF,GAMC,CNX,CNY,CNZ,CTX,CTY,CTZ
  47. & ,CT2X,CT2Y,CT2Z,RC,PC,UXC,UYC,UZC,PF,TOP,BOT
  48. & ,UNC,UTC,UT2C,CELLT
  49. CHARACTER*(8) TYPE
  50. C-------------------------------------------------------
  51. -INC SMLREEL
  52. POINTEUR MLRECP.MLREEL, MLRECV.MLREEL
  53. C-------------------------------------------------------
  54. C********** Les CP's and CV's ***********************
  55. C-------------------------------------------------------
  56. SEGMENT GCONST
  57. REAL*8 GC(NSP)
  58. ENDSEGMENT
  59. POINTEUR CP.GCONST, CV.GCONST
  60. C-------------------------------------------------------------
  61. C******* Les fractionines massiques **************************
  62. C-------------------------------------------------------------
  63. SEGMENT FRAMAS
  64. REAL*8 YET(NSP)
  65. ENDSEGMENT
  66. POINTEUR YC.FRAMAS
  67. C-------------------------------------------------------------
  68. C********** Segments for the flux-vector *******************
  69. C-------------------------------------------------------------
  70. SEGMENT FUNEL
  71. REAL*8 FU(4+NSP)
  72. ENDSEGMENT
  73. POINTEUR flux2D.funel, flux3D.funel
  74. SEGINI FLUX2D
  75. SEGINI FLUX3D
  76. C------------------------------------------------------------
  77. C**** KRIPAD pour la correspondance global/local
  78. C------------------------------------------------------------
  79. CALL KRIPAD(MELEMC,MLEMC)
  80. CALL KRIPAD(MELECB,MLEMCB)
  81. CALL KRIPAD(MELEMF,MLEMF)
  82. C--------------------------------------------
  83. C**** CHPOINTs de la table DOMAINE
  84. C--------------------------------------------
  85. CALL LICHT(INORM,MPNORM,TYPE,ICEL)
  86. CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
  87. CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
  88. C----------------------------------------
  89. C**** CHPOINTs des variables
  90. C----------------------------------------
  91. CALL LICHT(IROC,MPRC,TYPE,ICEL)
  92. CALL LICHT(IVITC,MPVC,TYPE,ICEL)
  93. CALL LICHT(IPC,MPPC,TYPE,ICEL)
  94. CALL LICHT(IYC,MPYC,TYPE,ICEL)
  95. CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
  96. CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
  97. CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
  98. C---------------------------------------------------------
  99. C**** Boucle sur le face pour le calcul des invariants de
  100. C Riemann et du flux
  101. C---------------------------------------------------------
  102. SEGACT MELEFC
  103. NFAC=MELEFC.NUM(/2)
  104. UZC=0.0D0
  105. CNZ=0.0D0
  106. CTZ=0.0D0
  107. CT2X=0.0D0
  108. CT2Y=0.0D0
  109. CT2Z=0.0D0
  110. DO IFAC=1,NFAC,1
  111. NGF=MELEFC.NUM(1,IFAC)
  112. NGC=MELEFC.NUM(2,IFAC)
  113. NLF=MLEMF.LECT(NGF)
  114. NLC=MLEMC.LECT(NGC)
  115. NLCB=MLEMCB.LECT(NGF)
  116. VOLU=MPVOL.VPOCHA(NLC,1)
  117. SURF=MPSURF.VPOCHA(NLF,1)
  118. C In CASTEM les normales sont sortantes
  119. CNX=MPNORM.VPOCHA(NLF,1)
  120. CNY=MPNORM.VPOCHA(NLF,2)
  121. IF(IDIM.EQ.2)THEN
  122. CTX=-1.0D0*CNY
  123. CTY=CNX
  124. ELSE
  125. CNZ=MPNORM.VPOCHA(NLF,3)
  126. CTX=MPNORM.VPOCHA(NLF,4)
  127. CTY=MPNORM.VPOCHA(NLF,5)
  128. CTZ=MPNORM.VPOCHA(NLF,6)
  129. CT2X=MPNORM.VPOCHA(NLF,7)
  130. CT2Y=MPNORM.VPOCHA(NLF,8)
  131. CT2Z=MPNORM.VPOCHA(NLF,9)
  132. ENDIF
  133. C--------------------------------------------
  134. SEGINI CP, CV
  135. MLRECP = LRECP
  136. MLRECV = LRECV
  137. SEGACT MLRECP, MLRECV
  138. DO 10 I=1,(NSP-1)
  139. CP.GC(I)=MLRECP.PROG(I)
  140. CV.GC(I)=MLRECV.PROG(I)
  141. 10 CONTINUE
  142. CP.GC(NSP)=MLRECP.PROG(NSP)
  143. CV.GC(NSP)=MLRECV.PROG(NSP)
  144. C----------------------------------------
  145. C Variables au centre
  146. C----------------------------------------
  147. RC=MPRC.VPOCHA(NLC,1)
  148. UXC=MPVC.VPOCHA(NLC,1)
  149. UYC=MPVC.VPOCHA(NLC,2)
  150. IF(IDIM.EQ.3)UZC=MPVC.VPOCHA(NLC,3)
  151. PC=MPPC.VPOCHA(NLC,1)
  152. SEGINI YC
  153. SEGACT MPYC
  154. DO 101 I=1,(NSP-1)
  155. YC.YET(I)=MPYC.VPOCHA(NLC,I)
  156. 101 CONTINUE
  157. c-------------------------------------------------------------
  158. c Computing GAMMA at the cell-center
  159. c-------------------------------------------------------------
  160. top=0.0D0
  161. bot=0.0D0
  162. do 102 i=1,(nsp-1)
  163. top=top+yc.yet(i)*(cp.gc(i)-cp.gc(nsp))
  164. bot=bot+yc.yet(i)*(cv.gc(i)-cv.gc(nsp))
  165. 102 continue
  166. top=cp.gc(nsp)+top
  167. bot=cv.gc(nsp)+bot
  168. GAMC=top/bot
  169. C-----------------------------------------
  170. C Variables à la face
  171. C-----------------------------------------
  172. PF=MPLIM.VPOCHA(NLCB,1)
  173. C---------------------------------------
  174. C******* On calcule UN, UT, UT2
  175. C---------------------------------------
  176. UNC=(UXC*CNX)+(UYC*CNY)+(UZC*CNZ)
  177. UTC=(UXC*CTX)+(UYC*CTY)+(UZC*CTZ)
  178. UT2C=(UXC*CT2X)+(UYC*CT2Y)+(UZC*CT2Z)
  179. C-----------------------------------------------
  180. C******* Densite, vitesse, pression sur le bord
  181. C-----------------------------------------------
  182. MPRLI.VPOCHA(NLCB,1)=RC
  183. MPRLI.VPOCHA(NLCB,2)=UXC
  184. MPRLI.VPOCHA(NLCB,3)=UYC
  185. IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZC
  186. MPRLI.VPOCHA(NLCB,IDIM+2)=PF
  187. do 104 i=1,(nsp-1)
  188. MPRLI.VPOCHA(NLCB,IDIM+2+I)=YC.YET(I)
  189. 104 continue
  190. C---------------------------------------------------
  191. C******* Probleme de Riemann entre l'etat gauche
  192. C RC,UNC,UTC,UT2C,PC et l'etat droite
  193. C RC,UNC,UTC,UT2C,PF
  194. C On utilise AUSM+
  195. C Flux dans le repaire normale
  196. C---------------------------------------------------
  197. NESP=NSP-1
  198. IF(IDIM.EQ.2)THEN
  199. CALL FAUSMP(NESP,
  200. & GAMC,RC,PC,UNC,UTC,
  201. & GAMC,RC,PF,UNC,UTC,
  202. & YC.YET,YC.YET,
  203. & FLUX2D.FU,
  204. & CELLT)
  205. C-------------------------------------------------------
  206. C******* Residuum (son SPG a le meme ordre que MELEFC)
  207. C-------------------------------------------------------
  208. MPRES.VPOCHA(IFAC,1)=-1*FLUX2D.FU(1)*SURF/VOLU
  209. MPRES.VPOCHA(IFAC,2)=-1*((FLUX2D.FU(2)*CNX)+
  210. & (FLUX2D.FU(3)*CTX))*SURF/VOLU
  211. MPRES.VPOCHA(IFAC,3)=-1*((FLUX2D.FU(2)*CNY)+
  212. & (FLUX2D.FU(3)*CTY))*SURF/VOLU
  213. MPRES.VPOCHA(IFAC,4)=-1*FLUX2D.FU(4)*SURF/VOLU
  214. do 105 i=1,(nsp-1)
  215. MPRES.VPOCHA(IFAC,4+I)=-1*FLUX2D.FU(4+I)*SURF/VOLU
  216. 105 continue
  217. ELSE
  218. CALL FAUSM3(NESP,
  219. & GAMC,RC,PC,UNC,UTC,UT2C,
  220. & GAMC,RC,PF,UNC,UTC,UT2C,
  221. & YC.YET,YC.YET,
  222. & FLUX3D.FU,
  223. & CELLT)
  224. C------------------------------------------------------
  225. C******* Residuum (son SPG a le meme ordre que MELEFC)
  226. C------------------------------------------------------
  227. MPRES.VPOCHA(IFAC,1)=-1*FLUX3D.FU(1)*SURF/VOLU
  228. MPRES.VPOCHA(IFAC,2)=-1*((FLUX3D.FU(2)*CNX)+
  229. & (FLUX3D.FU(3)*CTX)+(FLUX3D.FU(4)*CT2X))*SURF/VOLU
  230. MPRES.VPOCHA(IFAC,3)=-1*((FLUX3D.FU(2)*CNY)+
  231. & (FLUX3D.FU(3)*CTY)+(FLUX3D.FU(4)*CT2Z))*SURF/VOLU
  232. MPRES.VPOCHA(IFAC,4)=-1*((FLUX3D.FU(2)*CNZ)+
  233. & (FLUX3D.FU(3)*CTZ)+(FLUX3D.FU(4)*CT2Z))*SURF/VOLU
  234. MPRES.VPOCHA(IFAC,5)=-1*FLUX3D.FU(5)*SURF/VOLU
  235. do 106 i=1,(nsp-1)
  236. MPRES.VPOCHA(IFAC,5+I)=-1*FLUX3D.FU(5+I)*SURF/VOLU
  237. 106 continue
  238. ENDIF
  239. ENDDO
  240. C
  241. SEGDES MELEFC
  242. C
  243. SEGSUP MLEMC
  244. SEGSUP MLEMCB
  245. SEGSUP MLEMF
  246. C
  247. SEGDES MPNORM
  248. SEGDES MPVOL
  249. SEGDES MPSURF
  250. SEGDES MPRC
  251. SEGDES MPPC
  252. SEGDES MPVC
  253. SEGDES MPYC
  254. SEGDES MPLIM
  255. SEGDES MPRES
  256. SEGDES MPRLI
  257. SEGDES YC
  258. SEGDES FLUX2D
  259. SEGDES FLUX3D
  260. C
  261. 9999 CONTINUE
  262. RETURN
  263. END
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  

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