Télécharger cli181.eso

Retour à la liste

Numérotation des lignes :

cli181
  1. C CLI181 SOURCE OF166741 24/12/13 21:15:26 12097
  2. SUBROUTINE CLI181(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 : CLI171
  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. C
  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,USGM1
  46. & ,CT2X,CT2Y,CT2Z,UTF,UT2F
  47. & ,PC,PSRF,RHOUF,ECIN,P,RHO,UN,UT,UT2,UX,UY,UZ
  48. & ,RHOC,UXC,UYC,UZC,UNC,CC,ACEL,BCEL,CCEL
  49.  
  50. CHARACTER*(8) TYPE
  51. C
  52. C
  53. C**** KRIPAD pour la correspondance global/local
  54. C
  55. CALL KRIPAD(MELEMC,MLEMC)
  56. C SEGINI MLEMC
  57. CALL KRIPAD(MELECB,MLEMCB)
  58. C SEGINI MLEMCB
  59. CALL KRIPAD(MELEMF,MLEMF)
  60. C SEGINI MLEMF
  61. C
  62. C**** CHPOINTs de la table DOMAINE
  63. C
  64. CALL LICHT(INORM,MPNORM,TYPE,ICEL)
  65. CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
  66. CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
  67. C
  68. C**** LICHT active les MPOVALs en *MOD
  69. C
  70. C SEGACT MPNORM*MOD
  71. C SEGACT MPOVSU*MOD
  72. C SEGACT MPOVOL*MOD
  73. C
  74. C
  75. C**** CHPOINTs des variables
  76. C
  77. CALL LICHT(IROC,MPRC,TYPE,ICEL)
  78. CALL LICHT(IVITC,MPVC,TYPE,ICEL)
  79. CALL LICHT(IPC,MPPC,TYPE,ICEL)
  80. CALL LICHT(IGAMC,MPGAMC,TYPE,ICEL)
  81. CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
  82. CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
  83. CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
  84. C
  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 SEGACT *MOD
  92. C
  93. C
  94. C**** Boucle sur le face pour le calcul des invariants de
  95. C Riemann et du flux
  96. C
  97. SEGACT MELEFC
  98. NFAC=MELEFC.NUM(/2)
  99. CNZ=0.0D0
  100. CTZ=0.0D0
  101. CT2X=0.0D0
  102. CT2Y=0.0D0
  103. CT2Z=0.0D0
  104. UZC=0.0D0
  105. DO IFAC=1,NFAC,1
  106. NGF=MELEFC.NUM(1,IFAC)
  107. NGC=MELEFC.NUM(2,IFAC)
  108. NLF=MLEMF.LECT(NGF)
  109. NLC=MLEMC.LECT(NGC)
  110. NLCB=MLEMCB.LECT(NGF)
  111. VOLU=MPVOL.VPOCHA(NLC,1)
  112. SURF=MPSURF.VPOCHA(NLF,1)
  113. C In CASTEM les normales sont sortantes
  114. CNX=-1*MPNORM.VPOCHA(NLF,1)
  115. CNY=-1*MPNORM.VPOCHA(NLF,2)
  116. IF(IDIM.EQ.2)THEN
  117. CTX=-1.0D0*CNY
  118. CTY=CNX
  119. ELSE
  120. CNZ=-1*MPNORM.VPOCHA(NLF,3)
  121. CTX=-1*MPNORM.VPOCHA(NLF,4)
  122. CTY=-1*MPNORM.VPOCHA(NLF,5)
  123. CTZ=-1*MPNORM.VPOCHA(NLF,6)
  124. CT2X=-1*MPNORM.VPOCHA(NLF,7)
  125. CT2Y=-1*MPNORM.VPOCHA(NLF,8)
  126. CT2Z=-1*MPNORM.VPOCHA(NLF,9)
  127. ENDIF
  128. GAMC=MPGAMC.VPOCHA(NLC,1)
  129. GM1=GAMC-1.0D0
  130. USGM1=1.0D0/GM1
  131. C Variables au centre
  132. PC=MPPC.VPOCHA(NLC,1)
  133. RHOC=MPRC.VPOCHA(NLC,1)
  134. UXC=MPVC.VPOCHA(NLC,1)
  135. UYC=MPVC.VPOCHA(NLC,2)
  136. IF(IDIM.EQ.3) UZC=MPVC.VPOCHA(NLC,3)
  137. UNC=(UXC*CNX)+(UYC*CNY)+(UZC*CNZ)
  138. CC=GAMC*PC/RHOC
  139. CC=CC**0.5D0
  140. C Variables à la face
  141. RHOUF=MPLIM.VPOCHA(NLCB,1)
  142. PSRF=MPLIM.VPOCHA(NLCB,2)
  143. UTF=0.0D0
  144. UT2F=0.0D0
  145. C
  146. C******* Variables à l'interface
  147. C
  148. ACEL=CC/GAMC
  149. BCEL=ACEL - UNC
  150. CCEL=(RHOUF / PC) * PSRF
  151. P=BCEL+(((BCEL*BCEL) + (4*ACEL*CCEL))**0.5D0)
  152. P=P/(2*ACEL)
  153. P=P*PC
  154. RHO=P/PSRF
  155. UN=RHOUF/RHO
  156. UT=UTF
  157. UT2=UT2F
  158. C
  159. C******* On calcule U
  160. C
  161. UX=UN*CNX+UT*CTX+UT2*CT2X
  162. UY=UN*CNY+UT*CTY+UT2*CT2Y
  163. UZ=UN*CNZ+UT*CTZ+UT2*CT2Z
  164. C
  165. ECIN=0.5D0*((UX*UX)+(UY*UY)+(UZ*UZ))
  166. C
  167. C******* Densite, vitesse, pression sur le bord
  168. C
  169. MPRLI.VPOCHA(NLCB,1)=RHO
  170. MPRLI.VPOCHA(NLCB,2)=UX
  171. MPRLI.VPOCHA(NLCB,3)=UY
  172. IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZ
  173. MPRLI.VPOCHA(NLCB,IDIM+2)=P
  174. C
  175. C
  176. C******* Residuum (son SPG a le meme ordre que MELEFC)
  177. C
  178. MPRES.VPOCHA(IFAC,1)=RHOUF*SURF/VOLU
  179. MPRES.VPOCHA(IFAC,2)=(RHOUF*UX+P*CNX)*SURF/VOLU
  180. MPRES.VPOCHA(IFAC,3)=(RHOUF*UY+P*CNY)*SURF/VOLU
  181. IF(IDIM.EQ.3)MPRES.VPOCHA(IFAC,4)=(RHOUF*UZ+P*CNZ)*SURF/VOLU
  182. MPRES.VPOCHA(IFAC,IDIM+2)=(RHOUF*((GAMC*USGM1*PSRF)+ECIN))
  183. & *SURF/VOLU
  184. ENDDO
  185. C
  186. SEGDES MELEFC
  187. C
  188. SEGSUP MLEMC
  189. SEGSUP MLEMCB
  190. SEGSUP MLEMF
  191. C
  192. SEGDES MPNORM
  193. SEGDES MPVOL
  194. SEGDES MPSURF
  195. SEGDES MPRC
  196. SEGDES MPPC
  197. SEGDES MPVC
  198. SEGDES MPGAMC
  199. SEGDES MPLIM
  200. SEGDES MPRES
  201. SEGDES MPRLI
  202. C
  203. 9999 CONTINUE
  204. RETURN
  205. END
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  

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