Télécharger cli271.eso

Retour à la liste

Numérotation des lignes :

cli271
  1. C CLI271 SOURCE CB215821 20/11/25 13:20:50 10792
  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. C**** Variables de COOPTIO
  44. C
  45. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  46. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  47. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  48. C & ,IECHO, IIMPI, IOSPI
  49. C & ,IDIM, IFICLE, IPREFI
  50. C & ,MCOORD
  51. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  52. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  53. C & ,NORINC,NORVAL,NORIND,NORVAD
  54. C & ,NUCROU, IPSAUV
  55. C
  56. INTEGER MELEMF,MELEMC,MELECB,INORM,ICHPVO,ICHPSU, IROC,IVITC,IPC
  57. & ,IGAMC,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC
  58. & ,NGF,NGC,NLF,NLC,NLCB,LRECP,LRECV,NSP,I
  59. REAL*8 VOLU,SURF,GAMF,CNX,CNY,CNZ,CTX,CTY,CTZ,GM1,USGM1
  60. & ,CT2X,CT2Y,CT2Z,UTF,UT2F,TOP,BOT
  61. & ,PC,PSRF,RHOUF,ECIN,P,RHO,UN,UT,UT2,UX,UY,UZ
  62. CHARACTER*(8) TYPE
  63. C-------------------------------------------------------------------
  64. -INC SMLREEL
  65. POINTEUR MLRECP.MLREEL, MLRECV.MLREEL
  66. C-------------------------------------------------------
  67. C********** Les CP's and CV's ***********************
  68. C-------------------------------------------------------
  69. SEGMENT GCONST
  70. REAL*8 GC(NSP)
  71. ENDSEGMENT
  72. POINTEUR CP.GCONST, CV.GCONST
  73. C-------------------------------------------------------------
  74. C******* Les fractionines massiques **************************
  75. C-------------------------------------------------------------
  76. SEGMENT FRAMAS
  77. REAL*8 YET(NSP)
  78. ENDSEGMENT
  79. POINTEUR YF.FRAMAS
  80. C------------------------------------------------------
  81. C**** KRIPAD pour la correspondance global/local
  82. C------------------------------------------------------
  83. CALL KRIPAD(MELEMC,MLEMC)
  84. CALL KRIPAD(MELECB,MLEMCB)
  85. CALL KRIPAD(MELEMF,MLEMF)
  86. C-----------------------------------------------------
  87. C**** CHPOINTs de la table DOMAINE
  88. C-----------------------------------------------------
  89. CALL LICHT(INORM,MPNORM,TYPE,ICEL)
  90. CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
  91. CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
  92. C-----------------------------------------------------
  93. C**** CHPOINTs des variables
  94. C-----------------------------------------------------
  95. CALL LICHT(IROC,MPRC,TYPE,ICEL)
  96. CALL LICHT(IVITC,MPVC,TYPE,ICEL)
  97. CALL LICHT(IPC,MPPC,TYPE,ICEL)
  98. CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
  99. CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
  100. CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
  101. C----------------------------------------------------------
  102. C**** Boucle sur le face pour le calcul des invariants de
  103. C Riemann et du flux
  104. C----------------------------------------------------------
  105. SEGACT MELEFC
  106. NFAC=MELEFC.NUM(/2)
  107. CNZ=0.0D0
  108. CTZ=0.0D0
  109. CT2X=0.0D0
  110. CT2Y=0.0D0
  111. CT2Z=0.0D0
  112. DO IFAC=1,NFAC,1
  113. NGF=MELEFC.NUM(1,IFAC)
  114. NGC=MELEFC.NUM(2,IFAC)
  115. NLF=MLEMF.LECT(NGF)
  116. NLC=MLEMC.LECT(NGC)
  117. NLCB=MLEMCB.LECT(NGF)
  118. VOLU=MPVOL.VPOCHA(NLC,1)
  119. SURF=MPSURF.VPOCHA(NLF,1)
  120. C In CASTEM les normales sont sortantes
  121. CNX=-1*MPNORM.VPOCHA(NLF,1)
  122. CNY=-1*MPNORM.VPOCHA(NLF,2)
  123. IF(IDIM.EQ.2)THEN
  124. CTX=-1.0D0*CNY
  125. CTY=CNX
  126. ELSE
  127. CNZ=-1*MPNORM.VPOCHA(NLF,3)
  128. CTX=-1*MPNORM.VPOCHA(NLF,4)
  129. CTY=-1*MPNORM.VPOCHA(NLF,5)
  130. CTZ=-1*MPNORM.VPOCHA(NLF,6)
  131. CT2X=-1*MPNORM.VPOCHA(NLF,7)
  132. CT2Y=-1*MPNORM.VPOCHA(NLF,8)
  133. CT2Z=-1*MPNORM.VPOCHA(NLF,9)
  134. ENDIF
  135. C--------------------------------------------
  136. SEGINI CP, CV
  137. MLRECP = LRECP
  138. MLRECV = LRECV
  139. SEGACT MLRECP, MLRECV
  140. DO 10 I=1,(NSP-1)
  141. CP.GC(I)=MLRECP.PROG(I)
  142. CV.GC(I)=MLRECV.PROG(I)
  143. 10 CONTINUE
  144. CP.GC(NSP)=MLRECP.PROG(NSP)
  145. CV.GC(NSP)=MLRECV.PROG(NSP)
  146. C----------------------------------------
  147. C Variables au centre
  148. C----------------------------------------
  149. PC=MPPC.VPOCHA(NLC,1)
  150. C----------------------------------------
  151. C Variables à la face
  152. C----------------------------------------
  153. RHOUF=MPLIM.VPOCHA(NLCB,1)
  154. PSRF=MPLIM.VPOCHA(NLCB,2)
  155. UTF=0.0D0
  156. UT2F=0.0D0
  157. C----------------------------------------
  158. C******* Variables à l'interface
  159. C----------------------------------------
  160. P=PC
  161. RHO=P/PSRF
  162. UN=RHOUF/RHO
  163. UT=UTF
  164. UT2=UT2F
  165. SEGINI YF
  166. DO 101 I=1,(NSP-1)
  167. YF.YET(I)=MPLIM.VPOCHA(NLCB,2+I)
  168. 101 CONTINUE
  169. c-------------------------------------------------------------
  170. c Computing GAMMA at the face-center
  171. c-------------------------------------------------------------
  172. top=0.0D0
  173. bot=0.0D0
  174. do 103 i=1,(nsp-1)
  175. top=top+yf.yet(i)*(cp.gc(i)-cp.gc(nsp))
  176. bot=bot+yf.yet(i)*(cv.gc(i)-cv.gc(nsp))
  177. 103 continue
  178. top=cp.gc(nsp)+top
  179. bot=cv.gc(nsp)+bot
  180. GAMF=top/bot
  181. C-----------------------------------------
  182. C******* On calcule U
  183. C-----------------------------------------
  184. UX=UN*CNX+UT*CTX+UT2*CT2X
  185. UY=UN*CNY+UT*CTY+UT2*CT2Y
  186. UZ=UN*CNZ+UT*CTZ+UT2*CT2Z
  187. C---------------------------------------------
  188. ECIN=0.5D0*((UX*UX)+(UY*UY)+(UZ*UZ))
  189. C------------------------------------------------
  190. C******* Densite, vitesse, pression sur le bord
  191. C------------------------------------------------
  192. MPRLI.VPOCHA(NLCB,1)=RHO
  193. MPRLI.VPOCHA(NLCB,2)=UX
  194. MPRLI.VPOCHA(NLCB,3)=UY
  195. IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZ
  196. MPRLI.VPOCHA(NLCB,IDIM+2)=P
  197. do 104 i=1,(nsp-1)
  198. MPRLI.VPOCHA(NLCB,IDIM+2+I)=YF.YET(I)
  199. 104 continue
  200. C--------------------------------------------------------
  201. C******* Residuum (son SPG a le meme ordre que MELEFC)
  202. C--------------------------------------------------------
  203. USGM1 = 1.0D0/(GAMF-1.0D0)
  204. MPRES.VPOCHA(IFAC,1)=RHOUF*SURF/VOLU
  205. MPRES.VPOCHA(IFAC,2)=(RHOUF*UX+P*CNX)*SURF/VOLU
  206. MPRES.VPOCHA(IFAC,3)=(RHOUF*UY+P*CNY)*SURF/VOLU
  207. IF(IDIM.EQ.3)MPRES.VPOCHA(IFAC,4)=(RHOUF*UZ+P*CNZ)*SURF/VOLU
  208. MPRES.VPOCHA(IFAC,IDIM+2)=(RHOUF*((GAMF*USGM1*PSRF)+ECIN))
  209. & *SURF/VOLU
  210. do 105 i=1,(nsp-1)
  211. MPRES.VPOCHA(IFAC,IDIM+2+I)=RHOUF*YF.YET(I)*SURF/VOLU
  212. 105 continue
  213. ENDDO
  214. C
  215. SEGDES MELEFC
  216. C
  217. SEGSUP MLEMC
  218. SEGSUP MLEMCB
  219. SEGSUP MLEMF
  220. C
  221. SEGDES MPNORM
  222. SEGDES MPVOL
  223. SEGDES MPSURF
  224. SEGDES MPRC
  225. SEGDES MPPC
  226. SEGDES MPVC
  227. SEGDES MPLIM
  228. SEGDES MPRES
  229. SEGDES MPRLI
  230. SEGDES MLRECP
  231. SEGDES MLRECV
  232. SEGDES YF
  233. C
  234. 9999 CONTINUE
  235. RETURN
  236. END
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  

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