Télécharger cli271.eso

Retour à la liste

Numérotation des lignes :

cli271
  1. C CLI271 SOURCE OF166741 24/12/13 21:15:39 12097
  2. SUBROUTINE CLI271(NSP,MELEMF,MELEMC,MELECB,MELEFC,INORM,ICHPVO,
  3. & ICHPSU,LRECP,LRECV,IROC,IVITC,IPC,ICHLIM,ICHRES,ICHRLI)
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : CLI271
  9. C
  10. C DESCRIPTION : Subroutine appellée par CLIM22
  11. C OPTION: 'INJE'
  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. & ,IGAMC,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC
  45. & ,NGF,NGC,NLF,NLC,NLCB,LRECP,LRECV,NSP,I
  46. REAL*8 VOLU,SURF,GAMF,CNX,CNY,CNZ,CTX,CTY,CTZ,GM1,USGM1
  47. & ,CT2X,CT2Y,CT2Z,UTF,UT2F,TOP,BOT
  48. & ,PC,PSRF,RHOUF,ECIN,P,RHO,UN,UT,UT2,UX,UY,UZ
  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 YF.FRAMAS
  67. C------------------------------------------------------
  68. C**** KRIPAD pour la correspondance global/local
  69. C------------------------------------------------------
  70. CALL KRIPAD(MELEMC,MLEMC)
  71. CALL KRIPAD(MELECB,MLEMCB)
  72. CALL KRIPAD(MELEMF,MLEMF)
  73. C-----------------------------------------------------
  74. C**** CHPOINTs de la table DOMAINE
  75. C-----------------------------------------------------
  76. CALL LICHT(INORM,MPNORM,TYPE,ICEL)
  77. CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
  78. CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
  79. C-----------------------------------------------------
  80. C**** CHPOINTs des variables
  81. C-----------------------------------------------------
  82. CALL LICHT(IROC,MPRC,TYPE,ICEL)
  83. CALL LICHT(IVITC,MPVC,TYPE,ICEL)
  84. CALL LICHT(IPC,MPPC,TYPE,ICEL)
  85. CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
  86. CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
  87. CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
  88. C----------------------------------------------------------
  89. C**** Boucle sur le face pour le calcul des invariants de
  90. C Riemann et du flux
  91. C----------------------------------------------------------
  92. SEGACT MELEFC
  93. NFAC=MELEFC.NUM(/2)
  94. CNZ=0.0D0
  95. CTZ=0.0D0
  96. CT2X=0.0D0
  97. CT2Y=0.0D0
  98. CT2Z=0.0D0
  99. DO IFAC=1,NFAC,1
  100. NGF=MELEFC.NUM(1,IFAC)
  101. NGC=MELEFC.NUM(2,IFAC)
  102. NLF=MLEMF.LECT(NGF)
  103. NLC=MLEMC.LECT(NGC)
  104. NLCB=MLEMCB.LECT(NGF)
  105. VOLU=MPVOL.VPOCHA(NLC,1)
  106. SURF=MPSURF.VPOCHA(NLF,1)
  107. C In CASTEM les normales sont sortantes
  108. CNX=-1*MPNORM.VPOCHA(NLF,1)
  109. CNY=-1*MPNORM.VPOCHA(NLF,2)
  110. IF(IDIM.EQ.2)THEN
  111. CTX=-1.0D0*CNY
  112. CTY=CNX
  113. ELSE
  114. CNZ=-1*MPNORM.VPOCHA(NLF,3)
  115. CTX=-1*MPNORM.VPOCHA(NLF,4)
  116. CTY=-1*MPNORM.VPOCHA(NLF,5)
  117. CTZ=-1*MPNORM.VPOCHA(NLF,6)
  118. CT2X=-1*MPNORM.VPOCHA(NLF,7)
  119. CT2Y=-1*MPNORM.VPOCHA(NLF,8)
  120. CT2Z=-1*MPNORM.VPOCHA(NLF,9)
  121. ENDIF
  122. C--------------------------------------------
  123. SEGINI CP, CV
  124. MLRECP = LRECP
  125. MLRECV = LRECV
  126. SEGACT MLRECP, MLRECV
  127. DO 10 I=1,(NSP-1)
  128. CP.GC(I)=MLRECP.PROG(I)
  129. CV.GC(I)=MLRECV.PROG(I)
  130. 10 CONTINUE
  131. CP.GC(NSP)=MLRECP.PROG(NSP)
  132. CV.GC(NSP)=MLRECV.PROG(NSP)
  133. C----------------------------------------
  134. C Variables au centre
  135. C----------------------------------------
  136. PC=MPPC.VPOCHA(NLC,1)
  137. C----------------------------------------
  138. C Variables à la face
  139. C----------------------------------------
  140. RHOUF=MPLIM.VPOCHA(NLCB,1)
  141. PSRF=MPLIM.VPOCHA(NLCB,2)
  142. UTF=0.0D0
  143. UT2F=0.0D0
  144. C----------------------------------------
  145. C******* Variables à l'interface
  146. C----------------------------------------
  147. P=PC
  148. RHO=P/PSRF
  149. UN=RHOUF/RHO
  150. UT=UTF
  151. UT2=UT2F
  152. SEGINI YF
  153. DO 101 I=1,(NSP-1)
  154. YF.YET(I)=MPLIM.VPOCHA(NLCB,2+I)
  155. 101 CONTINUE
  156. c-------------------------------------------------------------
  157. c Computing GAMMA at the face-center
  158. c-------------------------------------------------------------
  159. top=0.0D0
  160. bot=0.0D0
  161. do 103 i=1,(nsp-1)
  162. top=top+yf.yet(i)*(cp.gc(i)-cp.gc(nsp))
  163. bot=bot+yf.yet(i)*(cv.gc(i)-cv.gc(nsp))
  164. 103 continue
  165. top=cp.gc(nsp)+top
  166. bot=cv.gc(nsp)+bot
  167. GAMF=top/bot
  168. C-----------------------------------------
  169. C******* On calcule U
  170. C-----------------------------------------
  171. UX=UN*CNX+UT*CTX+UT2*CT2X
  172. UY=UN*CNY+UT*CTY+UT2*CT2Y
  173. UZ=UN*CNZ+UT*CTZ+UT2*CT2Z
  174. C---------------------------------------------
  175. ECIN=0.5D0*((UX*UX)+(UY*UY)+(UZ*UZ))
  176. C------------------------------------------------
  177. C******* Densite, vitesse, pression sur le bord
  178. C------------------------------------------------
  179. MPRLI.VPOCHA(NLCB,1)=RHO
  180. MPRLI.VPOCHA(NLCB,2)=UX
  181. MPRLI.VPOCHA(NLCB,3)=UY
  182. IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZ
  183. MPRLI.VPOCHA(NLCB,IDIM+2)=P
  184. do 104 i=1,(nsp-1)
  185. MPRLI.VPOCHA(NLCB,IDIM+2+I)=YF.YET(I)
  186. 104 continue
  187. C--------------------------------------------------------
  188. C******* Residuum (son SPG a le meme ordre que MELEFC)
  189. C--------------------------------------------------------
  190. USGM1 = 1.0D0/(GAMF-1.0D0)
  191. MPRES.VPOCHA(IFAC,1)=RHOUF*SURF/VOLU
  192. MPRES.VPOCHA(IFAC,2)=(RHOUF*UX+P*CNX)*SURF/VOLU
  193. MPRES.VPOCHA(IFAC,3)=(RHOUF*UY+P*CNY)*SURF/VOLU
  194. IF(IDIM.EQ.3)MPRES.VPOCHA(IFAC,4)=(RHOUF*UZ+P*CNZ)*SURF/VOLU
  195. MPRES.VPOCHA(IFAC,IDIM+2)=(RHOUF*((GAMF*USGM1*PSRF)+ECIN))
  196. & *SURF/VOLU
  197. do 105 i=1,(nsp-1)
  198. MPRES.VPOCHA(IFAC,IDIM+2+I)=RHOUF*YF.YET(I)*SURF/VOLU
  199. 105 continue
  200. ENDDO
  201. C
  202. SEGDES MELEFC
  203. C
  204. SEGSUP MLEMC
  205. SEGSUP MLEMCB
  206. SEGSUP MLEMF
  207. C
  208. SEGDES MPNORM
  209. SEGDES MPVOL
  210. SEGDES MPSURF
  211. SEGDES MPRC
  212. SEGDES MPPC
  213. SEGDES MPVC
  214. SEGDES MPLIM
  215. SEGDES MPRES
  216. SEGDES MPRLI
  217. SEGDES MLRECP
  218. SEGDES MLRECV
  219. SEGDES YF
  220. C
  221. 9999 CONTINUE
  222. RETURN
  223. END
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  

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