Télécharger cl281t.eso

Retour à la liste

Numérotation des lignes :

cl281t
  1. C CL281T SOURCE OF166741 24/12/13 21:15:08 12097
  2. SUBROUTINE CL281T(NSP,MELEMF,MELEMC,MELECB,MELEFC,INORM,ICHPVO,
  3. & ICHPSU,LRECP,LRECV,ICHLIM,ICHRES,ICHRLI)
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : CL281T
  9. C
  10. C DESCRIPTION : Subroutine appellée par CLIM22
  11. C calcul de RESIDU et CLIM at the board
  12. C OPTION: 'INSS' 2D with turbulence (k-\eps)
  13. C "supersonic inlet"
  14. C
  15. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16. C
  17. C AUTEUR : S.Kudriakov, DEN/DM2S/SFME/LTMF
  18. C
  19. C************************************************************************
  20. C ENTREES : NSP (type ENTIER) : full number of species
  21. C ('ESPEULE' + 1) ;
  22. C MELEMF (type MELEME) : maillage des faces des
  23. C éléments.
  24. C MELEMC (type MELEME) : maillage des centres des
  25. C éléments.
  26. C MELECB (type MELEME) : maillage des centres des éléments
  27. C de la frontière
  28. C MELEFC (type MELEME) : connectivités face-(centre
  29. C gauche, centre droit).
  30. C INORM (type MCHPOI) : normales at the faces
  31. C ICHPVO (type MCHPOI) : volumes of the cells
  32. C ICHPSU (type MCHPOI) : surfaces of the cell-interfaces
  33. C LRECP (type MLREEL) : list of CP's of the species
  34. C LRECV (type MLREEL) : list of CV's of the species
  35. C ICHLIM (type MCHPOI) : boundary conditions at the centers
  36. C of the boundary
  37. C-----------------------------------------------------
  38. C SORTIES: ICHRES (type MCHPOI) : the contribution to the residuum
  39. C due to the boundary conditions
  40. C given at the centres of the cells
  41. C next to the boundary
  42. C ICHRLI (type MCHPOI) : the values at the boundary faces
  43. C found by the procedure.
  44. C
  45. C APPELES (Calcul) :
  46. C
  47. C************************************************************************
  48. C
  49. C HISTORIQUE (Anomalies et modifications éventuelles)
  50. C
  51. C HISTORIQUE :
  52. C
  53. C************************************************************************
  54. C
  55. IMPLICIT INTEGER(I-N)
  56.  
  57. -INC PPARAM
  58. -INC CCOPTIO
  59. -INC SMLMOTS
  60. -INC SMELEME
  61. POINTEUR MELEFC.MELEME, MELEMF.MELEME,MELEMC.MELEME,MELECB.MELEME
  62. -INC SMLENTI
  63. POINTEUR MLEMC.MLENTI, MLEMCB.MLENTI,MLEMF.MLENTI
  64. -INC SMCHPOI
  65. POINTEUR MPNORM.MPOVAL, MPVOL.MPOVAL, MPSURF.MPOVAL,
  66. & MPLIM.MPOVAL, MPRES.MPOVAL, MPRLI.MPOVAL
  67. C----------------------------------------
  68. INTEGER INORM,ICHPVO,ICHPSU
  69. & ,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC
  70. & ,NGF,NGC,NLF,NLC,NLCB,LRECP,LRECV,I,NSP
  71. REAL*8 VOLU,SURF,CNX,CNY,CNZ,CTX,CTY,CTZ
  72. & ,CT2X,CT2Y,CT2Z,RF,PF,UXF,UYF,UZF,TOP,BOT
  73. & ,UNF,UTF,UT2F,GAMF
  74. & ,UT,UT2,UN,RHO,P,UX,UY,UZ
  75. & ,KAF,EPSF
  76. CHARACTER*(8) TYPE
  77. C------------------------------------------------------------
  78. -INC SMLREEL
  79. POINTEUR MLRECP.MLREEL, MLRECV.MLREEL
  80. C-------------------------------------------------------
  81. C********** Les CP's and CV's ***********************
  82. C-------------------------------------------------------
  83. SEGMENT GCONST
  84. REAL*8 GC(NSP)
  85. ENDSEGMENT
  86. POINTEUR CP.GCONST, CV.GCONST
  87. C-------------------------------------------------------------
  88. C******* Les fractionines massiques **************************
  89. C-------------------------------------------------------------
  90. SEGMENT FRAMAS
  91. REAL*8 YET(NSP)
  92. ENDSEGMENT
  93. POINTEUR YF.FRAMAS
  94. C------------------------------------------------------
  95. C**** KRIPAD pour la correspondance global/local
  96. C------------------------------------------------------
  97. CALL KRIPAD(MELEMC,MLEMC)
  98. CALL KRIPAD(MELECB,MLEMCB)
  99. CALL KRIPAD(MELEMF,MLEMF)
  100. C------------------------------------------------------
  101. C**** CHPOINTs de la table DOMAINE
  102. C------------------------------------------------------
  103. CALL LICHT(INORM,MPNORM,TYPE,ICEL)
  104. CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
  105. CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
  106. C------------------------------------------------------
  107. C**** CHPOINTs des variables
  108. C------------------------------------------------------
  109. CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
  110. CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
  111. CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
  112. C---------------------------------------------------------
  113. C**** Boucle sur le face pour le calcul des invariants de
  114. C Riemann et du flux
  115. C---------------------------------------------------------
  116. SEGACT MELEFC
  117. NFAC=MELEFC.NUM(/2)
  118. UZF=0.0D0
  119. CNZ=0.0D0
  120. CTZ=0.0D0
  121. CT2X=0.0D0
  122. CT2Y=0.0D0
  123. CT2Z=0.0D0
  124. DO 1 IFAC=1,NFAC,1
  125. NGF=MELEFC.NUM(1,IFAC)
  126. NGC=MELEFC.NUM(2,IFAC)
  127. NLF=MLEMF.LECT(NGF)
  128. NLC=MLEMC.LECT(NGC)
  129. NLCB=MLEMCB.LECT(NGF)
  130. VOLU=MPVOL.VPOCHA(NLC,1)
  131. SURF=MPSURF.VPOCHA(NLF,1)
  132. C----------------------------------------------
  133. C In CASTEM les normales sont sortantes
  134. C----------------------------------------------
  135. CNX=-1*MPNORM.VPOCHA(NLF,1)
  136. CNY=-1*MPNORM.VPOCHA(NLF,2)
  137. IF(IDIM.EQ.2)THEN
  138. CTX=-1.0D0*CNY
  139. CTY=CNX
  140. ELSE
  141. CNZ=-1*MPNORM.VPOCHA(NLF,3)
  142. CTX=-1*MPNORM.VPOCHA(NLF,4)
  143. CTY=-1*MPNORM.VPOCHA(NLF,5)
  144. CTZ=-1*MPNORM.VPOCHA(NLF,6)
  145. CT2X=-1*MPNORM.VPOCHA(NLF,7)
  146. CT2Y=-1*MPNORM.VPOCHA(NLF,8)
  147. CT2Z=-1*MPNORM.VPOCHA(NLF,9)
  148. ENDIF
  149. C----------------------------------------
  150. SEGINI CP, CV
  151. MLRECP = LRECP
  152. MLRECV = LRECV
  153. SEGACT MLRECP, MLRECV
  154. DO 10 I=1,(NSP-1)
  155. CP.GC(I)=MLRECP.PROG(I)
  156. CV.GC(I)=MLRECV.PROG(I)
  157. 10 CONTINUE
  158. CP.GC(NSP)=MLRECP.PROG(NSP)
  159. CV.GC(NSP)=MLRECV.PROG(NSP)
  160. C----------------------------
  161. C Variables à la face
  162. C----------------------------
  163. RF=MPLIM.VPOCHA(NLCB,1)
  164. UXF=MPLIM.VPOCHA(NLCB,2)
  165. UYF=MPLIM.VPOCHA(NLCB,3)
  166. IF(IDIM.EQ.3)UZF=MPLIM.VPOCHA(NLCB,4)
  167. PF=MPLIM.VPOCHA(NLCB,IDIM+2)
  168. SEGINI YF
  169. DO 101 I=1,(NSP-1)
  170. YF.YET(I)=MPLIM.VPOCHA(NLCB,IDIM+2+I)
  171. 101 CONTINUE
  172. KAF=MPLIM.VPOCHA(NLCB,IDIM+NSP+2)
  173. EPSF=MPLIM.VPOCHA(NLCB,IDIM+NSP+3)
  174. c-------------------------------------------------------------
  175. c Computing GAMMA at the face-center
  176. c-------------------------------------------------------------
  177. top=0.0D0
  178. bot=0.0D0
  179. do 103 i=1,(nsp-1)
  180. top=top+yf.yet(i)*(cp.gc(i)-cp.gc(nsp))
  181. bot=bot+yf.yet(i)*(cv.gc(i)-cv.gc(nsp))
  182. 103 continue
  183. top=cp.gc(nsp)+top
  184. bot=cv.gc(nsp)+bot
  185. GAMF=top/bot
  186. C---------------------------------------
  187. C******* On calcule UN, UT, UT2, ASON, S
  188. C---------------------------------------
  189. UNF=(UXF*CNX)+(UYF*CNY)+(UZF*CNZ)
  190. UTF=(UXF*CTX)+(UYF*CTY)+(UZF*CTZ)
  191. UT2F=(UXF*CT2X)+(UYF*CT2Y)+(UZF*CT2Z)
  192. C-----------------------------------------------
  193. C******* Densite, vitesse, pression sur le bord
  194. C-----------------------------------------------
  195. UN = UNF
  196. UT=UTF
  197. UT2=UT2F
  198. RHO = RF
  199. P = PF
  200. UX=(UN*CNX)+(UT*CTX)+(UT2*CT2X)
  201. UY=(UN*CNY)+(UT*CTY)+(UT2*CT2Y)
  202. UZ=(UN*CNZ)+(UT*CTZ)+(UT2*CT2Z)
  203. C----------------------------------------
  204. MPRLI.VPOCHA(NLCB,1)=RHO
  205. MPRLI.VPOCHA(NLCB,2)=UX
  206. MPRLI.VPOCHA(NLCB,3)=UY
  207. IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZ
  208. MPRLI.VPOCHA(NLCB,IDIM+2)=P
  209. do 104 i=1,(nsp-1)
  210. MPRLI.VPOCHA(NLCB,IDIM+2+I)=YF.YET(I)
  211. 104 continue
  212. MPRLI.VPOCHA(NLCB,IDIM+NSP+2)=KAF
  213. MPRLI.VPOCHA(NLCB,IDIM+NSP+3)=EPSF
  214. C-------------------------------------------------------
  215. C******* Residuum (son SPG a le meme ordre que MELEFC)
  216. C-------------------------------------------------------
  217. MPRES.VPOCHA(IFAC,1)=RHO*UN*SURF/VOLU
  218. MPRES.VPOCHA(IFAC,2)=(RHO*UN*UX+(P*CNX))*SURF/VOLU
  219. MPRES.VPOCHA(IFAC,3)=(RHO*UN*UY+(P*CNY))*SURF/VOLU
  220. IF(IDIM.EQ.3)
  221. & MPRES.VPOCHA(IFAC,4)=(RHO*UN*UZ+(P*CNZ))*SURF/VOLU
  222. MPRES.VPOCHA(IFAC,IDIM+2)=((UN*GAMF*P/(GAMF-1.0D0)) +
  223. & (0.5D0*RHO*UN*(UN*UN+UT*UT+UT2*UT2)))*SURF/VOLU
  224. do 105 i=1,(nsp-1)
  225. MPRES.VPOCHA(IFAC,IDIM+2+I)=RHO*YF.YET(I)*UN*SURF/VOLU
  226. 105 continue
  227. MPRES.VPOCHA(IFAC,IDIM+NSP+2)=RHO*KAF*UN*SURF/VOLU
  228. MPRES.VPOCHA(IFAC,IDIM+NSP+3)=RHO*EPSF*UN*SURF/VOLU
  229. 1 CONTINUE
  230. C
  231. SEGDES MELEFC
  232. C
  233. SEGDES MLEMC
  234. SEGDES MLEMCB
  235. SEGDES MLEMF
  236. C
  237. SEGDES MPNORM
  238. SEGDES MPVOL
  239. SEGDES MPSURF
  240. SEGDES MPLIM
  241. SEGDES MPRES
  242. SEGDES MPRLI
  243. SEGDES MLRECP
  244. SEGDES MLRECV
  245. SEGDES YF
  246. C
  247. 9999 CONTINUE
  248. RETURN
  249. END
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  

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