Download cli22r.eso

Back to the list

   1 : C CLI22R    SOURCE    BECC      06/06/06    21:15:01     5459           
   2 :       SUBROUTINE CLI22R(NSP,MELEMF,MELEMC,MELECB,MELEFC,INORM,ICHPVO,
   3 :      &     ICHPSU,LRECP,LRECV,IPC,ICHLIM,ICHRES,ICHRLI)
   4 : C************************************************************************
   5 : C     
   6 : C PROJET            :  CASTEM 2000
   7 : C     
   8 : C NOM               :  CLI22R
   9 : C     
  10 : C DESCRIPTION       :  Subroutine appellée par CLIM22
  11 : C                      calcul de RESIDU et CLIM at the board
  12 : C                      OPTION: 'RESE' 2D, 3D
  13 : C     
  14 : C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  15 : C     
  16 : C AUTEUR            :  A. Beccantini, DEN/DM2S/SFME/LTMF
  17 : C     
  18 : C************************************************************************
  19 : C     
  20 : C APPELES (Calcul)  :
  21 : C     
  22 : C************************************************************************
  23 : C     
  24 : C HISTORIQUE (Anomalies et modifications éventuelles)
  25 : C     
  26 : C HISTORIQUE :
  27 : C     
  28 : C************************************************************************
  29 : C     
  30 : C     We know everything outside
  31 : C
  32 : C     1) PC < PF
  33 : C        Condition de type reservoir
  34 : C
  35 : C     2) PC > PF
  36 : C        We stop the mass flux
  37 : C        We put zero velocity on the wall
  38 : C        We put P = PF at the wall
  39 : C        
  40 :       IMPLICIT INTEGER(I-N)
  41 : -INC CCOPTIO
  42 : -INC SMLMOTS
  43 : -INC SMELEME
  44 :       POINTEUR MELEFC.MELEME
  45 : -INC SMLENTI
  46 :       POINTEUR MLEMC.MLENTI, MLEMCB.MLENTI,MLEMF.MLENTI
  47 : -INC SMCHPOI
  48 :       POINTEUR MPNORM.MPOVAL, MPVOL.MPOVAL, MPSURF.MPOVAL,
  49 :      &     MPPC.MPOVAL, MPLIM.MPOVAL, 
  50 :      &     MPRES.MPOVAL,  MPRLI.MPOVAL
  51 : C----------------------------------------
  52 : C**** Variables de COOPTIO
  53 : C----------------------------------------
  54 : C      INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  55 : C     &        ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
  56 : C     &        ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
  57 : C     &        ,IECHO,   IIMPI,  IOSPI
  58 : C     &        ,IDIM,    IFICLE, IPREFI
  59 : C     &        ,MCOORD
  60 : C     &        ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  61 : C     &        ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  62 : C     &        ,NORINC,NORVAL,NORIND,NORVAD
  63 : C     &        ,NUCROU, IPSAUV
  64 : C     
  65 :       INTEGER MELEMF,MELEMC,MELECB,INORM,ICHPVO,ICHPSU,IPC
  66 :      &     ,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC
  67 :      &     ,NGF,NGC,NLF,NLC,NLCB,LRECP,LRECV,I,NSP
  68 :       REAL*8 VOLU,SURF,PC,CNX,CNY,CNZ
  69 :      &     ,RF,PF,PCR,TOP,BOT
  70 :      &     ,GAMF
  71 :      &     ,UN,RHO,P,UX,UY,UZ
  72 :       CHARACTER*(8) TYPE
  73 : C------------------------------------------------------------
  74 : -INC SMLREEL
  75 :       POINTEUR MLRECP.MLREEL, MLRECV.MLREEL      
  76 : C
  77 : C-------------------------------------------------------------
  78 : C******* Les fractionines massiques **************************
  79 : C-------------------------------------------------------------
  80 :       SEGMENT FRAMAS
  81 :       REAL*8 YET(NSP)
  82 :       ENDSEGMENT
  83 :       POINTEUR YF.FRAMAS
  84 : C------------------------------------------------------
  85 : C**** KRIPAD pour la correspondance global/local
  86 : C------------------------------------------------------
  86 :       CALL KRIPAD(MELEMC,MLEMC)
  86 :       CALL KRIPAD(MELECB,MLEMCB)
  86 :       CALL KRIPAD(MELEMF,MLEMF)
  87 : C------------------------------------------------------
  88 : C**** CHPOINTs de la table DOMAINE
  89 : C------------------------------------------------------
  89 :       CALL LICHT(INORM,MPNORM,TYPE,ICEL)
  89 :       CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
  89 :       CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
  90 : C------------------------------------------------------
  91 : C**** CHPOINTs des variables
  92 : C------------------------------------------------------
  92 :       CALL LICHT(IPC,MPPC,TYPE,ICEL)
  92 :       CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
  92 :       CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
  92 :       CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
  93 : 
  94 : C---------------------------------------------------------
  95 : C**** Boucle sur le face pour le calcul du flux
  96 : C---------------------------------------------------------
  97 :       
  98 :       MLRECV = LRECV
  99 :       MLRECP = LRECP
 100 : 
 101 :       SEGACT MLRECV
 102 :       SEGACT MLRECP
 103 :       SEGACT MELEFC
 104 :       SEGINI YF
 105 : 
 106 :       NFAC=MELEFC.NUM(/2)
 107 :       CNZ=0.0D0
 108 :       DO 1 IFAC=1,NFAC,1
 109 :          NGF=MELEFC.NUM(1,IFAC)
 110 :          NGC=MELEFC.NUM(2,IFAC)
 111 :          NLF=MLEMF.LECT(NGF)
 112 :          NLC=MLEMC.LECT(NGC)
 113 :          NLCB=MLEMCB.LECT(NGF)
 114 :          VOLU=MPVOL.VPOCHA(NLC,1)
 115 :          SURF=MPSURF.VPOCHA(NLF,1)
 116 : C----------------------------------------------
 117 : C        In CASTEM les normales sont sortantes
 118 : C----------------------------------------------
 119 :          CNX=-1*MPNORM.VPOCHA(NLF,1)
 120 :          CNY=-1*MPNORM.VPOCHA(NLF,2)
 121 :          IF(IDIM.EQ.3)THEN
 122 :             CNZ=-1*MPNORM.VPOCHA(NLF,3)
 123 :          ENDIF
 124 : C----------------------------
 125 : C        Variables au centre
 126 : C----------------------------
 127 :          PC=MPPC.VPOCHA(NLC,1)
 128 : C----------------------------
 129 : C        Variables à la face
 130 : C----------------------------
 131 :          RF=MPLIM.VPOCHA(NLCB,1)
 132 :          PF=MPLIM.VPOCHA(NLCB,2)
 133 :          DO 101 I=1,(NSP-1)
 134 :             YF.YET(I)=MPLIM.VPOCHA(NLCB,2+I)
 135 :  101     CONTINUE 
 136 : c-------------------------------------------------------------
 137 : c  Computing GAMMA at the face-center
 138 : c-------------------------------------------------------------
 139 :          top=0.0D0
 140 :          bot=0.0D0
 141 :          do 103  i=1,(nsp-1)
 142 :             top=top+yf.yet(i)*(MLRECP.PROG(i)-MLRECP.PROG(nsp))
 143 :             bot=bot+yf.yet(i)*(MLRECV.PROG(i)-MLRECV.PROG(nsp))
 144 :  103     continue  
 145 :          top=MLRECP.PROG(nsp)+top
 146 :          bot=MLRECV.PROG(nsp)+bot
 147 :          GAMF=top/bot 
 148 : C----------------------------------------
 149 : C******* PCR, P, RHO and UN on the border 
 150 : C----------------------------------------
 151 :          IF(PF .LT. PC)THEN
 152 : C
 153 : C           P_{interface}=PF
 154 : C           \rho_{interface}=RF
 155 : C           U_{interface}=0.0D0
 156 : C           Y_{interface}=YF
 157 : C
 158 :             MPRLI.VPOCHA(NLCB,1)=RF
 159 :             MPRLI.VPOCHA(NLCB,2)=0.0D0
 160 :             MPRLI.VPOCHA(NLCB,3)=0.0D0
 161 :             IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=0.0D0
 162 :             MPRLI.VPOCHA(NLCB,IDIM+2)=PF
 163 :             do 104  i=1,(nsp-1),1
 164 :                MPRLI.VPOCHA(NLCB,IDIM+2+I)=YF.YET(I) 
 165 :  104        continue 
 166 :             MPRES.VPOCHA(IFAC,1)=0.0D0
 167 :             MPRES.VPOCHA(IFAC,2)=(PC*CNX)*SURF/VOLU
 168 :             MPRES.VPOCHA(IFAC,3)=(PC*CNY)*SURF/VOLU
 169 :             IF(IDIM.EQ.3) 
 170 :      &           MPRES.VPOCHA(IFAC,4)=(PC*CNZ)*SURF/VOLU
 171 :             MPRES.VPOCHA(IFAC,IDIM+2)=0.0D0
 172 :             do 105  i=1,(nsp-1),1
 173 :                MPRES.VPOCHA(IFAC,IDIM+2+I)=0.0D0
 174 :  105        continue 
 175 :          ELSE
 176 :             PCR=PF*((2.0D0/(GAMF+1.0D0))**((GAMF/(GAMF-1.0D0))))
 177 :             P=MAX(PCR,PC)
 178 :             RHO=(P/PF)**(1.0D0/GAMF)
 179 :             RHO=RHO*RF
 180 : C
 181 :             UN=(2*GAMF)/(GAMF-1.0D0)
 182 :             UN=UN*((PF/RF)-(P/RHO))
 183 :             UN=MAX(UN,1.0D-16*((P/RHO)*0.5D0))
 184 :             UN=UN**0.5D0
 185 : C
 186 :             UX=UN*CNX
 187 :             UY=UN*CNY
 188 :             UZ=UN*CNZ
 189 : C
 190 :             MPRLI.VPOCHA(NLCB,1)=RHO
 191 :             MPRLI.VPOCHA(NLCB,2)=UX
 192 :             MPRLI.VPOCHA(NLCB,3)=UY
 193 :             IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZ
 194 :             MPRLI.VPOCHA(NLCB,IDIM+2)=P
 195 :             do 106  i=1,(nsp-1),1
 196 :                MPRLI.VPOCHA(NLCB,IDIM+2+I)=YF.YET(I) 
 197 :  106        continue 
 198 : C-------------------------------------------------------
 199 : C******* Residuum (son SPG a le meme ordre que MELEFC)
 200 : C-------------------------------------------------------
 201 :             MPRES.VPOCHA(IFAC,1)=RHO*UN*SURF/VOLU
 202 :             MPRES.VPOCHA(IFAC,2)=(RHO*UN*UX+(P*CNX))*SURF/VOLU
 203 :             MPRES.VPOCHA(IFAC,3)=(RHO*UN*UY+(P*CNY))*SURF/VOLU
 204 :             IF(IDIM.EQ.3) 
 205 :      &           MPRES.VPOCHA(IFAC,4)=(RHO*UN*UZ+(P*CNZ))*SURF/VOLU
 206 :             MPRES.VPOCHA(IFAC,IDIM+2)=((UN*GAMF*P/(GAMF-1.0D0)) + 
 207 :      &           (0.5D0*RHO*UN*UN*UN))*SURF/VOLU
 208 :             do 107  i=1,(nsp-1)
 209 :                MPRES.VPOCHA(IFAC,IDIM+2+I)=RHO*YF.YET(I)*UN*SURF/VOLU 
 210 :  107        continue 
 211 :          ENDIF
 212 :  1    CONTINUE
 213 : C     
 214 :       SEGDES MELEFC
 215 : C     
 216 :       SEGSUP MLEMC
 217 :       SEGSUP MLEMCB
 218 :       SEGSUP MLEMF
 219 :       SEGSUP YF 
 220 : C
 221 : C     
 222 :       SEGDES MPNORM
 223 :       SEGDES MPVOL
 224 :       SEGDES MPSURF
 225 :       SEGDES MPPC
 226 :       SEGDES MPLIM
 227 :       SEGDES MPRES
 228 :       SEGDES MPRLI
 229 :       SEGDES MLRECP
 230 :       SEGDES MLRECV
 231 : C
 232 :  9999 CONTINUE
 233 :       RETURN
 234 :       END
 235 :  
 236 :  
 237 :  

© Cast3M 2003 - All rights reserved.
Disclaimer