Download cli123.eso

Back to the list

   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