1 : C CLI123 SOURCE MAGN 09/07/30 21:15:40 6458 2 : SUBROUTINE CLI123(MELEMF,MELEMC,MELECB,MELEFC,MELRES,INORM,ICHPVO, 3 : & ICHPSU,IROC,IVITC,IPC,IGAMC,ICHLIM,ILIINC,ILIINP,IJAC,IJACO) 4 : C************************************************************************ 5 : C 6 : C PROJET : CASTEM 2000 7 : C 8 : C NOM : CLI123 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 : -INC CCOPTIO 30 : -INC SMLMOTS 31 : -INC SMELEME 32 : POINTEUR MELEFC.MELEME 33 : -INC SMLENTI 34 : POINTEUR MLEMC.MLENTI, MLEMCB.MLENTI,MLEMF.MLENTI 35 : -INC SMCHPOI 36 : POINTEUR MPNORM.MPOVAL, MPVOL.MPOVAL, MPSURF.MPOVAL, MPRC.MPOVAL, 37 : & MPVC.MPOVAL, MPPC.MPOVAL, MPGAMC.MPOVAL, MPLIM.MPOVAL 38 : -INC SMMATRIK 39 : POINTEUR RR.IZAFM, RUX.IZAFM, RUY.IZAFM, RRET.IZAFM, 40 : & UXR.IZAFM, UXUX.IZAFM, UXUY.IZAFM, UXRET.IZAFM, 41 : & UYR.IZAFM, UYUX.IZAFM, UYUY.IZAFM, UYRET.IZAFM, 42 : & RETR.IZAFM, RETUX.IZAFM, RETUY.IZAFM, RETRET.IZAFM, 43 : & RUZ.IZAFM, UXUZ.IZAFM, UYUZ.IZAFM, RETUZ.IZAFM, 44 : & UZR.IZAFM, UZUX.IZAFM, UZUY.IZAFM, UZRET.IZAFM, 45 : & UZUZ.IZAFM 46 : C 47 : C**** Variables de COOPTIO 48 : C 49 : C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR 50 : C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ 51 : C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES 52 : C & ,IECHO, IIMPI, IOSPI 53 : C & ,IDIM, IFICLE, IPREFI 54 : C & ,MCOORD 55 : C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE 56 : C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU 57 : C & ,NORINC,NORVAL,NORIND,NORVAD 58 : C & ,NUCROU, IPSAUV 59 : C 60 : INTEGER MELEMF,MELEMC,MELECB,INORM,ICHPVO,ICHPSU, IROC,IVITC,IPC 61 : & ,IGAMC,ICHLIM,ICEL,NFAC,IFAC,MELRES,IJACO 62 : & ,NGF,NGC,NLF,NLC,NLCB 63 : & ,ILIINC,ILIINP,IJAC 64 : & ,MP, NBEL, NBME, NBSOUS, NKID, NKMT, NMATRI, NP, NRIGE 65 : REAL*8 VOLU,SURF,RC,PC,UXC,UYC,GAMC,CNX,CNY,CTX,CTY 66 : & ,CNZ,CTZ,CT1X,CT1Y,CT1Z,UZC,UZF,UT1C,UT1,UZ 67 : & ,RF,PF,UXF,UYF 68 : & ,UNC,UNF,ASONC,ASONF,ASON 69 : * & ,UTF,SF 70 : & ,UTC,SC 71 : & ,GM1,USGM1,DSGM1,G1,G3,ASON2,S,UT,UN,RHO,P,UX,UY 72 : & ,DUNDG3,DASDG3,DRHDG3,DPDG3,DRHDS,DPDS 73 : & ,DUZDG3,DUZDUT,DUXUT1,DUYUT1,DUZUT1,DFMXU1,DFMYU1,DFMZU1 74 : & ,DFMZG3,DFMZS,DFMZUT,DFEDU1,DG3DUZ,DUTDUZ 75 : & ,DU1DUX,DU1DUY,DU1DUZ,DROUZ,DUXUZ,DUYUZ,DPUZ 76 : & ,DUZRO,DUZUX,DUZUY,DUZUZ,DUZP 77 : * & ,CELL,EPS,CACCA 78 : & ,DUXDG3,DUYDG3,DUXDUT,DUYDUT 79 : & ,DFRDG3,DFRDS,DFMXG3,DFMXS,DFMXUT,DFMYG3,DFMYS,DFMYUT 80 : & ,DFEDG3,DFEDS,DFEDUT 81 : & ,DG3DR,DG3DP,DG3DUX,DG3DUY,DSDR,DSDP,DUTDUX,DUTDUY,COEF 82 : & ,DRORO,DROUX,DROUY,DROP 83 : & ,DUXRO,DUXUX,DUXUY,DUXP 84 : & ,DUYRO,DUYUX,DUYUY,DUYP 85 : & ,DPRO,DPUX,DPUY,DPP 86 : & ,COEF1,COEF2,COEF3,COEF4 87 : CHARACTER*(8) TYPE 88 : C 89 : C 90 : C**** KRIPAD pour la correspondance global/local 91 : C 91 : CALL KRIPAD(MELEMC,MLEMC) 92 : C SEGINI MLEMC 92 : CALL KRIPAD(MELECB,MLEMCB) 93 : C SEGINI MLEMCB 93 : CALL KRIPAD(MELEMF,MLEMF) 94 : C SEGINI MLEMF 95 : C 96 : C**** CHPOINTs de la table DOMAINE 97 : C 97 : CALL LICHT(INORM,MPNORM,TYPE,ICEL) 97 : CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL) 97 : CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL) 98 : C 99 : C**** LICHT active les MPOVALs en *MOD 100 : C 101 : C SEGACT MPNORM*MOD 102 : C SEGACT MPOVSU*MOD 103 : C SEGACT MPOVOL*MOD 104 : C 105 : C 106 : C**** CHPOINTs des variables 107 : C 107 : CALL LICHT(IROC,MPRC,TYPE,ICEL) 107 : CALL LICHT(IVITC,MPVC,TYPE,ICEL) 107 : CALL LICHT(IPC,MPPC,TYPE,ICEL) 107 : CALL LICHT(IGAMC,MPGAMC,TYPE,ICEL) 107 : CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL) 108 : C 109 : C SEGACT *MOD 110 : C SEGACT *MOD 111 : C SEGACT *MOD 112 : C SEGACT *MOD 113 : C SEGACT *MOD 114 : C 115 : C 116 : C**** Boucle sur le face pour le calcul des invariants de 117 : C Riemann et du flux 118 : C 119 : SEGACT MELEFC 120 : NFAC=MELEFC.NUM(/2) 121 : C 122 : C**** Objet MATRIK 123 : C 124 : NRIGE = 7 125 : NMATRI = 1 126 : NKID = 9 127 : NKMT = 7 128 : C 129 : SEGINI MATRIK 130 : IJACO = MATRIK 131 : MATRIK.IRIGEL(1,1) = MELRES 132 : MATRIK.IRIGEL(2,1) = MELRES 133 : C 134 : C**** Matrice non symetrique 135 : C 136 : MATRIK.IRIGEL(7,1) = 2 137 : C 138 : NBME = 25 139 : NBSOUS = 1 140 : SEGINI IMATRI 141 : IF(IJAC.EQ.1)THEN 142 : MLMOTS=ILIINC 143 : ELSEIF(IJAC.EQ.2)THEN 144 : MLMOTS=ILIINP 145 : ENDIF 146 : SEGACT MLMOTS 147 : MATRIK.IRIGEL(4,1) = IMATRI 148 : C 149 : C 150 : IMATRI.LISPRI(1) = MLMOTS.MOTS(1) 151 : IMATRI.LISPRI(2) = MLMOTS.MOTS(2) 152 : IMATRI.LISPRI(3) = MLMOTS.MOTS(3) 153 : IMATRI.LISPRI(4) = MLMOTS.MOTS(4) 154 : IMATRI.LISPRI(5) = MLMOTS.MOTS(5) 155 : C 156 : IMATRI.LISPRI(6) = MLMOTS.MOTS(1) 157 : IMATRI.LISPRI(7) = MLMOTS.MOTS(2) 158 : IMATRI.LISPRI(8) = MLMOTS.MOTS(3) 159 : IMATRI.LISPRI(9) = MLMOTS.MOTS(4) 160 : IMATRI.LISPRI(10) = MLMOTS.MOTS(5) 161 : C 162 : IMATRI.LISPRI(11) = MLMOTS.MOTS(1) 163 : IMATRI.LISPRI(12) = MLMOTS.MOTS(2) 164 : IMATRI.LISPRI(13) = MLMOTS.MOTS(3) 165 : IMATRI.LISPRI(14) = MLMOTS.MOTS(4) 166 : IMATRI.LISPRI(15) = MLMOTS.MOTS(5) 167 : C 168 : IMATRI.LISPRI(16) = MLMOTS.MOTS(1) 169 : IMATRI.LISPRI(17) = MLMOTS.MOTS(2) 170 : IMATRI.LISPRI(18) = MLMOTS.MOTS(3) 171 : IMATRI.LISPRI(19) = MLMOTS.MOTS(4) 172 : IMATRI.LISPRI(20) = MLMOTS.MOTS(5) 173 : C 174 : IMATRI.LISPRI(21) = MLMOTS.MOTS(1) 175 : IMATRI.LISPRI(22) = MLMOTS.MOTS(2) 176 : IMATRI.LISPRI(23) = MLMOTS.MOTS(3) 177 : IMATRI.LISPRI(24) = MLMOTS.MOTS(4) 178 : IMATRI.LISPRI(25) = MLMOTS.MOTS(5) 179 : C 180 : SEGDES MLMOTS 181 : MLMOTS=ILIINC 182 : SEGACT MLMOTS 183 : C 184 : IMATRI.LISDUA(1) = MLMOTS.MOTS(1) 185 : IMATRI.LISDUA(2) = MLMOTS.MOTS(1) 186 : IMATRI.LISDUA(3) = MLMOTS.MOTS(1) 187 : IMATRI.LISDUA(4) = MLMOTS.MOTS(1) 188 : IMATRI.LISDUA(5) = MLMOTS.MOTS(1) 189 : C 190 : IMATRI.LISDUA(6) = MLMOTS.MOTS(2) 191 : IMATRI.LISDUA(7) = MLMOTS.MOTS(2) 192 : IMATRI.LISDUA(8) = MLMOTS.MOTS(2) 193 : IMATRI.LISDUA(9) = MLMOTS.MOTS(2) 194 : IMATRI.LISDUA(10) = MLMOTS.MOTS(2) 195 : C 196 : IMATRI.LISDUA(11) = MLMOTS.MOTS(3) 197 : IMATRI.LISDUA(12) = MLMOTS.MOTS(3) 198 : IMATRI.LISDUA(13) = MLMOTS.MOTS(3) 199 : IMATRI.LISDUA(14) = MLMOTS.MOTS(3) 200 : IMATRI.LISDUA(15) = MLMOTS.MOTS(3) 201 : C 202 : IMATRI.LISDUA(16) = MLMOTS.MOTS(4) 203 : IMATRI.LISDUA(17) = MLMOTS.MOTS(4) 204 : IMATRI.LISDUA(18) = MLMOTS.MOTS(4) 205 : IMATRI.LISDUA(19) = MLMOTS.MOTS(4) 206 : IMATRI.LISDUA(20) = MLMOTS.MOTS(4) 207 : C 208 : IMATRI.LISDUA(21) = MLMOTS.MOTS(5) 209 : IMATRI.LISDUA(22) = MLMOTS.MOTS(5) 210 : IMATRI.LISDUA(23) = MLMOTS.MOTS(5) 211 : IMATRI.LISDUA(24) = MLMOTS.MOTS(5) 212 : IMATRI.LISDUA(25) = MLMOTS.MOTS(5) 213 : C 214 : SEGDES MLMOTS 215 : NBEL = NFAC 216 : NBSOUS = 1 217 : NP = 1 218 : MP = 1 219 : SEGINI RR , RUX , RUY , RUZ ,RRET , 220 : & UXR , UXUX , UXUY , UXUZ ,UXRET , 221 : & UYR , UYUX , UYUY , UYUZ , UYRET , 222 : & UZR , UZUX , UZUY , UZUZ , UZRET , 223 : & RETR , RETUX , RETUY, RETUZ , RETRET 224 : C 225 : C**** Duale = IMATRI.LISDUA(1) = 'RN' 226 : C Primale = IMATRI.LISPRI(1) = 'RN' 227 : C -> IMATRI.LIZAFM(1,1) = RR 228 : C 229 : IMATRI.LIZAFM(1,1) = RR 230 : IMATRI.LIZAFM(1,2) = RUX 231 : IMATRI.LIZAFM(1,3) = RUY 232 : IMATRI.LIZAFM(1,4) = RUZ 233 : IMATRI.LIZAFM(1,5) = RRET 234 : C 235 : IMATRI.LIZAFM(1,6) = UXR 236 : IMATRI.LIZAFM(1,7) = UXUX 237 : IMATRI.LIZAFM(1,8) = UXUY 238 : IMATRI.LIZAFM(1,9) = UXUZ 239 : IMATRI.LIZAFM(1,10) = UXRET 240 : C 241 : IMATRI.LIZAFM(1,11) = UYR 242 : IMATRI.LIZAFM(1,12) = UYUX 243 : IMATRI.LIZAFM(1,13) = UYUY 244 : IMATRI.LIZAFM(1,14) = UYUZ 245 : IMATRI.LIZAFM(1,15) = UYRET 246 : C 247 : IMATRI.LIZAFM(1,16) = UZR 248 : IMATRI.LIZAFM(1,17) = UZUX 249 : IMATRI.LIZAFM(1,18) = UZUY 250 : IMATRI.LIZAFM(1,19) = UZUZ 251 : IMATRI.LIZAFM(1,20) = UZRET 252 : C 253 : IMATRI.LIZAFM(1,21) = RETR 254 : IMATRI.LIZAFM(1,22) = RETUX 255 : IMATRI.LIZAFM(1,23) = RETUY 256 : IMATRI.LIZAFM(1,24) = RETUZ 257 : IMATRI.LIZAFM(1,25) = RETRET 258 : C 259 : SEGDES MATRIK 260 : SEGDES IMATRI 261 : C 262 : C**** Fin definition MATRIK 263 : C 264 : DO IFAC=1,NFAC,1 265 : NGF=MELEFC.NUM(1,IFAC) 266 : NGC=MELEFC.NUM(2,IFAC) 267 : NLF=MLEMF.LECT(NGF) 268 : NLC=MLEMC.LECT(NGC) 269 : NLCB=MLEMCB.LECT(NGF) 270 : VOLU=MPVOL.VPOCHA(NLC,1) 271 : SURF=MPSURF.VPOCHA(NLF,1) 272 : C In CASTEM les normales sont sortantes 273 : CNX=MPNORM.VPOCHA(NLF,1) 274 : CNY=MPNORM.VPOCHA(NLF,2) 275 : CNZ=MPNORM.VPOCHA(NLF,3) 276 : CTX=MPNORM.VPOCHA(NLF,4) 277 : CTY=MPNORM.VPOCHA(NLF,5) 278 : CTZ=MPNORM.VPOCHA(NLF,6) 279 : CT1X=MPNORM.VPOCHA(NLF,7) 280 : CT1Y=MPNORM.VPOCHA(NLF,8) 281 : CT1Z=MPNORM.VPOCHA(NLF,9) 282 : C Variables au centre 283 : RC=MPRC.VPOCHA(NLC,1) 284 : PC=MPPC.VPOCHA(NLC,1) 285 : UXC=MPVC.VPOCHA(NLC,1) 286 : UYC=MPVC.VPOCHA(NLC,2) 287 : UZC=MPVC.VPOCHA(NLC,3) 288 : GAMC=MPGAMC.VPOCHA(NLC,1) 289 : C Variables à la face 290 : RF=MPLIM.VPOCHA(NLCB,1) 291 : UXF=MPLIM.VPOCHA(NLCB,2) 292 : UYF=MPLIM.VPOCHA(NLCB,3) 293 : UZF=MPLIM.VPOCHA(NLCB,4) 294 : PF=MPLIM.VPOCHA(NLCB,IDIM+2) 295 : C 296 : C******* On calcule UN, UT ASON, S 297 : C 298 : UNC=(UXC*CNX)+(UYC*CNY)+(UZC*CNZ) 299 : UTC=(UXC*CTX)+(UYC*CTY)+(UZC*CTZ) 300 : UT1C=(UXC*CT1X)+(UYC*CT1Y)+(UZC*CT1Z) 301 : UNF=(UXF*CNX)+(UYF*CNY)+(UZF*CNZ) 302 : C 303 : ASONC=(GAMC*PC/RC)**0.5D0 304 : ASONF=(GAMC*PF/RF)**0.5D0 305 : C 306 : SC=PC/(RC**GAMC) 307 : C SF=PF/(RF**GAMC) 308 : C 309 : C******* Densite, vitesse, pression sur le bord 310 : C 311 : GM1=(GAMC-1.0D0) 312 : USGM1=1.0D0/GM1 313 : DSGM1=2.0D0*USGM1 314 : G1=UNF-(DSGM1*ASONF) 315 : G3=UNC+(DSGM1*ASONC) 316 : UN=0.5D0*(G1+G3) 317 : ASON=(0.5D0*(G3-G1)) 318 : ASON=ASON/DSGM1 319 : ASON2=ASON*ASON 320 : S=SC 321 : UT=UTC 322 : UT1=UT1C 323 : RHO=ASON2/(GAMC*S) 324 : RHO=RHO**USGM1 325 : P=RHO*ASON2/GAMC 326 : UX=(UN*CNX)+(UT*CTX)+(UT1*CT1X) 327 : UY=(UN*CNY)+(UT*CTY)+(UT1*CT1Y) 328 : UZ=(UN*CNZ)+(UT*CTZ)+(UT1*CT1Z) 329 : C 330 : C******* Derivatives 331 : C 332 : DUNDG3=0.5D0 333 : DASDG3=0.5D0/DSGM1 334 : DRHDG3=GAMC*S 335 : DRHDG3=1.0D0/DRHDG3 336 : DRHDG3=DRHDG3**USGM1 337 : DRHDG3=DRHDG3*DSGM1 338 : DRHDG3=DRHDG3*(ASON**((3.0D0-GAMC)/(GAMC-1.0D0))) 339 : DRHDG3=DRHDG3*DASDG3 340 : DRHDS=-1.0D0*USGM1*RHO/S 341 : DPDG3=((ASON2/GAMC)*DRHDG3)+(((2*ASON*RHO)/GAMC)*DASDG3) 342 : DPDS=(ASON2/GAMC)*DRHDS 343 : CC 344 : CC******* Test 345 : CC 346 : CC ...DG3 347 : C EPS=1.0D-6 348 : C G3=G3*(1+EPS) 349 : C CELL=UN 350 : C UN=0.5D0*(G1+G3) 351 : C write(*,*) DUNDG3, ((UN - CELL)/(EPS*G3)) 352 : C CELL=ASON 353 : C ASON=(0.5D0*(G3-G1)) 354 : C ASON=ASON/DSGM1 355 : C write(*,*) DASDG3, ((ASON - CELL)/(EPS*G3)) 356 : C ASON2=ASON*ASON 357 : C S=SC 358 : C UT=UTC 359 : C CELL=RHO 360 : C RHO=ASON2/(GAMC*S) 361 : C RHO=RHO**USGM1 362 : C write(*,*) DRHDG3, ((RHO - CELL)/(EPS*G3)) 363 : C CELL=P 364 : C P=RHO*ASON2/GAMC 365 : C write(*,*) DPDG3, ((P - CELL)/(EPS*G3)) 366 : CC 367 : CC******* Test 368 : CC 369 : CC ...DS 370 : C EPS=1.0D-6 371 : C S=S*(1+EPS) 372 : C CELL=RHO 373 : C RHO=ASON2/(GAMC*S) 374 : C RHO=RHO**USGM1 375 : C write(*,*) DRHDS, ((RHO - CELL)/(EPS*S)) 376 : C CELL=P 377 : C P=RHO*ASON2/GAMC 378 : C write(*,*) DPDS, ((P - CELL)/(EPS*S)) 379 : CC 380 : CC************************************************************ 381 : CC 382 : DUXDG3=DUNDG3*CNX 383 : DUYDG3=DUNDG3*CNY 384 : DUZDG3=DUNDG3*CNZ 385 : DUXDUT=CTX 386 : DUYDUT=CTY 387 : DUZDUT=CTZ 388 : DUXUT1=CT1X 389 : DUYUT1=CT1Y 390 : DUZUT1=CT1Z 391 : C 392 : DFRDG3=(DRHDG3*UN)+(RHO*DUNDG3) 393 : DFRDS=(DRHDS*UN) 394 : DFMXG3=(DRHDG3*UN*UX)+(RHO*DUNDG3*UX)+ 395 : & (RHO*UN*DUXDG3)+(DPDG3*CNX) 396 : DFMXS=(DRHDS*UN*UX)+(DPDS*CNX) 397 : DFMXUT=(RHO*UN*DUXDUT) 398 : DFMXU1=(RHO*UN*DUXUT1) 399 : DFMYG3=(DRHDG3*UN*UY)+(RHO*DUNDG3*UY)+ 400 : & (RHO*UN*DUYDG3)+(DPDG3*CNY) 401 : DFMYS=(DRHDS*UN*UY)+(DPDS*CNY) 402 : DFMYUT=(RHO*UN*DUYDUT) 403 : DFMYU1=(RHO*UN*DUYUT1) 404 : DFMZG3=(DRHDG3*UN*UZ)+(RHO*DUNDG3*UZ)+ 405 : & (RHO*UN*DUZDG3)+(DPDG3*CNZ) 406 : DFMZS=(DRHDS*UN*UZ)+(DPDS*CNZ) 407 : DFMZUT=(RHO*UN*DUZDUT) 408 : DFMZU1=(RHO*UN*DUZUT1) 409 : DFEDG3=(DUNDG3*GAMC*USGM1*P) + (UN*GAMC*USGM1*DPDG3) + 410 : & (0.5D0*DRHDG3*UN*((UN*UN)+(UT*UT)+(UT1*UT1))) + 411 : & (0.5D0*RHO*DUNDG3*((UN*UN)+(UT*UT)+(UT1*UT1))) + 412 : & (RHO*UN*UN*DUNDG3) 413 : DFEDS=(UN*GAMC*USGM1*DPDS) + 414 : & (0.5D0*DRHDS*UN*((UN*UN)+(UT*UT)+(UT1*UT1))) 415 : DFEDUT=RHO*UN*UT 416 : DFEDU1=RHO*UN*UT1 417 : C 418 : C******* Jacobian with respect to primitive variables 419 : C 420 : DG3DR=-1*USGM1*ASONC/RC 421 : DG3DP=USGM1*ASONC/PC 422 : DG3DUX=CNX 423 : DG3DUY=CNY 424 : DG3DUZ=CNZ 425 : DSDR=-1*GAMC*S/RC 426 : DSDP=S/PC 427 : DUTDUX=CTX 428 : DUTDUY=CTY 429 : DUTDUZ=CTZ 430 : DU1DUX=CT1X 431 : DU1DUY=CT1Y 432 : DU1DUZ=CT1Z 433 : C 434 : COEF=-1*SURF/VOLU 435 : C 436 : DRORO=((DFRDG3*DG3DR)+(DFRDS*DSDR))*COEF 437 : DROUX=(DFRDG3*DG3DUX)*COEF 438 : DROUY=(DFRDG3*DG3DUY)*COEF 439 : DROUZ=(DFRDG3*DG3DUZ)*COEF 440 : DROP=((DFRDG3*DG3DP)+(DFRDS*DSDP))*COEF 441 : C 442 : DUXRO=((DFMXG3*DG3DR)+(DFMXS*DSDR))*COEF 443 : DUXUX=((DFMXG3*DG3DUX)+(DFMXUT*DUTDUX)+(DFMXU1*DU1DUX))*COEF 444 : DUXUY=((DFMXG3*DG3DUY)+(DFMXUT*DUTDUY)+(DFMXU1*DU1DUY))*COEF 445 : DUXUZ=((DFMXG3*DG3DUZ)+(DFMXUT*DUTDUZ)+(DFMXU1*DU1DUZ))*COEF 446 : DUXP=((DFMXG3*DG3DP)+(DFMXS*DSDP))*COEF 447 : C 448 : DUYRO=((DFMYG3*DG3DR)+(DFMYS*DSDR))*COEF 449 : DUYUX=((DFMYG3*DG3DUX)+(DFMYUT*DUTDUX)+(DFMYU1*DU1DUX))*COEF 450 : DUYUY=((DFMYG3*DG3DUY)+(DFMYUT*DUTDUY)+(DFMYU1*DU1DUY))*COEF 451 : DUYUZ=((DFMYG3*DG3DUZ)+(DFMYUT*DUTDUZ)+(DFMYU1*DU1DUZ))*COEF 452 : DUYP=((DFMYG3*DG3DP)+(DFMYS*DSDP))*COEF 453 : C 454 : DUZRO=((DFMZG3*DG3DR)+(DFMZS*DSDR))*COEF 455 : DUZUX=((DFMZG3*DG3DUX)+(DFMZUT*DUTDUX)+(DFMZU1*DU1DUX))*COEF 456 : DUZUY=((DFMZG3*DG3DUY)+(DFMZUT*DUTDUY)+(DFMZU1*DU1DUY))*COEF 457 : DUZUZ=((DFMZG3*DG3DUZ)+(DFMZUT*DUTDUZ)+(DFMZU1*DU1DUZ))*COEF 458 : DUZP=((DFMZG3*DG3DP)+(DFMZS*DSDP))*COEF 459 : CC 460 : DPRO=((DFEDG3*DG3DR)+(DFEDS*DSDR))*COEF 461 : DPUX=((DFEDG3*DG3DUX)+(DFEDUT*DUTDUX)+(DFEDU1*DU1DUX))*COEF 462 : DPUY=((DFEDG3*DG3DUY)+(DFEDUT*DUTDUY)+(DFEDU1*DU1DUY))*COEF 463 : DPUZ=((DFEDG3*DG3DUZ)+(DFEDUT*DUTDUZ)+(DFEDU1*DU1DUZ))*COEF 464 : DPP=((DFEDG3*DG3DP)+(DFEDS*DSDP))*COEF 465 : CC 466 : CC******* Jacobian with respect to conservative variables 467 : CC 468 : IF(IJAC.EQ.1)THEN 469 : COEF1=-1.0D0*UXC/RC 470 : COEF2=-1.0D0*UYC/RC 471 : COEF3=-1.0D0*UZC/RC 472 : COEF4=0.5D0*GM1*((UXC*UXC)+(UYC*UYC)+(UZC*UZC)) 473 : C 474 : RR.AM(IFAC,1,1)=DRORO+(DROUX*COEF1)+(DROUY*COEF2)+(DROUZ 475 : $ *COEF3)+(DROP*COEF4) 476 : RUX.AM(IFAC,1,1)=(DROUX/RC)-((UXC*GM1)*DROP) 477 : RUY.AM(IFAC,1,1)=(DROUY/RC)-((UYC*GM1)*DROP) 478 : RUZ.AM(IFAC,1,1)=(DROUZ/RC)-((UZC*GM1)*DROP) 479 : RRET.AM(IFAC,1,1)=GM1*DROP 480 : C 481 : UXR.AM(IFAC,1,1)=DUXRO+(DUXUX*COEF1)+(DUXUY*COEF2)+(DUXUZ 482 : $ *COEF3)+(DUXP*COEF4) 483 : UXUX.AM(IFAC,1,1)=(DUXUX/RC)-((UXC*GM1)*DUXP) 484 : UXUY.AM(IFAC,1,1)=(DUXUY/RC)-((UYC*GM1)*DUXP) 485 : UXUZ.AM(IFAC,1,1)=(DUXUZ/RC)-((UZC*GM1)*DUXP) 486 : UXRET.AM(IFAC,1,1)=GM1*DUXP 487 : C 488 : UYR.AM(IFAC,1,1)=DUYRO+(DUYUX*COEF1)+(DUYUY*COEF2)+(DUYUZ 489 : $ *COEF3)+(DUYP*COEF4) 490 : UYUX.AM(IFAC,1,1)=(DUYUX/RC)-((UXC*GM1)*DUYP) 491 : UYUY.AM(IFAC,1,1)=(DUYUY/RC)-((UYC*GM1)*DUYP) 492 : UYUZ.AM(IFAC,1,1)=(DUYUZ/RC)-((UZC*GM1)*DUYP) 493 : UYRET.AM(IFAC,1,1)=GM1*DUYP 494 : C 495 : UZR.AM(IFAC,1,1)=DUZRO+(DUZUX*COEF1)+(DUZUY*COEF2)+(DUZUZ 496 : $ *COEF3)+(DUZP*COEF4) 497 : UZUX.AM(IFAC,1,1)=(DUZUX/RC)-((UXC*GM1)*DUZP) 498 : UZUY.AM(IFAC,1,1)=(DUZUY/RC)-((UYC*GM1)*DUZP) 499 : UZUZ.AM(IFAC,1,1)=(DUZUZ/RC)-((UZC*GM1)*DUZP) 500 : UZRET.AM(IFAC,1,1)=GM1*DUZP 501 : C 502 : RETR.AM(IFAC,1,1)=DPRO+(DPUX*COEF1)+(DPUY*COEF2)+(DPUZ 503 : $ *COEF3)+(DPP*COEF4) 504 : RETUX.AM(IFAC,1,1)=(DPUX/RC)-((UXC*GM1)*DPP) 505 : RETUY.AM(IFAC,1,1)=(DPUY/RC)-((UYC*GM1)*DPP) 506 : RETUZ.AM(IFAC,1,1)=(DPUZ/RC)-((UZC*GM1)*DPP) 507 : RETRET.AM(IFAC,1,1)=GM1*DPP 508 : C 509 : ELSEIF(IJAC.EQ.2)THEN 510 : RR.AM(IFAC,1,1)=DRORO 511 : RUX.AM(IFAC,1,1)=DROUX 512 : RUY.AM(IFAC,1,1)=DROUY 513 : RUZ.AM(IFAC,1,1)=DROUZ 514 : RRET.AM(IFAC,1,1)=DROP 515 : C 516 : UXR.AM(IFAC,1,1)=DUXRO 517 : UXUX.AM(IFAC,1,1)=DUXUX 518 : UXUY.AM(IFAC,1,1)=DUXUY 519 : UXUZ.AM(IFAC,1,1)=DUXUZ 520 : UXRET.AM(IFAC,1,1)=DUXP 521 : C 522 : UYR.AM(IFAC,1,1)=DUYRO 523 : UYUX.AM(IFAC,1,1)=DUYUX 524 : UYUY.AM(IFAC,1,1)=DUYUY 525 : UYUZ.AM(IFAC,1,1)=DUYUZ 526 : UYRET.AM(IFAC,1,1)=DUYP 527 : C 528 : UZR.AM(IFAC,1,1)=DUZRO 529 : UZUX.AM(IFAC,1,1)=DUZUX 530 : UZUY.AM(IFAC,1,1)=DUZUY 531 : UZUZ.AM(IFAC,1,1)=DUZUZ 532 : UZRET.AM(IFAC,1,1)=DUZP 533 : C 534 : RETR.AM(IFAC,1,1)=DPRO 535 : RETUX.AM(IFAC,1,1)=DPUX 536 : RETUY.AM(IFAC,1,1)=DPUY 537 : RETUZ.AM(IFAC,1,1)=DPUZ 538 : RETRET.AM(IFAC,1,1)=DPP 539 : ENDIF 540 : ENDDO 541 : C 542 : SEGDES MELEFC 543 : C 544 : SEGSUP MLEMC 545 : SEGSUP MLEMCB 546 : SEGSUP MLEMF 547 : C 548 : SEGDES MPNORM 549 : SEGDES MPVOL 550 : SEGDES MPSURF 551 : SEGDES MPRC 552 : SEGDES MPPC 553 : SEGDES MPVC 554 : SEGDES MPGAMC 555 : SEGDES MPLIM 556 : C 557 : SEGDES RR , RUX , RUY , RUZ ,RRET , 558 : & UXR , UXUX , UXUY , UXUZ ,UXRET , 559 : & UYR , UYUX , UYUY , UYUZ , UYRET , 560 : & UZR , UZUX , UZUY , UZUZ , UZRET , 561 : & RETR , RETUX , RETUY, RETUZ , RETRET 562 : C 563 : 9999 CONTINUE 564 : RETURN 565 : END 566 : 567 : 568 : 569 : 570 : 571 : 572 : 573 : 574 :
© Cast3M 2003 - All rights reserved.
Disclaimer