Download cli113.eso

Back to the list

   1 : C CLI113    SOURCE    MAGN      09/07/30    21:15:35     6458           
   2 :       SUBROUTINE CLI113(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               :  CLI113
   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,UT1F,UT1,UZ
  67 :      &     ,DUZDG1,DFMZG1,DG1DUZ,DROUZ,DUXUZ,DUYUZ,DPUZ
  68 :      &     ,DUZRO,DUZUX,DUZUY,DUZUZ,DUZP
  69 :      &     ,RF,PF,UXF,UYF
  70 :      &     ,UNC,UNF,UTF,SF,ASONC,ASONF,ASON
  71 : *     &     ,UTC,SC
  72 :      &     ,GM1,USGM1,DSGM1,G1,G3,ASON2,S,UT,UN,RHO,P,UX,UY
  73 :      &     ,DUNDG1,DASDG1,DRHDG1,DPDG1,DUXDG1,DUYDG1
  74 : *     &     ,CELL,EPS,CACCA
  75 :      &     ,DFRDG1,DFMXG1,DFMYG1,DFEDG1
  76 :      &     ,DG1DR,DG1DP,DG1DUX,DG1DUY,COEF
  77 :      &     ,DRORO,DROUX,DROUY,DROP
  78 :      &     ,DUXRO,DUXUX,DUXUY,DUXP
  79 :      &     ,DUYRO,DUYUX,DUYUY,DUYP
  80 :      &     ,DPRO,DPUX,DPUY,DPP
  81 :      &     ,COEF1,COEF2,COEF3,COEF4
  82 :       CHARACTER*(8) TYPE
  83 : C
  84 : C
  85 : C**** KRIPAD pour la correspondance global/local
  86 : C
  86 :       CALL KRIPAD(MELEMC,MLEMC)
  87 : C     SEGINI MLEMC 
  87 :       CALL KRIPAD(MELECB,MLEMCB)
  88 : C     SEGINI MLEMCB
  88 :       CALL KRIPAD(MELEMF,MLEMF)
  89 : C     SEGINI MLEMF
  90 : C
  91 : C**** CHPOINTs de la table DOMAINE
  92 : C
  92 :       CALL LICHT(INORM,MPNORM,TYPE,ICEL)
  92 :       CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
  92 :       CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
  93 : C
  94 : C**** LICHT active les MPOVALs en *MOD
  95 : C
  96 : C     SEGACT MPNORM*MOD
  97 : C     SEGACT MPOVSU*MOD
  98 : C     SEGACT MPOVOL*MOD
  99 : C
 100 : C
 101 : C**** CHPOINTs des variables
 102 : C
 102 :       CALL LICHT(IROC,MPRC,TYPE,ICEL)
 102 :       CALL LICHT(IVITC,MPVC,TYPE,ICEL)
 102 :       CALL LICHT(IPC,MPPC,TYPE,ICEL)
 102 :       CALL LICHT(IGAMC,MPGAMC,TYPE,ICEL)
 102 :       CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
 103 : C
 104 : C     SEGACT *MOD
 105 : C     SEGACT *MOD
 106 : C     SEGACT *MOD
 107 : C     SEGACT *MOD
 108 : C     SEGACT *MOD
 109 : C
 110 : C
 111 : C**** Boucle sur le face pour le calcul des invariants de
 112 : C     Riemann et du flux
 113 : C
 114 :       SEGACT MELEFC
 115 :       NFAC=MELEFC.NUM(/2)
 116 : C
 117 : C**** Objet MATRIK
 118 : C
 119 :       NRIGE = 7
 120 :       NMATRI = 1
 121 :       NKID = 9
 122 :       NKMT = 7
 123 : C
 124 :       SEGINI MATRIK
 125 :       IJACO = MATRIK
 126 :       MATRIK.IRIGEL(1,1) = MELRES
 127 :       MATRIK.IRIGEL(2,1) = MELRES
 128 : C
 129 : C**** Matrice non symetrique
 130 : C
 131 :       MATRIK.IRIGEL(7,1) = 2
 132 : C
 133 :       NBME = 25
 134 :       NBSOUS = 1
 135 :       SEGINI IMATRI
 136 :       IF(IJAC.EQ.1)THEN
 137 :          MLMOTS=ILIINC
 138 :       ELSEIF(IJAC.EQ.2)THEN
 139 :          MLMOTS=ILIINP
 140 :       ENDIF
 141 :       SEGACT MLMOTS
 142 :       MATRIK.IRIGEL(4,1) = IMATRI
 143 : C
 144 :       IMATRI.LISPRI(1) = MLMOTS.MOTS(1)
 145 :       IMATRI.LISPRI(2) = MLMOTS.MOTS(2)
 146 :       IMATRI.LISPRI(3) = MLMOTS.MOTS(3)
 147 :       IMATRI.LISPRI(4) = MLMOTS.MOTS(4)
 148 :       IMATRI.LISPRI(5) = MLMOTS.MOTS(5)
 149 : C
 150 :       IMATRI.LISPRI(6) = MLMOTS.MOTS(1)
 151 :       IMATRI.LISPRI(7) = MLMOTS.MOTS(2)
 152 :       IMATRI.LISPRI(8) = MLMOTS.MOTS(3)
 153 :       IMATRI.LISPRI(9) = MLMOTS.MOTS(4)
 154 :       IMATRI.LISPRI(10) = MLMOTS.MOTS(5)
 155 : C
 156 :       IMATRI.LISPRI(11) = MLMOTS.MOTS(1)
 157 :       IMATRI.LISPRI(12) = MLMOTS.MOTS(2)
 158 :       IMATRI.LISPRI(13) = MLMOTS.MOTS(3)
 159 :       IMATRI.LISPRI(14) = MLMOTS.MOTS(4)
 160 :       IMATRI.LISPRI(15) = MLMOTS.MOTS(5)
 161 : C
 162 :       IMATRI.LISPRI(16) = MLMOTS.MOTS(1)
 163 :       IMATRI.LISPRI(17) = MLMOTS.MOTS(2)
 164 :       IMATRI.LISPRI(18) = MLMOTS.MOTS(3)
 165 :       IMATRI.LISPRI(19) = MLMOTS.MOTS(4)
 166 :       IMATRI.LISPRI(20) = MLMOTS.MOTS(5)
 167 : C
 168 :       IMATRI.LISPRI(21) = MLMOTS.MOTS(1)
 169 :       IMATRI.LISPRI(22) = MLMOTS.MOTS(2)
 170 :       IMATRI.LISPRI(23) = MLMOTS.MOTS(3)
 171 :       IMATRI.LISPRI(24) = MLMOTS.MOTS(4)
 172 :       IMATRI.LISPRI(25) = MLMOTS.MOTS(5)
 173 : C
 174 :       SEGDES MLMOTS
 175 :       MLMOTS=ILIINC
 176 :       SEGACT MLMOTS
 177 : C
 178 :       IMATRI.LISDUA(1) = MLMOTS.MOTS(1)
 179 :       IMATRI.LISDUA(2) = MLMOTS.MOTS(1)
 180 :       IMATRI.LISDUA(3) = MLMOTS.MOTS(1)
 181 :       IMATRI.LISDUA(4) = MLMOTS.MOTS(1)
 182 :       IMATRI.LISDUA(5) = MLMOTS.MOTS(1)
 183 : C
 184 :       IMATRI.LISDUA(6) = MLMOTS.MOTS(2)
 185 :       IMATRI.LISDUA(7) = MLMOTS.MOTS(2)
 186 :       IMATRI.LISDUA(8) = MLMOTS.MOTS(2)
 187 :       IMATRI.LISDUA(9) = MLMOTS.MOTS(2)
 188 :       IMATRI.LISDUA(10) = MLMOTS.MOTS(2)
 189 : C
 190 :       IMATRI.LISDUA(11) = MLMOTS.MOTS(3)
 191 :       IMATRI.LISDUA(12) = MLMOTS.MOTS(3)
 192 :       IMATRI.LISDUA(13) = MLMOTS.MOTS(3)
 193 :       IMATRI.LISDUA(14) = MLMOTS.MOTS(3)
 194 :       IMATRI.LISDUA(15) = MLMOTS.MOTS(3)
 195 : C
 196 :       IMATRI.LISDUA(16) = MLMOTS.MOTS(4)
 197 :       IMATRI.LISDUA(17) = MLMOTS.MOTS(4)
 198 :       IMATRI.LISDUA(18) = MLMOTS.MOTS(4)
 199 :       IMATRI.LISDUA(19) = MLMOTS.MOTS(4)
 200 :       IMATRI.LISDUA(20) = MLMOTS.MOTS(4)
 201 : C
 202 :       IMATRI.LISDUA(21) = MLMOTS.MOTS(5)
 203 :       IMATRI.LISDUA(22) = MLMOTS.MOTS(5)
 204 :       IMATRI.LISDUA(23) = MLMOTS.MOTS(5)
 205 :       IMATRI.LISDUA(24) = MLMOTS.MOTS(5)
 206 :       IMATRI.LISDUA(25) = MLMOTS.MOTS(5)
 207 : C
 208 :       SEGDES MLMOTS
 209 :       NBEL = NFAC
 210 :       NBSOUS = 1
 211 :       NP = 1
 212 :       MP = 1
 213 :       SEGINI   RR  , RUX , RUY , RUZ ,RRET ,
 214 :      &         UXR , UXUX , UXUY , UXUZ ,UXRET ,
 215 :      &         UYR , UYUX , UYUY , UYUZ , UYRET ,
 216 :      &         UZR , UZUX , UZUY , UZUZ , UZRET ,
 217 :      &         RETR , RETUX , RETUY, RETUZ , RETRET 
 218 : C
 219 : C**** Duale = IMATRI.LISDUA(1) = 'RN'
 220 : C     Primale = IMATRI.LISPRI(1) = 'RN'
 221 : C     -> IMATRI.LIZAFM(1,1) = RR
 222 : C
 223 :       IMATRI.LIZAFM(1,1) = RR
 224 :       IMATRI.LIZAFM(1,2) = RUX
 225 :       IMATRI.LIZAFM(1,3) = RUY
 226 :       IMATRI.LIZAFM(1,4) = RUZ
 227 :       IMATRI.LIZAFM(1,5) = RRET
 228 : C
 229 :       IMATRI.LIZAFM(1,6) = UXR
 230 :       IMATRI.LIZAFM(1,7) = UXUX
 231 :       IMATRI.LIZAFM(1,8) = UXUY
 232 :       IMATRI.LIZAFM(1,9) = UXUZ
 233 :       IMATRI.LIZAFM(1,10) = UXRET
 234 : C
 235 :       IMATRI.LIZAFM(1,11) = UYR
 236 :       IMATRI.LIZAFM(1,12) = UYUX
 237 :       IMATRI.LIZAFM(1,13) = UYUY
 238 :       IMATRI.LIZAFM(1,14) = UYUZ
 239 :       IMATRI.LIZAFM(1,15) = UYRET
 240 : C
 241 :       IMATRI.LIZAFM(1,16) = UZR
 242 :       IMATRI.LIZAFM(1,17) = UZUX
 243 :       IMATRI.LIZAFM(1,18) = UZUY
 244 :       IMATRI.LIZAFM(1,19) = UZUZ
 245 :       IMATRI.LIZAFM(1,20) = UZRET
 246 : C
 247 :       IMATRI.LIZAFM(1,21) = RETR
 248 :       IMATRI.LIZAFM(1,22) = RETUX
 249 :       IMATRI.LIZAFM(1,23) = RETUY
 250 :       IMATRI.LIZAFM(1,24) = RETUZ
 251 :       IMATRI.LIZAFM(1,25) = RETRET
 252 : C
 253 :       SEGDES MATRIK
 254 :       SEGDES IMATRI
 255 : C
 256 : C**** Fin definition MATRIK
 257 : C
 258 :       DO IFAC=1,NFAC,1
 259 :          NGF=MELEFC.NUM(1,IFAC)
 260 :          NGC=MELEFC.NUM(2,IFAC)
 261 :          NLF=MLEMF.LECT(NGF)
 262 :          NLC=MLEMC.LECT(NGC)
 263 :          NLCB=MLEMCB.LECT(NGF)
 264 :          VOLU=MPVOL.VPOCHA(NLC,1)
 265 :          SURF=MPSURF.VPOCHA(NLF,1)
 266 : C        In CASTEM les normales sont sortantes
 267 :          CNX=-1*MPNORM.VPOCHA(NLF,1)
 268 :          CNY=-1*MPNORM.VPOCHA(NLF,2)
 269 :          CNZ=-1*MPNORM.VPOCHA(NLF,3)
 270 :          CTX=-1*MPNORM.VPOCHA(NLF,4)
 271 :          CTY=-1*MPNORM.VPOCHA(NLF,5)
 272 :          CTZ=-1*MPNORM.VPOCHA(NLF,6)
 273 :          CT1X=-1*MPNORM.VPOCHA(NLF,7)
 274 :          CT1Y=-1*MPNORM.VPOCHA(NLF,8)
 275 :          CT1Z=-1*MPNORM.VPOCHA(NLF,9)
 276 : C        Variables au centre
 277 :          RC=MPRC.VPOCHA(NLC,1)
 278 :          PC=MPPC.VPOCHA(NLC,1)
 279 :          UXC=MPVC.VPOCHA(NLC,1)
 280 :          UYC=MPVC.VPOCHA(NLC,2)
 281 :          UZC=MPVC.VPOCHA(NLC,3)
 282 :          GAMC=MPGAMC.VPOCHA(NLC,1)
 283 : C        Variables à la face
 284 :          RF=MPLIM.VPOCHA(NLCB,1)
 285 :          UXF=MPLIM.VPOCHA(NLCB,2)
 286 :          UYF=MPLIM.VPOCHA(NLCB,3)
 287 :          UZF=MPLIM.VPOCHA(NLCB,4)
 288 :          PF=MPLIM.VPOCHA(NLCB,IDIM+2)
 289 : C
 290 : C******* On calcule UN, UT ASON, S 
 291 : C     
 292 :          UNC=(UXC*CNX)+(UYC*CNY)+(UZC*CNZ)
 293 : *         UTC=(UXC*CTX)+(UYC*CTY)
 294 :          UNF=(UXF*CNX)+(UYF*CNY)+(UZF*CNZ)
 295 :          UTF=(UXF*CTX)+(UYF*CTY)+(UZF*CTZ)
 296 :          UT1F=(UXF*CT1X)+(UYF*CT1Y)+(UZF*CT1Z)
 297 : C
 298 :          ASONC=(GAMC*PC/RC)**0.5D0
 299 :          ASONF=(GAMC*PF/RF)**0.5D0
 300 : C
 301 : *         SC=PC/(RC**GAMC)
 302 :          SF=PF/(RF**GAMC)
 303 : C
 304 : C******* Densite, vitesse, pression sur le bord
 305 : C
 306 :          GM1=(GAMC-1.0D0)
 307 :          USGM1=1.0D0/GM1
 308 :          DSGM1=2.0D0*USGM1
 309 :          G1=UNC-(DSGM1*ASONC)
 310 :          G3=UNF+(DSGM1*ASONF)
 311 :          UN=0.5D0*(G1+G3)
 312 :          ASON=(0.5D0*(G3-G1))
 313 :          ASON=ASON/DSGM1
 314 :          ASON2=ASON*ASON
 315 :          S=SF
 316 :          UT=UTF
 317 :          UT1=UT1F
 318 :          RHO=ASON2/(GAMC*S)
 319 :          RHO=RHO**USGM1
 320 :          P=RHO*ASON2/GAMC
 321 :          UX=(UN*CNX)+(UT*CTX)+(UT1*CT1X)
 322 :          UY=(UN*CNY)+(UT*CTY)+(UT1*CT1Y)
 323 :          UZ=(UN*CNZ)+(UT*CTZ)+(UT1*CT1Z)
 324 : C
 325 : C******* Derivatives
 326 : C
 327 :          DUNDG1=0.5D0
 328 :          DASDG1=-0.5D0/DSGM1
 329 :          DRHDG1=GAMC*S
 330 :          DRHDG1=1.0D0/DRHDG1
 331 :          DRHDG1=DRHDG1**USGM1
 332 :          DRHDG1=DRHDG1*DSGM1
 333 :          DRHDG1=DRHDG1*(ASON**((3.0D0-GAMC)/(GAMC-1.0D0)))
 334 :          DRHDG1=DRHDG1*DASDG1
 335 :          DPDG1=((ASON2/GAMC)*DRHDG1)+(((2*ASON*RHO)/GAMC)*DASDG1)
 336 : CC        
 337 : CC******* Test
 338 : CC
 339 : C         DFEDG1=(DUNDG1*GAMC*USGM1*P) + (UN*GAMC*USGM1*DPDG1) +
 340 : C     &        (0.5D0*DRHDG1*UN*((UN*UN)+(UT*UT))) +
 341 : C     &        (0.5D0*RHO*DUNDG1*((UN*UN)+(UT*UT))) +
 342 : C     &        (RHO*UN*UN*DUNDG1)
 343 : C         CACCA=UN*GAMC*USGM1*P + 0.5D0*RHO*UN*(UN*UN+UT*UT)
 344 : C         EPS=1.0D-6
 345 : C         G1=G1*(1+EPS)
 346 : C         CELL=UN
 347 : C         UN=0.5D0*(G1+G3)
 348 : C         write(*,*) DUNDG1, ((UN - CELL)/(EPS*G1))
 349 : C         CELL=ASON
 350 : C         ASON=(0.5D0*(G3-G1))
 351 : C         ASON=ASON/DSGM1
 352 : C         write(*,*) DASDG1, ((ASON - CELL)/(EPS*G1))
 353 : C         ASON2=ASON*ASON
 354 : C         S=SF
 355 : C         UT=UTF
 356 : C         CELL=RHO
 357 : C         RHO=ASON2/(GAMC*S)
 358 : C         RHO=RHO**USGM1
 359 : C         write(*,*) DRHDG1, ((RHO - CELL)/(EPS*G1))
 360 : C         CELL=P
 361 : C         P=RHO*ASON2/GAMC
 362 : C         write(*,*) DPDG1, ((P - CELL)/(EPS*G1))
 363 : C         CELL=CACCA
 364 : C         CACCA=UN*GAMC*USGM1*P + 0.5D0*RHO*UN*(UN*UN+UT*UT)
 365 : C         write(*,*) DFEDG1, ((CACCA - CELL)/(EPS*G1))
 366 : CC
 367 : CC************************************************************
 368 : CC
 369 :          DUXDG1=DUNDG1*CNX
 370 :          DUYDG1=DUNDG1*CNY
 371 :          DUZDG1=DUNDG1*CNZ
 372 : C
 373 :          DFRDG1=(DRHDG1*UN)+(RHO*DUNDG1)
 374 :          DFMXG1=(DRHDG1*UN*UX)+(RHO*DUNDG1*UX)+
 375 :      &        (RHO*UN*DUXDG1)+(DPDG1*CNX)
 376 :          DFMYG1=(DRHDG1*UN*UY)+(RHO*DUNDG1*UY)+
 377 :      &        (RHO*UN*DUYDG1)+(DPDG1*CNY)
 378 :          DFMZG1=(DRHDG1*UN*UZ)+(RHO*DUNDG1*UZ)+
 379 :      &        (RHO*UN*DUZDG1)+(DPDG1*CNZ)
 380 :          DFEDG1=(DUNDG1*GAMC*USGM1*P) + (UN*GAMC*USGM1*DPDG1) +
 381 :      &        (0.5D0*DRHDG1*UN*((UN*UN)+(UT*UT)+(UT1*UT1))) +
 382 :      &        (0.5D0*RHO*DUNDG1*((UN*UN)+(UT*UT)+(UT1*UT1))) +
 383 :      &        (RHO*UN*UN*DUNDG1)
 384 : C
 385 : C******* Jacobian with respect to primitive variables
 386 : C
 387 :          DG1DR=USGM1*ASONC/RC
 388 :          DG1DP=-1.0D0*USGM1*ASONC/PC
 389 :          DG1DUX=CNX
 390 :          DG1DUY=CNY
 391 :          DG1DUZ=CNZ
 392 : C
 393 :          COEF=SURF/VOLU
 394 : C
 395 :          DRORO=DFRDG1*DG1DR*COEF
 396 :          DROUX=DFRDG1*DG1DUX*COEF
 397 :          DROUY=DFRDG1*DG1DUY*COEF
 398 :          DROUZ=DFRDG1*DG1DUZ*COEF
 399 :          DROP=DFRDG1*DG1DP*COEF
 400 : C
 401 :          DUXRO=DFMXG1*DG1DR*COEF
 402 :          DUXUX=DFMXG1*DG1DUX*COEF
 403 :          DUXUY=DFMXG1*DG1DUY*COEF
 404 :          DUXUZ=DFMXG1*DG1DUZ*COEF
 405 :          DUXP=DFMXG1*DG1DP*COEF
 406 : C         
 407 :          DUYRO=DFMYG1*DG1DR*COEF
 408 :          DUYUX=DFMYG1*DG1DUX*COEF
 409 :          DUYUY=DFMYG1*DG1DUY*COEF
 410 :          DUYUZ=DFMYG1*DG1DUZ*COEF
 411 :          DUYP=DFMYG1*DG1DP*COEF
 412 : C         
 413 :          DUZRO=DFMZG1*DG1DR*COEF
 414 :          DUZUX=DFMZG1*DG1DUX*COEF
 415 :          DUZUY=DFMZG1*DG1DUY*COEF
 416 :          DUZUZ=DFMZG1*DG1DUZ*COEF
 417 :          DUZP=DFMZG1*DG1DP*COEF
 418 : C
 419 :          DPRO=DFEDG1*DG1DR*COEF
 420 :          DPUX=DFEDG1*DG1DUX*COEF
 421 :          DPUY=DFEDG1*DG1DUY*COEF
 422 :          DPUZ=DFEDG1*DG1DUZ*COEF
 423 :          DPP=DFEDG1*DG1DP*COEF
 424 : C
 425 : C******* Jacobian with respect to conservative variables
 426 : C
 427 :          IF(IJAC.EQ.1)THEN
 428 : C
 429 :             COEF1=-1.0D0*UXC/RC
 430 :             COEF2=-1.0D0*UYC/RC
 431 :             COEF3=-1.0D0*UZC/RC
 432 :             COEF4=0.5D0*GM1*((UXC*UXC)+(UYC*UYC)+(UZC*UZC))
 433 : C
 434 :             RR.AM(IFAC,1,1)=DRORO+(DROUX*COEF1)+(DROUY*COEF2)+(DROUZ
 435 :      $           *COEF3)+(DROP*COEF4)
 436 :             RUX.AM(IFAC,1,1)=(DROUX/RC)-((UXC*GM1)*DROP)
 437 :             RUY.AM(IFAC,1,1)=(DROUY/RC)-((UYC*GM1)*DROP)
 438 :             RUZ.AM(IFAC,1,1)=(DROUZ/RC)-((UZC*GM1)*DROP)
 439 :             RRET.AM(IFAC,1,1)=GM1*DROP
 440 : C
 441 :             UXR.AM(IFAC,1,1)=DUXRO+(DUXUX*COEF1)+(DUXUY*COEF2)+(DUXUZ
 442 :      $           *COEF3)+(DUXP*COEF4)
 443 :             UXUX.AM(IFAC,1,1)=(DUXUX/RC)-((UXC*GM1)*DUXP)
 444 :             UXUY.AM(IFAC,1,1)=(DUXUY/RC)-((UYC*GM1)*DUXP)
 445 :             UXUZ.AM(IFAC,1,1)=(DUXUZ/RC)-((UZC*GM1)*DUXP)
 446 :             UXRET.AM(IFAC,1,1)=GM1*DUXP
 447 : C
 448 :             UYR.AM(IFAC,1,1)=DUYRO+(DUYUX*COEF1)+(DUYUY*COEF2)+(DUYUZ
 449 :      $           *COEF3)+(DUYP*COEF4)
 450 :             UYUX.AM(IFAC,1,1)=(DUYUX/RC)-((UXC*GM1)*DUYP)
 451 :             UYUY.AM(IFAC,1,1)=(DUYUY/RC)-((UYC*GM1)*DUYP)
 452 :             UYUZ.AM(IFAC,1,1)=(DUYUZ/RC)-((UZC*GM1)*DUYP)
 453 :             UYRET.AM(IFAC,1,1)=GM1*DUYP
 454 : C
 455 :             UZR.AM(IFAC,1,1)=DUZRO+(DUZUX*COEF1)+(DUZUY*COEF2)+(DUZUZ
 456 :      $           *COEF3)+(DUZP*COEF4)
 457 :             UZUX.AM(IFAC,1,1)=(DUZUX/RC)-((UXC*GM1)*DUZP)
 458 :             UZUY.AM(IFAC,1,1)=(DUZUY/RC)-((UYC*GM1)*DUZP)
 459 :             UZUZ.AM(IFAC,1,1)=(DUZUZ/RC)-((UZC*GM1)*DUZP)
 460 :             UZRET.AM(IFAC,1,1)=GM1*DUZP
 461 : C
 462 :             RETR.AM(IFAC,1,1)=DPRO+(DPUX*COEF1)+(DPUY*COEF2)+(DPUZ
 463 :      $           *COEF3)+(DPP*COEF4)
 464 :             RETUX.AM(IFAC,1,1)=(DPUX/RC)-((UXC*GM1)*DPP)
 465 :             RETUY.AM(IFAC,1,1)=(DPUY/RC)-((UYC*GM1)*DPP)
 466 :             RETUZ.AM(IFAC,1,1)=(DPUZ/RC)-((UZC*GM1)*DPP)
 467 :             RETRET.AM(IFAC,1,1)=GM1*DPP
 468 : C
 469 :          ELSEIF(IJAC.EQ.2)THEN
 470 :             RR.AM(IFAC,1,1)=DRORO
 471 :             RUX.AM(IFAC,1,1)=DROUX
 472 :             RUY.AM(IFAC,1,1)=DROUY
 473 :             RUZ.AM(IFAC,1,1)=DROUZ
 474 :             RRET.AM(IFAC,1,1)=DROP
 475 : C
 476 :             UXR.AM(IFAC,1,1)=DUXRO
 477 :             UXUX.AM(IFAC,1,1)=DUXUX
 478 :             UXUY.AM(IFAC,1,1)=DUXUY
 479 :             UXUZ.AM(IFAC,1,1)=DUXUZ
 480 :             UXRET.AM(IFAC,1,1)=DUXP
 481 : C
 482 :             UYR.AM(IFAC,1,1)=DUYRO
 483 :             UYUX.AM(IFAC,1,1)=DUYUX
 484 :             UYUY.AM(IFAC,1,1)=DUYUY
 485 :             UYUZ.AM(IFAC,1,1)=DUYUZ
 486 :             UYRET.AM(IFAC,1,1)=DUYP
 487 : C
 488 :             UZR.AM(IFAC,1,1)=DUZRO
 489 :             UZUX.AM(IFAC,1,1)=DUZUX
 490 :             UZUY.AM(IFAC,1,1)=DUZUY
 491 :             UZUZ.AM(IFAC,1,1)=DUZUZ
 492 :             UZRET.AM(IFAC,1,1)=DUZP
 493 : C
 494 :             RETR.AM(IFAC,1,1)=DPRO
 495 :             RETUX.AM(IFAC,1,1)=DPUX
 496 :             RETUY.AM(IFAC,1,1)=DPUY
 497 :             RETUZ.AM(IFAC,1,1)=DPUZ
 498 :             RETRET.AM(IFAC,1,1)=DPP
 499 :          ENDIF
 500 : 
 501 :       ENDDO
 502 : C
 503 :       SEGDES MELEFC
 504 : C      
 505 :       SEGSUP MLEMC
 506 :       SEGSUP MLEMCB
 507 :       SEGSUP MLEMF
 508 : C
 509 :       SEGDES MPNORM
 510 :       SEGDES MPVOL
 511 :       SEGDES MPSURF
 512 :       SEGDES MPRC
 513 :       SEGDES MPPC
 514 :       SEGDES MPVC
 515 :       SEGDES MPGAMC
 516 :       SEGDES MPLIM
 517 : C
 518 :       SEGDES   RR  , RUX , RUY , RUZ ,RRET ,
 519 :      &         UXR , UXUX , UXUY , UXUZ ,UXRET ,
 520 :      &         UYR , UYUX , UYUY , UYUZ , UYRET ,
 521 :      &         UZR , UZUX , UZUY , UZUZ , UZRET ,
 522 :      &         RETR , RETUX , RETUY, RETUZ , RETRET 
 523 : C
 524 :  9999 CONTINUE
 525 :       RETURN
 526 :       END
 527 : 
 528 : 
 529 : 
 530 : 
 531 :  
 532 :  
 533 :  
 534 :  
 535 :  

© Cast3M 2003 - All rights reserved.
Disclaimer