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