Télécharger cli161.eso

Retour à la liste

Numérotation des lignes :

cli161
  1. C CLI161 SOURCE OF166741 24/12/13 21:15:22 12097
  2. SUBROUTINE CLI161(MELEMF,MELEMC,MELECB,MELEFC,INORM,ICHPVO,ICHPSU,
  3. & IROC,IVITC,IPC,IGAMC,ICHLIM,ICHRES,ICHRLI)
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : CLI161
  9. C
  10. C DESCRIPTION : Subroutine appellée par CLIM11
  11. C
  12. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  13. C
  14. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
  15. C
  16. C************************************************************************
  17. C
  18. C APPELES (Calcul) :
  19. C
  20. C************************************************************************
  21. C
  22. C HISTORIQUE (Anomalies et modifications éventuelles)
  23. C
  24. C HISTORIQUE :
  25. C
  26. C************************************************************************
  27. C
  28. IMPLICIT INTEGER(I-N)
  29.  
  30. -INC PPARAM
  31. -INC CCOPTIO
  32. -INC SMLMOTS
  33. -INC SMELEME
  34. POINTEUR MELEFC.MELEME
  35. -INC SMLENTI
  36. POINTEUR MLEMC.MLENTI, MLEMCB.MLENTI,MLEMF.MLENTI
  37. -INC SMCHPOI
  38. POINTEUR MPNORM.MPOVAL, MPVOL.MPOVAL, MPSURF.MPOVAL, MPRC.MPOVAL,
  39. & MPVC.MPOVAL, MPPC.MPOVAL, MPGAMC.MPOVAL, MPLIM.MPOVAL,
  40. & MPRES.MPOVAL, MPRLI.MPOVAL
  41.  
  42. INTEGER MELEMF,MELEMC,MELECB,INORM,ICHPVO,ICHPSU, IROC,IVITC,IPC
  43. & ,IGAMC,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC
  44. & ,NGF,NGC,NLF,NLC,NLCB
  45. REAL*8 VOLU,SURF,GAMC,CNX,CNY,CNZ,CTX,CTY,CTZ,GM1
  46. & ,CT2X,CT2Y,CT2Z,RF,PF,UXF,UYF,UZF,UNF,UTF,UT2F
  47. & ,UXC,UYC,UZC,RC,PC,UNC,UTC,UT2C
  48. & ,HTF,SF,ECIN,PSRF,CELL(1),CELLT,FLUX2D(4),FLUX3D(5)
  49. CHARACTER*(8) TYPE
  50. C
  51. C
  52. C**** KRIPAD pour la correspondance global/local
  53. C
  54. CALL KRIPAD(MELEMC,MLEMC)
  55. C SEGINI MLEMC
  56. CALL KRIPAD(MELECB,MLEMCB)
  57. C SEGINI MLEMCB
  58. CALL KRIPAD(MELEMF,MLEMF)
  59. C SEGINI MLEMF
  60. C
  61. C**** CHPOINTs de la table DOMAINE
  62. C
  63. CALL LICHT(INORM,MPNORM,TYPE,ICEL)
  64. CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
  65. CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
  66. C
  67. C**** LICHT active les MPOVALs en *MOD
  68. C
  69. C SEGACT MPNORM*MOD
  70. C SEGACT MPOVSU*MOD
  71. C SEGACT MPOVOL*MOD
  72. C
  73. C
  74. C**** CHPOINTs des variables
  75. C
  76. CALL LICHT(IROC,MPRC,TYPE,ICEL)
  77. CALL LICHT(IVITC,MPVC,TYPE,ICEL)
  78. CALL LICHT(IPC,MPPC,TYPE,ICEL)
  79. CALL LICHT(IGAMC,MPGAMC,TYPE,ICEL)
  80. CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
  81. CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
  82. CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
  83. C
  84. C SEGACT *MOD
  85. C SEGACT *MOD
  86. C SEGACT *MOD
  87. C SEGACT *MOD
  88. C SEGACT *MOD
  89. C SEGACT *MOD
  90. C SEGACT *MOD
  91. C
  92. C
  93. C**** Boucle sur le face pour le calcul des invariants de
  94. C Riemann et du flux
  95. C
  96. SEGACT MELEFC
  97. NFAC=MELEFC.NUM(/2)
  98. UZC=0.0D0
  99. UZF=0.0D0
  100. UT2F=0.0D0
  101. CNZ=0.0D0
  102. CTZ=0.0D0
  103. CT2X=0.0D0
  104. CT2Y=0.0D0
  105. CT2Z=0.0D0
  106. DO IFAC=1,NFAC,1
  107. NGF=MELEFC.NUM(1,IFAC)
  108. NGC=MELEFC.NUM(2,IFAC)
  109. NLF=MLEMF.LECT(NGF)
  110. NLC=MLEMC.LECT(NGC)
  111. NLCB=MLEMCB.LECT(NGF)
  112. VOLU=MPVOL.VPOCHA(NLC,1)
  113. SURF=MPSURF.VPOCHA(NLF,1)
  114. C In CASTEM les normales sont sortantes
  115. CNX=-1*MPNORM.VPOCHA(NLF,1)
  116. CNY=-1*MPNORM.VPOCHA(NLF,2)
  117. IF(IDIM.EQ.2)THEN
  118. CTX=-1.0D0*CNY
  119. CTY=CNX
  120. ELSE
  121. CNZ=-1*MPNORM.VPOCHA(NLF,3)
  122. CTX=-1*MPNORM.VPOCHA(NLF,4)
  123. CTY=-1*MPNORM.VPOCHA(NLF,5)
  124. CTZ=-1*MPNORM.VPOCHA(NLF,6)
  125. CT2X=-1*MPNORM.VPOCHA(NLF,7)
  126. CT2Y=-1*MPNORM.VPOCHA(NLF,8)
  127. CT2Z=-1*MPNORM.VPOCHA(NLF,9)
  128. ENDIF
  129. GAMC=MPGAMC.VPOCHA(NLC,1)
  130. GM1=GAMC-1.0D0
  131. C Variables au centre
  132. RC=MPRC.VPOCHA(NLC,1)
  133. UXC=MPVC.VPOCHA(NLC,1)
  134. UYC=MPVC.VPOCHA(NLC,2)
  135. IF(IDIM.EQ.3) UZC=MPVC.VPOCHA(NLC,3)
  136. PC=MPPC.VPOCHA(NLC,1)
  137. C Variables à la face
  138. HTF=MPLIM.VPOCHA(NLCB,1)
  139. SF=MPLIM.VPOCHA(NLCB,2)
  140. UTF=0.0D0
  141. C
  142. C******* On calcule UNC
  143. C
  144. UNC=(UXC*CNX)+(UYC*CNY)+(UZC*CNZ)
  145. UTC=(UXC*CTX)+(UYC*CTY)+(UZC*CTZ)
  146. UT2C=(UXC*CT2X)+(UYC*CT2Y)+(UZC*CT2Z)
  147. UNF=UNC
  148. C
  149. C******* On calcule UN, UT, UT2
  150. C
  151. UXF=UNF*CNX+UTF*CTX+UT2F*CT2X
  152. UYF=UNF*CNY+UTF*CTY+UT2F*CT2Y
  153. UZF=UNF*CNZ+UTF*CTZ+UT2F*CT2Z
  154. C
  155. ECIN=0.5D0*((UXF*UXF)+(UYF*UYF)+(UZF*UZF))
  156. PSRF=(GM1/GAMC)*(HTF-ECIN)
  157. RF=PSRF/SF
  158. if (rf.lt.0.d0) then
  159. call erreur(213)
  160. return
  161. endif
  162. RF=RF**(1.0D0/GM1)
  163. PF=SF*(RF**GAMC)
  164. C
  165. C******* Densite, vitesse, pression sur le bord
  166. C
  167. MPRLI.VPOCHA(NLCB,1)=RF
  168. MPRLI.VPOCHA(NLCB,2)=UXF
  169. MPRLI.VPOCHA(NLCB,3)=UYF
  170. IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZF
  171. MPRLI.VPOCHA(NLCB,IDIM+2)=PF
  172. C
  173. IF(IDIM.EQ.2)THEN
  174. CALL FAUSMP(0,
  175. & GAMC,RF,PF,UNC,UTF,
  176. & GAMC,RC,PC,UNC,UTC,
  177. & CELL,CELL,
  178. & FLUX2D,
  179. & CELLT)
  180. C
  181. C******* Residuum (son SPG a le meme ordre que MELEFC)
  182. C
  183. MPRES.VPOCHA(IFAC,1)=FLUX2D(1)*SURF/VOLU
  184. MPRES.VPOCHA(IFAC,2)=((FLUX2D(2)*CNX)+(FLUX2D(3)*CTX))
  185. & *SURF/VOLU
  186. MPRES.VPOCHA(IFAC,3)=((FLUX2D(2)*CNY)+(FLUX2D(3)*CTY))
  187. & *SURF/VOLU
  188. MPRES.VPOCHA(IFAC,4)=FLUX2D(4)*SURF/VOLU
  189. ELSE
  190. CALL FAUSM3(0,
  191. & GAMC,RF,PF,UNC,UTF,UT2F,
  192. & GAMC,RC,PC,UNC,UTC,UT2C,
  193. & CELL,CELL,
  194. & FLUX3D,
  195. & CELLT)
  196. C
  197. C******* Residuum (son SPG a le meme ordre que MELEFC)
  198. C
  199. MPRES.VPOCHA(IFAC,1)=FLUX3D(1)*SURF/VOLU
  200. MPRES.VPOCHA(IFAC,2)=((FLUX3D(2)*CNX)+(FLUX3D(3)*CTX)+
  201. & (FLUX3D(4)*CT2X))*SURF/VOLU
  202. MPRES.VPOCHA(IFAC,3)=((FLUX3D(2)*CNY)+(FLUX3D(3)*CTY)+
  203. & (FLUX3D(4)*CT2Y))*SURF/VOLU
  204. MPRES.VPOCHA(IFAC,4)=((FLUX3D(2)*CNZ)+(FLUX3D(3)*CTZ)+
  205. & (FLUX3D(4)*CT2Z))*SURF/VOLU
  206. MPRES.VPOCHA(IFAC,5)=FLUX3D(5)*SURF/VOLU
  207. ENDIF
  208.  
  209. ENDDO
  210. C
  211. C
  212. SEGSUP MLEMC
  213. SEGSUP MLEMCB
  214. SEGSUP MLEMF
  215. C
  216. 9999 CONTINUE
  217. END
  218.  
  219.  
  220.  
  221.  
  222.  

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