1 : C PRE321 SOURCE PV 09/03/12 21:30:57 6325 2 : SUBROUTINE PRE321(LOGTEM,LGAMC,LYC,LSCAC, 3 : & ICEN,IFACE,IFACEL,INORM, 4 : & IROC, IGRROC, IALROC, 5 : & IVITC, IGRVC, IALVC, 6 : & IPC ,IGRPC, IALPC, 7 : & IYC ,IGRYC, IALYC, 8 : & ISCAC ,IGRSC, IALSC, 9 : & IGAMC, 10 : & DELTAT, 11 : & IROF,IVITF,IPF,IYF,ISCAF, 12 : & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2) 13 : C************************************************************************ 14 : C 15 : C PROJET : CASTEM 2000 16 : C 17 : C NOM : PRE321 18 : C 19 : C DESCRIPTION : Voir PRE32 20 : C 21 : C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI) 22 : C 23 : C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF 24 : C 25 : C************************************************************************ 26 : C 27 : C 28 : C APPELES (Outils) : KRIPAD, LICHT 29 : C 30 : C APPELES (Calcul) : AUCUN 31 : C 32 : C 33 : C************************************************************************ 34 : C 35 : C ENTREES 36 : C 37 : C LOGTEM : LOGICAL; si .TRUE. 2em ordre en temps 38 : C sinon 1er ordre en temps 39 : C LGAMC,LYC,LSCAC : LOGICAL : si .TRUE. IGAMC, IYC, ISCAC sont 40 : C pointeurs de CHPOINTS 41 : C 42 : C 1) Pointeurs de MELEMEs et de CHPOINTs de la table DOMAINE 43 : C 44 : C ICEN : MELEME de 'POI1' SPG des CENTRES 45 : C 46 : C IFACE : MELEME de 'POI1' SPG des FACES 47 : C 48 : C IFACEL : MELEME de 'SEG3' avec 49 : C CENTRE d'Elt "gauche" 50 : C CENTRE de Face 51 : C CENTRE d'Elt "droite" 52 : C 53 : C N.B. = IFACE.NUM(i,1) = IFACEL.NUM(i,2) 54 : C 55 : C INORM : CHPOINT des cosinus directeurs de normales aux faces 56 : C 57 : C 2) Autres pointeurs 58 : C 59 : C IROC : CHPOINT "CENTRE" contenant la masse volumique RHO 60 : C 61 : C IGRROC : CHPOINT "CENTRE" contenant le gradient de la 62 : C masse volumique RHO (2 composantes) 63 : C 64 : C IALROC : CHPOINT "CENTRE" contenant le limiteur du gradient 65 : C de la masse volumique 66 : C 67 : C IVITC : CHPOINT "CENTRE" contenant la vitesse UX, UY ; 68 : C 69 : C IGRVC : CHPOINT "CENTRE" contenant le gradient de la 70 : C vitesse (4 composantes) 71 : C 72 : C IALVC : CHPOINT "CENTRE" contenant le limiteur du gradient 73 : C de la vitesse (2 composantes) 74 : C 75 : C IPC : CHPOINT "CENTRE" contenat la pression P; 76 : C 77 : C IGRPC : CHPOINT "CENTRE" contenant le gradient de la 78 : C pression (2 composantes) 79 : C 80 : C IALPC : CHPOINT "CENTRE" contenant le limiteur du gradient 81 : C de la pression 82 : C 83 : C IYC : CHPOINT "CENTRE" contenat les fractions massiques ; 84 : C 85 : C IGRYC : CHPOINT "CENTRE" contenant les gradient des fr.mass ; 86 : C 87 : C IALPC : CHPOINT "CENTRE" contenant les limiteurs des gradients 88 : C des fr.mass. ; 89 : C 90 : C ISCAC : CHPOINT "CENTRE" contenat les scalaires passifs ; 91 : C 92 : C IGRSC : CHPOINT "CENTRE" contenant les gradient des scalaires passifs; 93 : C 94 : C IALPC : CHPOINT "CENTRE" contenant les limiteurs des gradients 95 : C des scalaires passifs ; 96 : C 97 : C 98 : C IGAMC : CHPOINT "CENTRE" contenat le "Gamma" du gaz 99 : C 100 : C 3) 101 : C 102 : C DELTAT : REAL*8, encrement en temps pour calculer la prediction 103 : C 104 : C 105 : C SORTIES 106 : C 107 : C 108 : C IROF : MCHAML defini sur le MELEME de pointeur IFACEL, 109 : C contenant la masse volumique RHO 110 : C 111 : C IVITF : MCHAML defini sur le MELEME de pointeur IFACEL, 112 : C contenant la vitesse UN, UT dans le repaire local 113 : C (n,t) et defini sur le MELEME de pointeur IFACE, 114 : C contenant les cosinus directeurs du repere local 115 : C 116 : C IPF : MCHAML defini sur le MELEME de pointeur IFACEL, 117 : C contenant la pression P 118 : C 119 : C IYF : MCHAML defini sur le MELEME de pointeur IFACEL, 120 : C contenant les fractions massiques; 121 : C 122 : C ISCAF : MCHAML defini sur le MELEME de pointeur IFACEL, 123 : C contenant les scalaires passifs; 124 : C 125 : C LOGAN : anomalie detectee 126 : C 127 : C LOGNEG : (LOGICAL): si .TRUE. une pression ou une densité 128 : C negative a été detectée -> en interactif le 129 : C programme s'arrete en GIBIANE 130 : C (erreur stocké en MESERR et VALER) 131 : C 132 : C LOGBOR : (LOGICAL): si .TRUE. un y a ete detecte 133 : C dehor 1 et 3 (sa valeur stockée en MESERR et VALER; 134 : C en VAL1 et en VAL2 on stocke 1.0 et 3.0) 135 : C 136 : C MESERR 137 : C VALER 138 : C VAL1, 139 : C VAL2 : pour les messages d'erreur 140 : C 141 : C************************************************************************ 142 : C 143 : C HISTORIQUE (Anomalies et modifications éventuelles) 144 : C 145 : C HISTORIQUE : Créée le 21.12.98. 146 : C 147 : C 17.02.2000: transport des scalaires passifs 148 : C 149 : C************************************************************************ 150 : C 151 : C 152 : C ATTENTION: Cet programme marche si le MAILLAGE est convex; 153 : C si non il faut changer l'algoritme de calcul de 154 : C l'orientation des normales aux faces. 155 : C 156 : C La positivité n'est pas controlle parce que c'est déjà fait 157 : C dans l'operateur PRIM 158 : C 159 : C 160 : C************************************************************************ 161 : C 162 : C**** Variables de COOPTIO 163 : C 164 : C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR 165 : C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ 166 : C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES 167 : C & ,IECHO, IIMPI, IOSPI 168 : C & ,IDIM 169 : CC & ,MCOORD 170 : C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE 171 : C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU 172 : C & ,NORINC,NORVAL,NORIND,NORVAD 173 : C & ,NUCROU, IPSAUV 174 : C 175 : C**** Les variables 176 : C 177 : IMPLICIT INTEGER(I-N) 178 : INTEGER ICEN, IFACE, IFACEL, INORM,IROC, IGRROC, IALROC 179 : & , IVITC, IGRVC, IALVC 180 : & , IPC ,IGRPC, IALPC 181 : & , IYC, IGRYC, IALYC 182 : & , ISCAC, IGRSC, IALSC 183 : & , IGAMC 184 : & , IROF, IVITF, IPF, IYF, ISCAF 185 : & , IGEOM, NFAC, NCEN 186 : & , N1PTEL, N1EL, N2PTEL, N2EL, N2, N1, N3, L1, NLCE 187 : & , NLCF, NGCF, NGCEG, NLCEG, NGCED, NLCED, NGCF1 188 : & , IDIMP1, INDCEL, I1, NESP, NSCA, NMA 189 : REAL*8 VALER, VAL1, VAL2, XG, YG, XC, YC, XD, YD, DELTAT 190 : & ,DXG, DYG, DXD, DYD 191 : & , CNX, CNY, CTX, CTY, ORIENT 192 : & , ROG, PG, GAMG, UXG, UYG, UNG, UTG 193 : & , ROD, PD, UXD, UYD, UND, UTD 194 : & , VALCEL, DCEL, ALCEL 195 : & , DROX, DROY, DUXX, DUXY, DUYX, DUYY, DPX, DPY 196 : & , DRO, DUX, DUY, DP 197 : & , ALPHA, DYMAS, SUMY 198 : CHARACTER*(40) MESERR 199 : CHARACTER*(8) TYPE, CARCEL 200 : LOGICAL LOGAN,LOGNEG, LOGBOR, LOGTEM, LOGI1, LOGI2 201 : & ,LGAMC,LYC,LSCAC 202 : C 203 : C**** Les Includes 204 : C 205 : -INC SMCOORD 206 : -INC CCOPTIO 207 : -INC SMCHPOI 208 : POINTEUR MPROC.MPOVAL, MPGRR.MPOVAL, 209 : & MPVITC.MPOVAL, MPGRV.MPOVAL, 210 : & MPPC.MPOVAL, MPGRP.MPOVAL, 211 : & MPYC.MPOVAL, MPGRY.MPOVAL, 212 : & MPSCAC.MPOVAL, MPGRS.MPOVAL, 213 : & MPGAMC.MPOVAL, MPNORM.MPOVAL, 214 : & MPROP.MPOVAL, MPPP.MPOVAL, MPVITP.MPOVAL, 215 : & MPYP.MPOVAL, MPSCAP.MPOVAL 216 : -INC SMCHAML 217 : POINTEUR MCHAMY.MCHAML, MCHAMS.MCHAML 218 : POINTEUR MELVNX.MELVAL, MELVNY.MELVAL, 219 : & MELT1X.MELVAL, MELT1Y.MELVAL 220 : POINTEUR MELVUN.MELVAL, MELVUT.MELVAL 221 : POINTEUR MELRO.MELVAL, MELP.MELVAL 222 : POINTEUR MELALR.MPOVAL, 223 : & MELALV.MPOVAL, 224 : & MELALP.MPOVAL, 225 : & MELALY.MPOVAL, 226 : & MELALS.MPOVAL 227 : -INC SMLENTI 228 : -INC SMELEME 229 : C 230 : C**** Segments des fractions massiques gauche et droit 231 : C 232 : SEGMENT FRAMAS 233 : REAL*8 FRAMG(NMA), FRAMD(NMA) 234 : ENDSEGMENT 235 : POINTEUR SCALPA.FRAMAS 236 : C 237 : C 238 : C**** Initialisation des parametres d'erreur déjà faite, i.e. 239 : C 240 : C LOGNEG = .FALSE. 241 : C LOGBOR = .FALSE. 242 : C MESERR = ' ' 243 : C MOTERR(1:40) = MESERR(1:40) 244 : C VALER = 0.0D0 245 : C VAL1 = 0.0D0 246 : C VAL2 = 0.0D0 247 : C 248 : C 249 : C**** KRIPAD pour la correspondance global/local de centre 250 : C 250 : CALL KRIPAD(ICEN,MLENT1) 251 : C 252 : C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements 253 : C 254 : C Si i est le numero global d'un noeud de ICEN, 255 : C MLENT1.LECT(i) contient sa position, i.e. 256 : C 257 : C I = numero global du noeud centre 258 : C MLENT1.LECT(i) = numero local du noeud centre 259 : C 260 : C MLENT1 déjà activé, i.e. 261 : C 262 : C SEGACT MLENT1 263 : C 264 : C**** Activation de CHPOINTs 265 : C 266 : C densité + grad + limiteur 267 : C vitesse + grad + limiteur 268 : C pression + grad + limiteur 269 : C fract.mass + grad + limiteur 270 : C gamma 271 : C cosinus directeurs des normales aux surface 272 : C 272 : CALL LICHT(IROC , MPROC , TYPE, IGEOM) 272 : CALL LICHT(IGRROC, MPGRR , TYPE, IGEOM) 272 : CALL LICHT(IVITC, MPVITC , TYPE, IGEOM) 272 : CALL LICHT(IGRVC, MPGRV , TYPE, IGEOM) 272 : CALL LICHT(IPC , MPPC , TYPE, IGEOM) 272 : CALL LICHT(IGRPC, MPGRP , TYPE, IGEOM) 272 : IF(LGAMC) CALL LICHT(IGAMC, MPGAMC , TYPE, IGEOM) 272 : CALL LICHT(INORM, MPNORM , TYPE, IGEOM) 273 : C 274 : C**** Les MPOVALs 'Prediction' 275 : C 276 : IF(LOGTEM)THEN 277 : SEGINI, MPROP = MPROC 278 : SEGINI, MPPP = MPPC 279 : SEGINI, MPVITP = MPVITC 280 : ELSE 281 : MPROP = MPROC 282 : MPPP = MPPC 283 : MPVITP = MPVITC 284 : ENDIF 285 : C 286 : C**** Les Limiteurs 287 : C 287 : CALL LICHT(IALROC, MELALR , TYPE, IGEOM) 287 : CALL LICHT(IALVC, MELALV , TYPE, IGEOM) 287 : CALL LICHT(IALPC, MELALP , TYPE, IGEOM) 288 : C 289 : C 290 : C**** Les MPOVAL sont déjà activés i.e.: 291 : C 292 : C SEGACT MPROC 293 : C SEGACT MPGRR 294 : C SEGACT MPIALR 295 : C SEGACT MPVITC 296 : C SEGACT MPGRV 297 : C SEGACT MPIALV 298 : C SEGACT MPPC 299 : C SEGACT MPGRP 300 : C SEGACT MPIALP 301 : C SEGACT MPGAMC (si LGAMC) 302 : C SEGACT MPNORM 303 : C 304 : C**** Le MELEME FACEL 305 : C 306 : IPT1 = IFACEL 307 : IPT2 = IFACE 308 : SEGACT IPT1 309 : SEGACT IPT2 310 : NFAC = IPT1.NUM(/2) 311 : C 312 : C**** Creation de MCHAMLs contenant les etats gauche et droite, 313 : C 314 : C i.e.: 315 : C 316 : C vitesse + cosinus directors du repere local 317 : C densité 318 : C pression 319 : C 320 : C**** Cosinus directors du repere local et vitesse 321 : C 322 : C Les cosinus directeurs 323 : C 324 : N1 = 2 325 : N3 = 6 326 : L1 = 28 327 : SEGINI MCHEL1 328 : IVITF = MCHEL1 329 : MCHEL1.TITCHE = 'U ' 330 : MCHEL1.IMACHE(1) = IFACE 331 : MCHEL1.IMACHE(2) = IFACEL 332 : MCHEL1.CONCHE(1) = ' (n,t) in (x,y) ' 333 : MCHEL1.CONCHE(2) = ' U in (n,t) ' 334 : C 335 : C**** Valeurs des cosinus definies par respect au repair global, i.e. 336 : C 337 : MCHEL1.INFCHE(1,1) = 2 338 : MCHEL1.INFCHE(1,3) = NIFOUR 339 : MCHEL1.INFCHE(1,4) = 0 340 : MCHEL1.INFCHE(1,5) = 0 341 : MCHEL1.INFCHE(1,6) = 0 342 : MCHEL1.IFOCHE = IFOUR 343 : C 344 : C**** Valeurs de vitesse definies par respect au repair local, i.e. 345 : C 346 : MCHEL1.INFCHE(2,1) = 1 347 : MCHEL1.INFCHE(2,3) = NIFOUR 348 : MCHEL1.INFCHE(2,4) = 0 349 : MCHEL1.INFCHE(2,5) = 0 350 : MCHEL1.INFCHE(2,6) = 0 351 : C 352 : C**** Le cosinus directeurs 353 : C 354 : N1PTEL = 1 355 : N1EL = NFAC 356 : N2PTEL = 0 357 : N2EL = 0 358 : C 359 : C**** MCHAML a N2 composantes: 360 : C 361 : C cosinus directeurs du repere local (n,t1) 362 : C 363 : C IDIM = 2 -> 4 composantes 364 : C 365 : N2 = 4 366 : SEGINI MCHAM1 367 : MCHEL1.ICHAML(1) = MCHAM1 368 : MCHAM1.NOMCHE(1) = 'NX ' 369 : MCHAM1.NOMCHE(2) = 'NY ' 370 : MCHAM1.NOMCHE(3) = 'TX ' 371 : MCHAM1.NOMCHE(4) = 'TY ' 372 : MCHAM1.TYPCHE(1) = 'REAL*8 ' 373 : MCHAM1.TYPCHE(2) = 'REAL*8 ' 374 : MCHAM1.TYPCHE(3) = 'REAL*8 ' 375 : MCHAM1.TYPCHE(4) = 'REAL*8 ' 376 : SEGINI MELVNX 377 : SEGINI MELVNY 378 : SEGINI MELT1X 379 : SEGINI MELT1Y 380 : MCHAM1.IELVAL(1) = MELVNX 381 : MCHAM1.IELVAL(2) = MELVNY 382 : MCHAM1.IELVAL(3) = MELT1X 383 : MCHAM1.IELVAL(4) = MELT1Y 384 : SEGDES MCHAM1 385 : C 386 : C**** Vitesse 387 : C 388 : N1EL = NFAC 389 : N1PTEL = 3 390 : N2EL = 0 391 : N2PTEL = 0 392 : C 393 : C**** MCHAML a N2 composantes: 394 : C 395 : C IDIM = 2 -> 2 composantes 396 : C 397 : N2 = 2 398 : SEGINI MCHAM1 399 : MCHEL1.ICHAML(2) = MCHAM1 400 : SEGDES MCHEL1 401 : MCHAM1.NOMCHE(1) = 'UN ' 402 : MCHAM1.NOMCHE(2) = 'UT ' 403 : MCHAM1.TYPCHE(1) = 'REAL*8 ' 404 : MCHAM1.TYPCHE(2) = 'REAL*8 ' 405 : SEGINI MELVUN 406 : SEGINI MELVUT 407 : MCHAM1.IELVAL(1) = MELVUN 408 : MCHAM1.IELVAL(2) = MELVUT 409 : SEGDES MCHAM1 410 : C 411 : C**** Densite 412 : C 413 : N1 = 1 414 : N3 = 6 415 : L1 = 15 416 : SEGINI MCHEL2 417 : IROF = MCHEL2 418 : MCHEL2.IMACHE(1) = IFACEL 419 : MCHEL2.TITCHE = 'RO ' 420 : MCHEL2.CONCHE(1) = ' ' 421 : C 422 : C**** Valeurs independente du repére, i.e. 423 : C 424 : MCHEL2.INFCHE(1,1) = 0 425 : MCHEL2.INFCHE(1,3) = NIFOUR 426 : MCHEL2.INFCHE(1,4) = 0 427 : MCHEL2.INFCHE(1,5) = 0 428 : MCHEL2.INFCHE(1,6) = 0 429 : MCHEL2.IFOCHE = IFOUR 430 : N2 = 1 431 : SEGINI MCHAM1 432 : MCHEL2.ICHAML(1) = MCHAM1 433 : SEGDES MCHEL2 434 : MCHAM1.NOMCHE(1) = 'SCAL ' 435 : MCHAM1.TYPCHE(1) = 'REAL*8 ' 436 : SEGINI MELRO 437 : MCHAM1.IELVAL(1) = MELRO 438 : SEGDES MCHAM1 439 : C 440 : C**** Pression 441 : C 442 : MCHEL1 = IROF 443 : SEGINI, MCHEL2 = MCHEL1 444 : IPF = MCHEL2 445 : MCHEL2.TITCHE = 'P ' 446 : C 447 : C**** MCHAM1 = MCHAML de la densite 448 : C 449 : SEGINI, MCHAM2 = MCHAM1 450 : MCHEL2.ICHAML(1) = MCHAM2 451 : SEGDES MCHEL2 452 : SEGINI MELP 453 : MCHAM2.IELVAL(1) = MELP 454 : SEGDES MCHAM2 455 : C 456 : C**** Le CHAMELEM des fractions massiques 457 : C 458 : IF(LYC)THEN 459 : MCHPO1 = IYC 460 : SEGACT MCHPO1 461 : MSOUP1 = MCHPO1.IPCHP(1) 462 : SEGDES MCHPO1 463 : SEGACT MSOUP1 464 : MPYC = MSOUP1.IPOVAL 465 : SEGACT MPYC 466 : NESP = MPYC.VPOCHA(/2) 467 : MCHEL1 = IROF 468 : SEGINI, MCHEL2 = MCHEL1 469 : IYF = MCHEL2 470 : MCHEL2.TITCHE = 'Y ' 471 : N2 = NESP 472 : SEGINI MCHAMY 473 : MCHEL2.ICHAML(1) = MCHAMY 474 : SEGDES MCHEL2 475 : N1EL = NFAC 476 : N1PTEL = 3 477 : N2EL = 0 478 : N2PTEL = 0 479 : DO I1 = 1, NESP 480 : SEGINI MELVA1 481 : MCHAMY.IELVAL(I1) = MELVA1 482 : CARCEL = ' ' 483 : CARCEL(1:4) = MSOUP1.NOCOMP(I1) 484 : MCHAMY.NOMCHE(I1) = CARCEL 485 : MCHAMY.TYPCHE(I1) = 'REAL*8 ' 486 : ENDDO 487 : SEGDES MSOUP1 488 : C 488 : CALL LICHT(IGRYC, MPGRY , TYPE, IGEOM) 488 : CALL LICHT(IALYC, MELALY , TYPE, IGEOM) 489 : NMA = NESP 490 : SEGINI FRAMAS 491 : IF(LOGTEM)THEN 492 : SEGINI, MPYP = MPYC 493 : ELSE 494 : MPYP = MPYC 495 : ENDIF 496 : ELSE 497 : NESP = 0 498 : IYF = 0 499 : ENDIF 500 : C 501 : C**** Le CHAMELEM des scalaires passifs 502 : C 503 : IF(LSCAC)THEN 504 : MCHPO1 = ISCAC 505 : SEGACT MCHPO1 506 : MSOUP1 = MCHPO1.IPCHP(1) 507 : SEGDES MCHPO1 508 : SEGACT MSOUP1 509 : MPSCAC = MSOUP1.IPOVAL 510 : SEGACT MPSCAC 511 : NSCA = MPSCAC.VPOCHA(/2) 512 : MCHEL1 = IROF 513 : SEGINI, MCHEL2 = MCHEL1 514 : ISCAF = MCHEL2 515 : MCHEL2.TITCHE = 'SCALPASS ' 516 : N2 = NSCA 517 : SEGINI MCHAMS 518 : MCHEL2.ICHAML(1) = MCHAMS 519 : SEGDES MCHEL2 520 : N1EL = NFAC 521 : N1PTEL = 3 522 : N2EL = 0 523 : N2PTEL = 0 524 : DO I1 = 1, NSCA 525 : SEGINI MELVA1 526 : MCHAMS.IELVAL(I1) = MELVA1 527 : CARCEL = ' ' 528 : CARCEL(1:4) = MSOUP1.NOCOMP(I1) 529 : MCHAMS.NOMCHE(I1) = CARCEL 530 : MCHAMS.TYPCHE(I1) = 'REAL*8 ' 531 : ENDDO 532 : SEGDES MSOUP1 533 : C 533 : CALL LICHT(IGRSC, MPGRS , TYPE, IGEOM) 533 : CALL LICHT(IALSC, MELALS , TYPE, IGEOM) 534 : NMA = NSCA 535 : SEGINI SCALPA 536 : IF(LOGTEM)THEN 537 : SEGINI, MPSCAP = MPSCAC 538 : ELSE 539 : MPSCAP = MPSCAC 540 : ENDIF 541 : ELSE 542 : NSCA = 0 543 : ISCAF = 0 544 : ENDIF 545 : C 546 : C**** Donc on a aussi actives le chpoints de fractions massiques 547 : C 548 : C SEGACT MPYC 549 : C SEGACT MPGRY 550 : C SEGACT MPIALY 551 : C 552 : C SEGACT MPSCAC 553 : C SEGACT MPGRS 554 : C SEGACT MPIALS 555 : C 556 : C 557 : C*********************************************************************** 558 : C********* PREDICTION ************************************************** 559 : C*********************************************************************** 560 : C 561 : C**** Prediction avec gradients limités 562 : C 563 : C 564 : IF(LOGTEM)THEN 565 : C 566 : IPT3 = ICEN 567 : SEGACT IPT3 568 : NCEN = IPT3.NUM(/2) 569 : DO NLCE = 1, NCEN 570 : ROG = MPROP.VPOCHA(NLCE,1) 571 : UXG = MPVITP.VPOCHA(NLCE,1) 572 : UYG = MPVITP.VPOCHA(NLCE,2) 573 : PG = MPPP.VPOCHA(NLCE,1) 574 : DROX = MPGRR.VPOCHA(NLCE,1)*MELALR.VPOCHA(NLCE,1) 575 : DROY = MPGRR.VPOCHA(NLCE,2)*MELALR.VPOCHA(NLCE,1) 576 : DUXX = MPGRV.VPOCHA(NLCE,1)*MELALV.VPOCHA(NLCE,1) 577 : DUXY = MPGRV.VPOCHA(NLCE,2)*MELALV.VPOCHA(NLCE,1) 578 : DUYX = MPGRV.VPOCHA(NLCE,3)*MELALV.VPOCHA(NLCE,2) 579 : DUYY = MPGRV.VPOCHA(NLCE,4)* MELALV.VPOCHA(NLCE,2) 580 : DPX = MPGRP.VPOCHA(NLCE,1)* MELALP.VPOCHA(NLCE,1) 581 : DPY = MPGRP.VPOCHA(NLCE,2)* MELALP.VPOCHA(NLCE,1) 582 : GAMG = MPGAMC.VPOCHA(NLCE,1) 583 : DRO = UXG * DROX + ROG * ( DUXX + DUYY ) 584 : & + UYG * DROY 585 : DUX = UXG * DUXX + DPX / ROG + UYG * DUXY 586 : DUY = UXG * DUYX + UYG * DUYY + DPY / ROG 587 : DP = GAMG * PG * (DUXX + DUYY) 588 : & + UXG * DPX + UYG * DPY 589 : C 590 : MPROP.VPOCHA(NLCE,1) = ROG - DELTAT * DRO 591 : MPVITP.VPOCHA(NLCE,1) = UXG - DELTAT * DUX 592 : MPVITP.VPOCHA(NLCE,2) = UYG - DELTAT * DUY 593 : MPPP.VPOCHA(NLCE,1) = PG - DELTAT * DP 594 : DO I1 = 1, NESP, 1 595 : INDCEL = 2 * I1 - 1 596 : ALPHA = MELALY.VPOCHA(NLCE,I1) 597 : DYMAS = UXG * MPGRY.VPOCHA(NLCE,INDCEL) * ALPHA + 598 : & UYG * MPGRY.VPOCHA(NLCE,INDCEL+1) * ALPHA 599 : MPYP.VPOCHA(NLCE,I1) = MPYC.VPOCHA(NLCE,I1) - 600 : & DELTAT * DYMAS 601 : ENDDO 602 : DO I1 = 1, NSCA, 1 603 : INDCEL = 2 * I1 - 1 604 : ALPHA = MELALS.VPOCHA(NLCE,I1) 605 : DYMAS = UXG * MPGRS.VPOCHA(NLCE,INDCEL) * ALPHA + 606 : & UYG * MPGRS.VPOCHA(NLCE,INDCEL+1) * ALPHA 607 : MPSCAP.VPOCHA(NLCE,I1) = MPSCAC.VPOCHA(NLCE,I1) - 608 : & DELTAT * DYMAS 609 : ENDDO 610 : ENDDO 611 : C 612 : ENDIF 613 : C 614 : C 615 : C*********************************************************************** 616 : C********* CORRECTION ************************************************** 617 : C*********************************************************************** 618 : C 619 : C**** Boucle sur le faces 620 : C 621 : IDIMP1 = IDIM + 1 622 : DO NLCF = 1, NFAC 623 : C 624 : C******* NLCF = numero local du centre de face 625 : C NGCF = numero global du centre de face 626 : C NGCEG = numero global du centre ELT "gauche" 627 : C NLCEG = numero local du centre ELT "gauche" 628 : C NGCED = numero global du centre ELT "droite" 629 : C NLCED = numero local du centre ELT "droite" 630 : C 631 : NGCEG = IPT1.NUM(1,NLCF) 632 : NGCF = IPT1.NUM(2,NLCF) 633 : NGCED = IPT1.NUM(3,NLCF) 634 : NLCEG = MLENT1.LECT(NGCEG) 635 : NLCED = MLENT1.LECT(NGCED) 636 : C 637 : C******* TEST: IPT2.NUM(1,NLCF) = IPT1.NUM(2,NLCF) 638 : C 639 : NGCF1 = IPT2.NUM(1,NLCF) 640 : IF( NGCF1 .NE. NGCF) THEN 641 : LOGAN = .TRUE. 642 : MESERR(1:40) = 'PRET, subroutine pre321.eso ' 643 : GOTO 9999 644 : ENDIF 645 : C 646 : C******* Cosinus directeurs des NORMALES aux faces 647 : C 648 : C On impose que les normales sont direct "Gauche" -> "Centre" 649 : C 650 : INDCEL = (NGCEG-1)*IDIMP1 651 : XG = XCOOR(INDCEL+1) 652 : YG = XCOOR(INDCEL+2) 653 : INDCEL = (NGCF-1)*IDIMP1 654 : XC = XCOOR(INDCEL + 1) 655 : YC = XCOOR(INDCEL + 2) 656 : INDCEL = (NGCED-1)*IDIMP1 657 : XD = XCOOR(INDCEL+1) 658 : YD = XCOOR(INDCEL+2) 659 : DXG = XC - XG 660 : DYG = YC - YG 661 : DXD = XC - XD 662 : DYD = YC - YD 663 : C 664 : C******* On calcule le sign du pruduit scalare 665 : C (Normales de Castem) * (vecteur "gauche" -> "centre") 666 : C 667 : CNX = MPNORM.VPOCHA(NLCF,1) 668 : CNY = MPNORM.VPOCHA(NLCF,2) 669 : ORIENT = CNX * DXG + CNY * DYG 670 : ORIENT = SIGN(1.0D0,ORIENT) 671 : IF(ORIENT .NE. 1.0D0)THEN 672 : LOGAN = .TRUE. 673 : MESERR(1:30)= 674 : & 'PRET , subroutine pre321.eso. ' 675 : GOTO 9999 676 : ENDIF 677 : CNX = CNX * ORIENT 678 : CNY = CNY * ORIENT 679 : C 680 : C********** Cosinus directeurs de tangent 2D 681 : C 682 : CTX = -1.0D0 * CNY 683 : CTY = CNX 684 : C 685 : C 686 : C******* Les autres MELVALs 687 : C 688 : C 689 : C******* N.B.: On suppose qu'on a déjà controlle RO, P > 0 690 : C y_i \in (0,1) 691 : C Si non il faut le faire, en utilisant LOGBOR, 692 : C LOGNEG, VALER, VAL1, VAL2 693 : C 694 : C 695 : C 696 : C******* NGCEG = NGCED -> Mur 697 : C 698 : IF( NGCEG .EQ. NGCED)THEN 699 : C 700 : C********** Sur le mur on fait de reconstruction sur l'etat gauche 701 : C 702 : C 703 : C********** Etat gauche 704 : C 705 : VALCEL = MPROP.VPOCHA(NLCEG, 1) 706 : ALCEL = MELALR.VPOCHA(NLCEG, 1) 707 : DCEL = MPGRR.VPOCHA(NLCEG, 1)*DXG + 708 : & MPGRR.VPOCHA(NLCEG, 2)*DYG 709 : ROG = VALCEL + ALCEL * DCEL 710 : C 711 : VALCEL = MPPP.VPOCHA(NLCEG, 1) 712 : ALCEL = MELALP.VPOCHA(NLCEG, 1) 713 : DCEL = MPGRP.VPOCHA(NLCEG, 1)*DXG + 714 : & MPGRP.VPOCHA(NLCEG, 2)*DYG 715 : PG = VALCEL + ALCEL * DCEL 716 : C 717 : LOGI2 = .FALSE. 718 : SUMY = 0.0D0 719 : DO I1 = 1, NESP, 1 720 : INDCEL = 2 * I1 - 1 721 : VALCEL = MPYP.VPOCHA(NLCEG,I1) 722 : ALCEL = MELALY.VPOCHA(NLCEG, I1) 723 : DCEL = MPGRY.VPOCHA(NLCEG, INDCEL)*DXG + 724 : & MPGRY.VPOCHA(NLCEG,INDCEL + 1 )*DYG 725 : ALCEL = VALCEL + ALCEL * DCEL 726 : SUMY = SUMY + ALCEL 727 : LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0) 728 : FRAMAS.FRAMG(I1) = ALCEL 729 : ENDDO 730 : LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0) 731 : C 732 : DO I1 = 1, NSCA, 1 733 : INDCEL = 2 * I1 - 1 734 : VALCEL = MPSCAP.VPOCHA(NLCEG,I1) 735 : ALCEL = MELALS.VPOCHA(NLCEG, I1) 736 : DCEL = MPGRS.VPOCHA(NLCEG, INDCEL)*DXG + 737 : & MPGRS.VPOCHA(NLCEG,INDCEL + 1 )*DYG 738 : ALCEL = VALCEL + ALCEL * DCEL 739 : SCALPA.FRAMG(I1) = ALCEL 740 : ENDDO 741 : C 742 : VALCEL = MPVITP.VPOCHA(NLCEG, 1) 743 : ALCEL = MELALV.VPOCHA(NLCEG, 1) 744 : DCEL = MPGRV.VPOCHA(NLCEG, 1)*DXG + 745 : & MPGRV.VPOCHA(NLCEG, 2)*DYG 746 : UXG = VALCEL + ALCEL * DCEL 747 : C 748 : VALCEL = MPVITP.VPOCHA(NLCEG, 2) 749 : ALCEL = MELALV.VPOCHA(NLCEG, 2) 750 : DCEL = MPGRV.VPOCHA(NLCEG, 3)*DXG + 751 : & MPGRV.VPOCHA(NLCEG, 4)*DYG 752 : UYG = VALCEL + ALCEL * DCEL 753 : C 754 : UNG = UXG * CNX + UYG * CNY 755 : UTG = UXG * CTX + UYG * CTY 756 : C 757 : C********** Si l'on fait pas de prediction, ce n'est pas necessaire de 758 : C controller la positivite' de la pression et de la densité; elle 759 : C est déjà garantie par la proprieté LED de limiteur; mais, vu 760 : C que le limiteur n'est pas calculé ici, mais dans un autre 761 : C operateur, on le fait 762 : C 763 : LOGI1 = (PG .LT. 0.0D0) .OR. (ROG .LT. 0.0D0) .OR. LOGI2 764 : C 765 : IF(LOGI1)THEN 766 : C 767 : C************* Premier ordre en espace local 768 : C 769 : ROG = MPROC.VPOCHA(NLCEG,1) 770 : ROD = ROG 771 : PG = MPPC.VPOCHA(NLCEG,1) 772 : PD = PG 773 : UNG = MPVITC.VPOCHA(NLCEG,1)*CNX + 774 : & MPVITC.VPOCHA(NLCEG,2)*CNY 775 : UTG = MPVITC.VPOCHA(NLCEG,1)*CTX + 776 : & MPVITC.VPOCHA(NLCEG,2)*CTY 777 : UND = -1.0D0 * UNG 778 : UTD = UTG 779 : DO I1 = 1, NESP, 1 780 : FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1) 781 : FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1) 782 : ENDDO 783 : DO I1 = 1, NSCA, 1 784 : SCALPA.FRAMG(I1) = MPSCAC.VPOCHA(NLCEG,I1) 785 : SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1) 786 : ENDDO 787 : ELSE 788 : C 789 : C********** Son etat droite 790 : C 791 : ROD = ROG 792 : PD = PG 793 : UND = -1.0D0 * UNG 794 : UTD = UTG 795 : DO I1 = 1, NESP, 1 796 : FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1) 797 : ENDDO 798 : DO I1 = 1, NSCA, 1 799 : SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1) 800 : ENDDO 801 : ENDIF 802 : C 803 : C************* Fin cas mur 804 : C 805 : ELSE 806 : C 807 : C************* Etat gauche 808 : C 809 : VALCEL = MPROP.VPOCHA(NLCEG, 1) 810 : ALCEL = MELALR.VPOCHA(NLCEG, 1) 811 : DCEL = MPGRR.VPOCHA(NLCEG, 1)*DXG + 812 : & MPGRR.VPOCHA(NLCEG, 2)*DYG 813 : ROG = VALCEL + ALCEL * DCEL 814 : C 815 : VALCEL = MPPP.VPOCHA(NLCEG, 1) 816 : ALCEL = MELALP.VPOCHA(NLCEG, 1) 817 : DCEL = MPGRP.VPOCHA(NLCEG, 1)*DXG + 818 : & MPGRP.VPOCHA(NLCEG, 2)*DYG 819 : PG = VALCEL + ALCEL * DCEL 820 : C 821 : LOGI2 = .FALSE. 822 : SUMY = 0.0D0 823 : DO I1 = 1, NESP, 1 824 : INDCEL = 2 * I1 - 1 825 : VALCEL = MPYP.VPOCHA(NLCEG,I1) 826 : ALCEL = MELALY.VPOCHA(NLCEG, I1) 827 : DCEL = MPGRY.VPOCHA(NLCEG, INDCEL)*DXG + 828 : & MPGRY.VPOCHA(NLCEG,INDCEL + 1 )*DYG 829 : ALCEL = VALCEL + ALCEL * DCEL 830 : SUMY = SUMY + ALCEL 831 : LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0) 832 : FRAMAS.FRAMG(I1) = ALCEL 833 : ENDDO 834 : LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0) 835 : C 836 : DO I1 = 1, NSCA, 1 837 : INDCEL = 2 * I1 - 1 838 : VALCEL = MPSCAP.VPOCHA(NLCEG,I1) 839 : ALCEL = MELALS.VPOCHA(NLCEG, I1) 840 : DCEL = MPGRS.VPOCHA(NLCEG, INDCEL)*DXG + 841 : & MPGRS.VPOCHA(NLCEG,INDCEL + 1 )*DYG 842 : ALCEL = VALCEL + ALCEL * DCEL 843 : SCALPA.FRAMG(I1) = ALCEL 844 : ENDDO 845 : C 846 : VALCEL = MPVITP.VPOCHA(NLCEG, 1) 847 : ALCEL = MELALV.VPOCHA(NLCEG, 1) 848 : DCEL = MPGRV.VPOCHA(NLCEG, 1)*DXG + 849 : & MPGRV.VPOCHA(NLCEG, 2)*DYG 850 : UXG = VALCEL + ALCEL * DCEL 851 : C 852 : VALCEL = MPVITP.VPOCHA(NLCEG, 2) 853 : ALCEL = MELALV.VPOCHA(NLCEG, 2) 854 : DCEL = MPGRV.VPOCHA(NLCEG, 3)*DXG + 855 : & MPGRV.VPOCHA(NLCEG, 4)*DYG 856 : UYG = VALCEL + ALCEL * DCEL 857 : C 858 : UNG = UXG * CNX + UYG * CNY 859 : UTG = UXG * CTX + UYG * CTY 860 : C 861 : C********** Positivite 862 : C 863 : LOGI1 = (PG .LT. 0.0D0) .OR. (ROG .LT. 0.0D0) .OR. LOGI2 864 : C 865 : IF(LOGI1)THEN 866 : C 867 : C************* Premier ordre en espace local 868 : C 869 : ROG = MPROC.VPOCHA(NLCEG,1) 870 : PG = MPPC.VPOCHA(NLCEG,1) 871 : UNG = MPVITC.VPOCHA(NLCEG,1)*CNX + 872 : & MPVITC.VPOCHA(NLCEG,2)*CNY 873 : UTG = MPVITC.VPOCHA(NLCEG,1)*CTX + 874 : & MPVITC.VPOCHA(NLCEG,2)*CTY 875 : DO I1 = 1, NESP, 1 876 : FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1) 877 : ENDDO 878 : DO I1 = 1, NSCA, 1 879 : SCALPA.FRAMG(I1) = MPSCAC.VPOCHA(NLCEG,I1) 880 : ENDDO 881 : ENDIF 882 : C 883 : C********** Etat droite 884 : C 885 : VALCEL = MPROP.VPOCHA(NLCED, 1) 886 : ALCEL = MELALR.VPOCHA(NLCED, 1) 887 : DCEL = MPGRR.VPOCHA(NLCED, 1)*DXD + 888 : & MPGRR.VPOCHA(NLCED, 2)*DYD 889 : ROD = VALCEL + ALCEL * DCEL 890 : C 891 : VALCEL = MPPP.VPOCHA(NLCED, 1) 892 : ALCEL = MELALP.VPOCHA(NLCED, 1) 893 : DCEL = MPGRP.VPOCHA(NLCED, 1)*DXD + 894 : & MPGRP.VPOCHA(NLCED, 2)*DYD 895 : PD = VALCEL + ALCEL * DCEL 896 : C 897 : LOGI2 = .FALSE. 898 : SUMY = 0.0D0 899 : DO I1 = 1, NESP, 1 900 : INDCEL = 2 * I1 - 1 901 : VALCEL = MPYP.VPOCHA(NLCED,I1) 902 : ALCEL = MELALY.VPOCHA(NLCED, I1) 903 : DCEL = MPGRY.VPOCHA(NLCED, INDCEL)*DXD + 904 : & MPGRY.VPOCHA(NLCED,INDCEL + 1 )*DYD 905 : ALCEL = VALCEL + ALCEL * DCEL 906 : SUMY = SUMY + ALCEL 907 : LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0) 908 : FRAMAS.FRAMD(I1) = ALCEL 909 : ENDDO 910 : LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0) 911 : C 912 : DO I1 = 1, NSCA, 1 913 : INDCEL = 2 * I1 - 1 914 : VALCEL = MPSCAP.VPOCHA(NLCED,I1) 915 : ALCEL = MELALS.VPOCHA(NLCED, I1) 916 : DCEL = MPGRS.VPOCHA(NLCED, INDCEL)*DXD + 917 : & MPGRS.VPOCHA(NLCED,INDCEL + 1 )*DYD 918 : ALCEL = VALCEL + ALCEL * DCEL 919 : SCALPA.FRAMD(I1) = ALCEL 920 : ENDDO 921 : C 922 : VALCEL = MPVITP.VPOCHA(NLCED, 1) 923 : ALCEL = MELALV.VPOCHA(NLCED, 1) 924 : DCEL = MPGRV.VPOCHA(NLCED, 1)*DXD + 925 : & MPGRV.VPOCHA(NLCED, 2)*DYD 926 : UXD = VALCEL + ALCEL * DCEL 927 : C 928 : VALCEL = MPVITP.VPOCHA(NLCED, 2) 929 : ALCEL = MELALV.VPOCHA(NLCED, 2) 930 : DCEL = MPGRV.VPOCHA(NLCED, 3)*DXD + 931 : & MPGRV.VPOCHA(NLCED, 4)*DYD 932 : UYD = VALCEL + ALCEL * DCEL 933 : C 934 : UND = UXD * CNX + UYD * CNY 935 : UTD = UXD * CTX + UYD * CTY 936 : C 937 : C********** Positivite 938 : C 939 : LOGI1 = (PD .LT. 0.0D0) .OR. (ROD .LT. 0.0D0) .OR. LOGI2 940 : C 941 : IF(LOGI1)THEN 942 : C 943 : C************* Premier ordre en espace local 944 : C 945 : ROD = MPROC.VPOCHA(NLCED,1) 946 : PD = MPPC.VPOCHA(NLCED,1) 947 : UND = MPVITC.VPOCHA(NLCED,1)*CNX + 948 : & MPVITC.VPOCHA(NLCED,2)*CNY 949 : UTD = MPVITC.VPOCHA(NLCED,1)*CTX + 950 : & MPVITC.VPOCHA(NLCED,2)*CTY 951 : DO I1 = 1, NESP, 1 952 : FRAMAS.FRAMD(I1) = MPYC.VPOCHA(NLCED,I1) 953 : ENDDO 954 : DO I1 = 1, NSCA, 1 955 : SCALPA.FRAMD(I1) = MPSCAC.VPOCHA(NLCED,I1) 956 : ENDDO 957 : ENDIF 958 : ENDIF 959 : C 960 : C******** Les MELVALs 961 : C 962 : MELRO.VELCHE(1,NLCF) = ROG 963 : MELRO.VELCHE(3,NLCF) = ROD 964 : MELP.VELCHE(1,NLCF) = PG 965 : MELP.VELCHE(3,NLCF) = PD 966 : MELVUN.VELCHE(1,NLCF) = UNG 967 : MELVUN.VELCHE(3,NLCF) = UND 968 : MELVUT.VELCHE(1,NLCF) = UTG 969 : MELVUT.VELCHE(3,NLCF) = UTD 970 : MELVNX.VELCHE(1,NLCF) = CNX 971 : MELVNY.VELCHE(1,NLCF) = CNY 972 : MELT1X.VELCHE(1,NLCF) = CTX 973 : MELT1Y.VELCHE(1,NLCF) = CTY 974 : DO I1 = 1, NESP, 1 975 : MELVA1 = MCHAMY.IELVAL(I1) 976 : MELVA1.VELCHE(1,NLCF) = FRAMAS.FRAMG(I1) 977 : MELVA1.VELCHE(3,NLCF) = FRAMAS.FRAMD(I1) 978 : ENDDO 979 : DO I1 = 1, NSCA, 1 980 : MELVA1 = MCHAMS.IELVAL(I1) 981 : MELVA1.VELCHE(1,NLCF) = SCALPA.FRAMG(I1) 982 : MELVA1.VELCHE(3,NLCF) = SCALPA.FRAMD(I1) 983 : ENDDO 984 : ENDDO 985 : C 986 : C**** Desactivation des SEGMENTs 987 : C 988 : SEGDES IPT1 989 : SEGDES IPT2 990 : C 991 : C**** Le MPOVALs 'Prediction' sont detruits (si existentes) 992 : C 993 : IF(LOGTEM)THEN 994 : SEGSUP MPROP 995 : SEGSUP MPVITP 996 : SEGSUP MPPP 997 : IF(LYC) SEGSUP MPYP 998 : IF(LSCAC) SEGSUP MPSCAP 999 : SEGDES MPGAMC 1000 : ENDIF 1001 : C 1002 : SEGDES MPROC 1003 : SEGDES MPGRR 1004 : SEGDES MELALR 1005 : SEGDES MPVITC 1006 : SEGDES MPGRV 1007 : SEGDES MELALV 1008 : SEGDES MPPC 1009 : SEGDES MPGRP 1010 : SEGDES MELALP 1011 : IF(LYC)THEN 1012 : SEGDES MPYC 1013 : SEGDES MPGRY 1014 : SEGDES MELALY 1015 : DO I1 = 1, NESP, 1 1016 : MELVA1 = MCHAMY.IELVAL(I1) 1017 : SEGDES MELVA1 1018 : ENDDO 1019 : SEGDES MCHAMY 1020 : SEGSUP FRAMAS 1021 : ENDIF 1022 : IF(LSCAC)THEN 1023 : SEGDES MPSCAC 1024 : SEGDES MPGRS 1025 : SEGDES MELALS 1026 : DO I1 = 1, NSCA, 1 1027 : MELVA1 = MCHAMS.IELVAL(I1) 1028 : SEGDES MELVA1 1029 : ENDDO 1030 : SEGDES MCHAMS 1031 : SEGSUP SCALPA 1032 : ENDIF 1033 : SEGDES MPNORM 1034 : C 1035 : SEGDES MELRO 1036 : SEGDES MELP 1037 : SEGDES MELVUN 1038 : SEGDES MELVUT 1039 : SEGDES MELVNX 1040 : SEGDES MELVNY 1041 : SEGDES MELT1X 1042 : SEGDES MELT1Y 1043 : C 1044 : C**** Destruction du MELNTI correspondance local/global 1045 : C 1046 : SEGSUP MLENT1 1047 : C 1048 : 9999 CONTINUE 1049 : C 1050 : RETURN 1051 : END 1052 : 1053 : 1054 : 1055 : 1056 : 1057 : 1058 : 1059 : 1060 : 1061 : 1062 : 1063 :
© Cast3M 2003 - All rights reserved.
Disclaimer