1 : * CHITRNSP PROCEDUR JC220346 12/09/12 21:15:01 7501 2 : 'DEBPROC' CHITRNSP TRANSI*'TABLE' ; 3 : *---------------------------------------------------------------------- 4 : * Transport geochimie 5 : *---------------------------------------------------------------------- 6 : * 7 : *------------------------------ 8 : * Phrase d'appel (en GIBIANE) : 9 : *------------------------------ 10 : * 11 : * CHITRNSP TABLE ; 12 : * 13 : *---------------------------------- 14 : * Opérandes (à mettre dans TABLE) : 15 : *---------------------------------- 16 : * 17 : * ___________________________________________________________________ 18 : * | | 19 : * | Indice Contenu | 20 : * | | 21 : * ------------------------------------------------------------------- 22 : * | | 23 : * |------------------------------------------------ | 24 : * |Données physiques, géométriques et materielles : | 25 : * |------------------------------------------------ | 26 : * | | 27 : * |'MODELE' Objet modèle (MMODEL créé par MODE) | 28 : * | | 29 : * |'DIFFUSION' Données physiques et materielles : | 30 : * | conductivité hydraulique (MCHAML créé par MATE) | 31 : * | | 32 : * |'POROSITE' Contient pour chaque élément la valeur moyenne de la | 33 : * | porosité (défaut 1 ) nom CK | 34 : * | | 35 : * |'DOMAINE' Références géométriques (TABLE créée par KDOM) | 36 : * | | 37 : * |'CONVECTION' Flux de la vitesse convective (CHAMPOIN de support | 38 : * | DOMAINE.FACE) | 39 : * | | 40 : * | | 41 : * | 'CHIMI1' Table issue de CHI1 | 42 : * | | 43 : * | 'TAQU' concentration des aqueux au centre des faces | 44 : * | CHAMPOIN possedant une composante par composant | 45 : * | chimique. | 46 : * | | 47 : * | 'ITERC' nombre max d'itérations de couplage (défaut 100) | 48 : * | | 49 : * | 'PRECISION' précision critère de convergence pour le couplage | 50 : * | valeur par défaut 1.E-3 | 51 : * | | 52 : * | 'LOGC' parametres de calcul de CHI2 | 53 : * | 'TOT' | 54 : * | <'EPS'> <'ITMAX'> <'ITERSOLI'> <'PRECPE'> | 55 : * | <'NITERPE'> <'DELPE'> <'NFI'> <'FIONI'> <'NTY4'> <'TEMPE'> | 56 : * | <'CLIM'> <'SORTIE'> <'IMPRIM'> | 57 : * | | 58 : * |-------------------------------------- | 59 : * |Conditions aux limites / chargements : | 60 : * |-------------------------------------- | 61 : * | | 62 : * |'BLOCAGE' Contient les matrices de blocage (RIGIDITE) | 63 : * | | 64 : * |'TRACE_IMPOSE' Valeurs des traces de concentrations imposées | 65 : * | chargement de CHPOIN au centre des faces | 66 : * | | 67 : * |'FLUX_IMPOSE' Valeurs des flux de concentrations imposées | 68 : * | chargement de CHPOIN au centre des faces | 69 : * | | 70 : * |'SOURCE' Valeurs de la source | 71 : * | Chargement relatifs aux CHPOIN centre | 72 : * | ( défaut CHPOIN centre 0.) | 73 : * | | 74 : * |--------------------- | 75 : * |Algorithme en temps : | 76 : * |--------------------- | 77 : * | | 78 : * |'PAS_DE_TEMPS' Valeur du pas de temps de calcul (FLOTTANT) | 79 : * | | 80 : * | 'TEMPS_FINAL' Valeur du temps final (FLOTTANT) | 81 : * | | 82 : * |'TEMPS_SAUVES' Valeur des temps sauvegardés (LISTREEL - défaut | 83 : * | on sauve tous les pas de temps) | 84 : * | | 85 : * |'THETA' Coefficient de relaxation du terme de diffusion | 86 : * | compris entre 0. et 1. | 87 : * | (theta-méthode) (FLOTTANT - défaut 1.) | 88 : * | Possibilité de non-convergence lorsque theta<1/2 | 89 : * | Valeurs de theta généralement utilisées : | 90 : * | Schéma de Euler explicite : 0. | 91 : * | Schéma de Crank-Nicholson : 1/2 | 92 : * | Schéma de Euler implicite : 1. | 93 : * | | 94 : * | | 95 : * | 'SORTIE' listmots liste des élèments à conserver (cf CHI2) | 96 : * |_________________________________________________________________| 97 : * 98 : * 99 : * 100 : *--------------------------------- 101 : * Résultats (stockés dans TABLE) : 102 : *--------------------------------- 103 : * 104 : * ___________________________________________________________________ 105 : * | | 106 : * | Indice Contenu | 107 : * | | 108 : * ------------------------------------------------------------------- 109 : * | | 110 : * |'SOUSTYPE' 'GEOCHIMIE' (type MOT) | 111 : * | | 112 : * |'TEMPS' TABLE contenant les temps sauvegardés (FLOTTANT) | 113 : * | | 114 : * |'TOT' TABLE contenant les concentrations totales aux centres | 115 : * | CHPOIN centre ayant une composante par composant chimique | 116 : * | | 117 : * |'AQUE' TABLE contenant les concentrations des aqueux | 118 : * | CHPOIN centre ayant une composante par composant chimique | 119 : * | | 120 : * |'FIXE' TABLE contenant les concentrations des fixés | 121 : * | CHPOIN centre ayant une composante par composant chimique | 122 : * | | 123 : * |'TAQU' TABLE contenant les traces de concentrations des aqueux | 124 : * | CHPOIN face ayant une composante par composant chimique | 125 : * | on aura en plus une table pour chacun des éléments de la liste | 126 : * | SORTIE. Les sauvegardes des CHPOIN centre issus du calcul CHI2 | 127 : * | | 128 : * |_________________________________________________________________| 129 : * 130 : * 131 : * ___________________________________________________________________ 132 : * | | 133 : * | Les tables résultats sont indicés par des entiers variant de 0 | 134 : * | à N . | 135 : * | A l'indice 0 on stocke les valeurs initiales, aux indices | 136 : * | suivants les champs correspondant au temps de sortie TEMPS.I . | 137 : * | Les champs servant en cas de reprise sont stockés à l'indice N .| 138 : * |_________________________________________________________________| 139 : * 140 : * 141 : * 142 : *--------------------------------------------------------------------* 143 : * RECUPERATION DES DONNEES PHYSIQUES, GEOMETRIQUES ET MATERIELLES * 144 : *--------------------------------------------------------------------* 145 : * 146 : * SOUSTYPE 147 : 'SI' ( 'NON' ('EXIS' TRANSI 'SOUSTYPE') ) ; 148 : 'ERREUR' 'indice SOUSTYPE absent de la table des données ' ; 149 : 'QUITTER' CHITRNSP ; 150 : 'FINSI' ; 151 : 'SI' ( 'NEG' ( TRANSI. 'SOUSTYPE') 'GEOCHIMIE' ) ; 152 : 'ERREUR' 'indice SOUSTYPE incorrect dans la table des données ' ; 153 : 'QUITTER' CHITRNSP ; 154 : 'FINSI' ; 155 : * MODELE 156 : 'SI' ( 'EXISTE' TRANSI 'MODELE' ) ; 157 : MODHYB = TRANSI . 'MODELE' ; 158 : MCHYB = 'DOMA' MODHYB 'ORIENTAT' ; 159 : XVOLU = 'DOMA' MODHYB 'VOLUME' ; 160 : CEHYTOT = 'DOMA' MODHYB 'CENTRE' ; 161 : FACHYTOT = 'DOMA' MODHYB 'FACE' ; 162 : 'SINON' ; 163 : 'ERREUR' 'Il manque le modele' ; 164 : 'QUITTER' CHITRNSP ; 165 : 'FINSI' ; 166 : * DIFFUSION 167 : 'SI' ( 'EXISTE' TRANSI 'DIFFUSION' ) ; 168 : MAT1 = TRANSI . 'DIFFUSION' ; 169 : 'SINON' ; 170 : 'ERREUR' 171 : 'Indice DIFFUSION absent de la table de données.' ; 172 : 'QUITTER' CHITRNSP ; 173 : 'FINSI' ; 174 : * POROSITE 175 : 'SI' ( 'EXISTE' TRANSI 'POROSITE' ) ; 176 : COEMK = TRANSI . 'POROSITE' ; 177 : 'SINON' ; 178 : COEMK = 'MANU' 'CHPO' CEHYTOT 1 'CK' 1.D0 ; 179 : 'FINSI' ; 180 : COEMM= 'KCHA' MODHYB 'CHAM' COEMK ; 181 : COEMC= 'NOMC' 'SCAL' COEMK ; 182 : EMSURF = 'INTG' 'ELEM' MODHYB COEMM ; 183 : * CONVECTION 184 : 'SI' ( 'EXISTE' TRANSI 'CONVECTION' ) ; 185 : QFACE = TRANSI . 'CONVECTION' ; 186 : 'SINON' ; 187 : 'ERREUR' 188 : 'Indice CONVECTION absent de la table de données.' ; 189 : 'QUITTER' CHITRNSP ; 190 : 'FINSI' ; 191 : * CHIMI1 192 : 'SI' ( 'EXISTE' TRANSI 'CHIMI1' ) ; 193 : TB1 = TRANSI . 'CHIMI1' ; 194 : 'SI' ( 'NON' ('EXISTE' TB1 'SOUSTYPE' ) ) ; 195 : 'ERREUR' 196 : 'Indice CHIMI1 ne convient pas.' ; 197 : 'QUITTER' CHITRNSP ; 198 : 'FINSI' ; 199 : 'SI' ( 'NEG' ( TB1.'SOUSTYPE' ) 'CHIMI1' ) ; 200 : 'ERREUR' 'Le sous-typage de la table CHIMI1 est incorrect'; 201 : 'QUITTER' CHITRNSP ; 202 : FINSI ; 203 : NBCOMP= DIME ( TB1 . 'DESCHI' .'IDX' ) ; 204 : 'MESS' ' NOMBRE DE COMPOSANTS ' NBCOMP ; 205 : 'SINON' ; 206 : 'ERREUR' 207 : 'Indice CHIMI1 absent de la table de données.' ; 208 : 'QUITTER' CHITRNSP ; 209 : 'FINSI' ; 210 : * PRECISION 211 : 'SI' ( 'EXISTE' TRANSI 'PRECISION' ) ; 212 : EPSS = TRANSI . 'PRECISION' ; 213 : 'SINON' ; 214 : EPSS = 1.D-3 ; 215 : 'FINSI' ; 216 : * ITERC 217 : 'SI' ( 'EXISTE' TRANSI 'ITERC' ) ; 218 : ITERC = TRANSI . 'ITERC' ; 219 : 'SINON' ; 220 : ITERC= 100 ; 221 : 'FINSI' ; 222 : *--------------------------------------------------------------------* 223 : * RECUPERATION DES DONNEES POUR LE SCHEMA EN TEMPS * 224 : *--------------------------------------------------------------------* 225 : * 226 : * THETA 227 : 'SI' ( 'EXISTE' TRANSI 'THETA' ) ; 228 : TETA = TRANSI . 'THETA' ; 229 : 'SINON' ; 230 : TETA = 1.D0 ; 231 : 'FINSI' ; 232 : * PAS_DE_TEMPS 233 : 'SI' ( 'EXISTE' TRANSI 'PAS_DE_TEMPS' ) ; 234 : DELTAT = TRANSI . 'PAS_DE_TEMPS' ; 235 : 'SINON' ; 236 : 'ERREUR' 237 : 'Indice PAS_DE_TEMPS absent de la table de données.' ; 238 : 'QUITTER' CHITRNSP ; 239 : 'FINSI' ; 240 : * TEMPS INITIAL 241 : 'SI' ( 'EXISTE' TRANSI 'TEMPS') ; 242 : IND1= 'INDE' (TRANSI. 'TEMPS') ; 243 : LN1= 'DIME' IND1 ; 244 : ISOR0 = IND1 . LN1 ; 245 : TINIT= TRANSI.'TEMPS' . ISOR0 ; 246 : 'SINON' ; 247 : TRANSI. 'TEMPS' = TABLE ; 248 : TINIT=0.D0 ; 249 : TRANSI. 'TEMPS'. 0 = TINIT ; 250 : ISOR0= 0 ; 251 : LN1=1 ; 252 : 'FINSI' ; 253 : * TEMPS_FINAL 254 : 'SI' ( 'EXISTE' TRANSI 'TEMPS_FINAL' ) ; 255 : TFINAL = TRANSI . 'TEMPS_FINAL' ; 256 : SI ( TFINAL <EG TINIT ) ; 257 : 'ERREUR' 258 : ('CHAI' ' TEMPS_FINAL incorrect TEMPS INITIAL=' TINIT ) ; 259 : 'QUITTER' CHITRNSP ; 260 : 'FINSI' ; 261 : EPS0= DELTAT*0.1 ; 262 : NBTPS= 'ENTI' ((TFINAL -TINIT + EPS0 )/ DELTAT) ; 263 : SI ( 'NEG' (NBTPS*DELTAT) (TFINAL - TINIT) EPS0 ) ; 264 : 'ERREUR' 265 : ' TEMPS_FINAL n est pas un multiple du PAS_DE_TEMPS' ; 266 : 'QUITTER' CHITRNSP ; 267 : 'FINSI' ; 268 : 'SINON' ; 269 : 'ERREUR' 270 : 'Indice TEMPS_FINAL absent de la table de données.' ; 271 : 'QUITTER' CHITRNSP ; 272 : 'FINSI' ; 273 : * TEMPS_SAUVES 274 : 'SI' ( 'EXISTE' TRANSI 'TEMPS_SAUVES' ) ; 275 : TPSINI= TINIT ; 276 : ISOR= 1 ; 277 : TPSOR = ORDO (TRANSI . 'TEMPS_SAUVES') ; 278 : TEMS = 'EXTR' TPSOR 1 ; 279 : 'SI' ( TINIT 'EGA' TEMS EPS0 ) ; 280 : * SI LE TEMPS D'INITIALISATION EST DANS LA LISTE 281 : * ON L'ENLEVE CAR CE TEMPS LA EST SAUVE DE TOUTE MANIERE 282 : TPSOR= ENLE TPSOR 1 ; 283 : 'FINSI' ; 284 : LTPSOR= LECT ; 285 : DSOR = 'DIME' TPSOR ; 286 : 'REPETER' BOU3 NBTPS ; 287 : TEMS = 'EXTR' TPSOR ISOR ; 288 : TPSINI= TPSINI +DELTAT ; ; 289 : 'SI' ( TPSINI 'EGA' TEMS EPS0 ) ; 290 : LTPSOR = 'INSE' LTPSOR ISOR &BOU3 ; 291 : ISOR = ISOR+1 ; 292 : 'SI' ( ISOR > DSOR ) ; 293 : 'QUITTER' BOU3 ; 294 : 'FINSI' ; 295 : 'FINSI' ; 296 : 'FIN' BOU3 ; 297 : DLSOR = DIME LTPSOR ; 298 : 'SI' ((EXTR LTPSOR DLSOR) NEG NBTPS ) ; 299 : DLSOR= DLSOR+1 ; 300 : LTPSOR = 'INSE' LTPSOR DLSOR NBTPS ; 301 : 'MESS' ' LA LISTE TEMPS_SAUVES EST INCORRECTE' ; 302 : MESS 'indices des temps sauvegardés' ; 303 : list ltpsor ; 304 : 'FINSI' ; 305 : 'SINON' ; 306 : * MESS 'NBTPS ' NBTPS ; 307 : 'SI'( NBTPS 'EGA' 1 ) ; 308 : LTPSOR= 'LECT' 1 ; 309 : 'SINON' ; 310 : LTPSOR= 'LECT' 1 'PAS' 1 NBTPS ; 311 : 'FINSI' ; 312 : 'FINSI' ; 313 : * IL FAUT CONTROLER LES LONGUEURS DES TABLES 314 : * TAQU 315 : 'SI' ( 'EXISTE' TRANSI 'TAQU' ) ; 316 : LNN='DIME' (TRANSI. 'TAQU' ) ; 317 : 'SI' ('NEG' LN1 LNN) ; 318 : 'ERREUR' 'dimensions incohérentes entre TEMPS et TAQU ' ; 319 : 'QUITTER' CHITRNSP ; 320 : 'FINSI' ; 321 : TAQU0 = TRANSI . 'TAQU' . ISOR0 ; 322 : TAQU = TRANSI . 'TAQU' . ISOR0 ; 323 : 'SINON' ; 324 : 'ERREUR' 325 : 'Indice TAQU absent de la table de données.' ; 326 : 'QUITTER' CHITRNSP ; 327 : 'FINSI' ; 328 : * AQUE 329 : 'SI' ( 'EXISTE' TRANSI 'AQUE' ) ; 330 : LNN='DIME' (TRANSI. 'AQUE' ) ; 331 : 'SI' ('NEG' LN1 LNN) ; 332 : 'ERREUR' 'dimensions incohérentes entre TEMPS et AQUE ' ; 333 : 'QUITTER' CHITRNSP ; 334 : 'FINSI' ; 335 : 'SINON' ; 336 : 'SI' ( EGA ISOR0 0) ; 337 : TRANSI. 'AQUE'= TABLE ; 338 : 'SINON' ; 339 : 'ERREUR' 340 : 'Indice AQUE absent de la table de données.' ; 341 : 'QUITTER' CHITRNSP ; 342 : 'FINSI'; 343 : 'FINSI' ; 344 : * FIXE 345 : 'SI' ( 'EXISTE' TRANSI 'FIXE' ) ; 346 : LNN='DIME' (TRANSI. 'FIXE' ) ; 347 : 'SI' ('NEG' LN1 LNN) ; 348 : 'ERREUR' 'dimensions incohérentes entre TEMPS et FIXE ' ; 349 : 'QUITTER' CHITRNSP ; 350 : 'FINSI' ; 351 : 'SINON' ; 352 : 'SI' ( EGA ISOR0 0) ; 353 : TRANSI. 'FIXE'= TABLE ; 354 : 'SINON' ; 355 : 'ERREUR' 356 : 'Indice FIXE absent de la table de données.' ; 357 : 'QUITTER' CHITRNSP ; 358 : 'FINSI'; 359 : 'FINSI' ; 360 : * FLUX 361 : 'SI' ( 'EXISTE' TRANSI 'FLUX' ) ; 362 : LNN='DIME' (TRANSI. 'FLUX' ) ; 363 : 'SI' ('NEG' LN1 LNN) ; 364 : 'ERREUR' 'dimensions incohérentes entre TEMPS et FLUX ' ; 365 : 'QUITTER' CHITRNSP ; 366 : 'FINSI' ; 367 : 'SINON' ; 368 : 'SI' ( EGA ISOR0 0) ; 369 : TRANSI. 'FLUX'= TABLE ; 370 : * TRANSI. 'FLU2'= TABLE ; 371 : 'FINSI'; 372 : 'FINSI' ; 373 : * parametres de CHIMI2 374 : TBPARM= TABLE ; 375 : TBPAR2= TABLE ; 376 : TBPAR2.'SOUSTYPE'='DONNEES_CHIMIQUES' ; 377 : * 378 : 'SI' ( 'EXISTE' TRANSI 'LOGC' ) ; 379 : LNN='DIME' (TRANSI. 'LOGC' ) ; 380 : 'SI' ('NEG' LN1 LNN) ; 381 : 'ERREUR' 'dimensions incohérentes entre TEMPS et LOGC ' ; 382 : 'QUITTER' CHITRNSP ; 383 : 'FINSI' ; 384 : TBPAR2.'LOGC' = TRANSI . 'LOGC' . ISOR0 ; 385 : CLOGC = TRANSI . 'LOGC' . ISOR0 ; 386 : 'SINON' ; 387 : 'ERREUR' 388 : 'Indice LOGC absent de la table de données.' ; 389 : 'QUITTER' CHITRNSP ; 390 : 'FINSI' ; 391 : 'SI' ( 'EXISTE' TRANSI 'TOT' ) ; 392 : LNN='DIME' (TRANSI. 'TOT' ) ; 393 : 'SI' ('NEG' LN1 LNN) ; 394 : 'ERREUR' 'dimensions incohérentes entre TEMPS et TOT ' ; 395 : 'QUITTER' CHITRNSP ; 396 : 'FINSI' ; 397 : TBPAR2.'TOT' = TRANSI . 'TOT' . ISOR0 ; 398 : TNC = TRANSI . 'TOT' . ISOR0 ; 399 : TT1= 'EXTR' TNC 'COMP' ; 400 : 'SINON' ; 401 : 'ERREUR' 402 : 'Indice TOT absent de la table de données.' ; 403 : 'QUITTER' CHITRNSP ; 404 : 'FINSI' ; 405 : 'SI' ( 'EXISTE' TRANSI 'EPS' ) ; 406 : TBPARM.'EPS' = TRANSI . 'EPS' ; 407 : 'FINSI' ; 408 : 'SI' ( 'EXISTE' TRANSI 'ITMAX' ) ; 409 : TBPARM.'ITMAX' = TRANSI . 'ITMAX' ; 410 : 'FINSI' ; 411 : 'SI' ( 'EXISTE' TRANSI 'ITERSOLI' ) ; 412 : TBPARM.'ITERSOLI' = TRANSI . 'ITERSOLI' ; 413 : 'FINSI' ; 414 : 'SI' ( 'EXISTE' TRANSI 'PRECPE' ) ; 415 : TBPARM.'PRECPE' = TRANSI . 'PRECPE' ; 416 : 'FINSI' ; 417 : 'SI' ( 'EXISTE' TRANSI 'NITERPE' ) ; 418 : TBPARM.'NITERPE' = TRANSI . 'NITERPE' ; 419 : 'FINSI' ; 420 : 'SI' ( 'EXISTE' TRANSI 'DELPE' ) ; 421 : TBPARM.'DELPE' = TRANSI . 'DELPE' ; 422 : 'FINSI' ; 423 : 'SI' ( 'EXISTE' TRANSI 'MDELPE' ) ; 424 : TBPARM.'MDELPE' = TRANSI . 'MDELPE' ; 425 : 'FINSI' ; 426 : 'SI' ( 'EXISTE' TRANSI 'NFI' ) ; 427 : TBPARM.'NFI' = TRANSI . 'NFI' ; 428 : 'FINSI' ; 429 : 'SI' ( 'EXISTE' TRANSI 'FION' ) ; 430 : LNN='DIME' (TRANSI. 'FION' ) ; 431 : 'SI' ('NEG' LN1 LNN) ; 432 : 'ERREUR' 'dimensions incohérentes entre TEMPS et FION ' ; 433 : 'QUITTER' CHITRNSP ; 434 : 'FINSI' ; 435 : TBPAR2.'FIONI' = TRANSI . 'FION' . ISOR0 ; 436 : CFIONI= TRANSI . 'FION' ; 437 : 'SINO' ; 438 : CFIONI= TNC -TNC ; 439 : 'FINSI' ; 440 : 'SI' ( 'EXISTE' TRANSI 'NTY4' ) ; 441 : LNN='DIME' (TRANSI. 'NTY4' ) ; 442 : 'SI' ('NEG' LN1 LNN) ; 443 : 'ERREUR' 'dimensions incohérentes entre TEMPS et NTY4 ' ; 444 : 'QUITTER' CHITRNSP ; 445 : 'FINSI' ; 446 : TBPAR2.'NTY4' = TRANSI . 'NTY4' . ISOR0 ; 447 : CNTY4 = TRANSI . 'NTY4' . ISOR0 ; 448 : ICTY4= 1 ; 449 : 'SINON' ; 450 : ICTY4= 0 ; 451 : 'FINSI' ; 452 : 'SI' ( 'EXISTE' TRANSI 'TEMPE' ) ; 453 : TBPAR2.'TEMPE' = TRANSI . 'TEMPE' ; 454 : TEMPERAT = TRANSI . 'TEMPE' ; 455 : 'FINSI' ; 456 : 'SI' ( 'EXISTE' TRANSI 'CLIM' ) ; 457 : TBPAR2.'CLIM' = TRANSI . 'CLIM' ; 458 : CCLIM= TRANSI . 'CLIM' ; 459 : 'FINSI' ; 460 : 'SI' ( 'EXISTE' TRANSI 'SORTIE' ) ; 461 : TBPARM.'SORTIE' = TRANSI . 'SORTIE' ; 462 : 'FINSI' ; 463 : 'SI' ( 'EXISTE' TRANSI 'IMPRIM' ) ; 464 : TBPARM.'IMPRIM' = TRANSI . 'IMPRIM' ; 465 : 'FINSI' ; 466 : * 467 : * ------------------------------------------------------------ 468 : * DECROISSANCE 469 : * ------------------------------------------------------------ 470 : * 471 : 'SI' ( 'EXISTE' TRANSI 'DECROISSANCE') ; 472 : TETDEC= TRANSI.'DECROISSANCE'.TETA ; 473 : * MESS ' TDEC ' ; 474 : TDEC= INDEX ( TRANSI. 'DECROISSANCE' ) ; 475 : NBDEC= DIME TDEC ; 476 : * MESS 'NBDEC ' ; 477 : *list nbdec ; 478 : NBDEC= NBDEC-1 ; 479 : *list nbdec ; 480 : *LIST TDEC ; 481 : TBDEC= TRANSI.'DECROISSANCE'. 1 ; 482 : MO1PERE MOPERE NPERE = NOCOMCHI TB1 'NUMCOMP' (TBDEC.PERE) ; 483 : LAMP= EXCO (TNC -TNC) MOPERE MOPERE ; 484 : MALAMP= 'EXTR' LAMP 'MAIL' ; 485 : * MESS 'LAMP ' ; 486 : * LIST LAMP ; 487 : LISMPERE= MOTS ; 488 : LISMFILS= MOTS ; 489 : 'REPE' BDECR NBDEC ; 490 : TBDEC= TRANSI.'DECROISSANCE'. &BDECR ; 491 : MO1PERE MOPERE NPERE = NOCOMCHI TB1 'NUMCOMP' (TBDEC.PERE) ; 492 : MO1FILS MOFILS NFILS = NOCOMCHI TB1 'NUMCOMP' (TBDEC.FILS) ; 493 : * LAMP=LAMP+( NOMC TBDEC.LAMBDA MOPERE ) ; 494 : LAMP= LAMP+('MANU' 'CHPO' MALAMP 1 MOPERE TBDEC.LAMBDA ) ; 495 : LISMPERE= 'INSE' LISMPERE &BDECR MOPERE ; 496 : LISMFILS= 'INSE' LISMFILS &BDECR MOFILS ; 497 : 'FIN' BDECR ; 498 : 'FINSI' ; 499 : * MESS ' LAMP apres chargement ' ; 500 : * LIST LAMP ; 501 : * MESS ' LISMPERE ' ; 502 : * LIST LISMPERE ; 503 : * MESS ' LISMFILS ' ; 504 : * LIST LISMFILS ; 505 : * 506 : *--------------------------------------------------------------------* 507 : * RECUPERATION DES CONDITIONS AUX LIMITES ET DES CHARGEMENTS * 508 : *--------------------------------------------------------------------* 509 : * 510 : * CL de type Dirichlet : BLOCAGE 511 : * TRACE_IMPOSE 512 : 'SI' ( 'EXISTE' TRANSI 'BLOCAGE' ) ; 513 : MATBLOC = TRANSI . 'BLOCAGE' ; 514 : 'SI' ( 'EXISTE' TRANSI 'TRACE_IMPOSE') ; 515 : CCHAIMP = TRANSI . 'TRACE_IMPOSE' ; 516 : 'SINON' ; 517 : 'ERREUR' 'Valeurs de traces de charge imposée absentes' ; 518 : 'QUITTER' CHITRNSP ; 519 : 'FINSI' ; 520 : 'FINSI' ; 521 : * FLUX_IMPOSE 522 : 'SI' ( 'EXISTE' TRANSI 'FLUX_IMPOSE') ; 523 : FLUIMPO = TRANSI . 'FLUX_IMPOSE' ; 524 : 'FINSI' ; 525 : * SOURCE 526 : 'SI' ( 'EXISTE' TRANSI 'SOURCE' ) ; 527 : CHASOUR = TRANSI . 'SOURCE' ; 528 : 'SINON' ; 529 : MOCOMP= 'EXTR' TT1 1 ; 530 : SOURC0= 'MANU' 'CHPO' CEHYTOT 1 MOCOMP 0.D0 ; 531 : 'REPE' BOU6 NBCOMP ; 532 : MOCOMP= 'EXTR' TT1 &BOU6 ; 533 : TERSC = 'MANU' 'CHPO' CEHYTOT 1 MOCOMP 0.D0 ; 534 : SOURC0= SOURC0 +TERSC ; 535 : 'FIN' BOU6 ; 536 : 'FINSI' ; 537 : * tersc1 source a utiliser dans le calcul de AF 538 : TERSC1 = 'MANU' 'CHPO' CEHYTOT 1 'SOUR' 0.D0 ; 539 : * 540 : *------------------------------------------- ------------------------* 541 : * INITIALISATION DE LA TABLE RESULTAT 542 : *--------------------------------------------------------------------* 543 : * 544 : 'SI' ( 'EXISTE' TRANSI 'SORTIE' ) ; 545 : NBSOR = DIME ( TRANSI . 'SORTIE' ) ; 546 : SI (EGA ISOR0 0) ; 547 : 'REPETER' BOU1 NBSOR ; 548 : MOSOR= 'EXTR' ( TRANSI . 'SORTIE' ) &BOU1 ; 549 : TRANSI . MOSOR = TABLE ; 550 : 'FIN' BOU1 ; 551 : 'SINON' ; 552 : 'REPETER' BOU2 NBSOR ; 553 : MOSOR= 'EXTR' ( TRANSI . 'SORTIE' ) &BOU2 ; 554 : 'SI' ( 'EXIS' TRANSI MOSOR) ; 555 : LNN='DIME' (TRANSI. MOSOR ) ; 556 : 'SI' ('NEG' LN1 LNN) ; 557 : MESERR = 'CHAI' 'dimensions incohérentes entre TEMPS et' MOSOR ; 558 : 'ERREUR' MESERR ; 559 : 'QUITTER' CHITRNSP ; 560 : 'FINSI' ; 561 : 'SINON' ; 562 : 'ERREUR' 563 : ( CHAI 'Indice ' MOSOR ' absent de la table de données.' ) ; 564 : 'QUITTER' CHITRNSP ; 565 : FINSI ; 566 : 'FIN' BOU2 ; 567 : 'FINSI' ; 568 : 'FINSI' ; 569 : 570 : *--------------------------------------------------------------------* 571 : * CE QUI EST INDEPENDANT DU COMPOSANT ET DU TEMPS * 572 : *--------------------------------------------------------------------* 573 : * 574 : * on récupère les noms des reactifs 575 : * 576 : NBREA= 0 ; 577 : SI ( EXIS TB1 'IDEN' 'REAC') ; 578 : NOMREAC= MOTS ; 579 : NBREA=DIME TB1.IDEN.REAC ; 580 : REPETER BOUREA NBREA ; 581 : NUNU= EXTR ( TB1.IDEN.REAC ) &BOUREA ; 582 : NNCH NOM2 NUNU = NOCOMCHI TB1 'NUMCOMP' NUNU ; 583 : NOMREAC= NOMREAC ET ( MOTS NOM2 ) ; 584 : FIN BOUREA; 585 : * LIST NOMREAC ; 586 : FINSI ; 587 : * 588 : * on récupère les noms des non reactifs 589 : * 590 : NBNR= 0 ; 591 : SI ( EXIS TB1 'IDEN' 'PARF') ; 592 : NOMPARF= MOTS ; 593 : NBNR=DIME TB1.IDEN.PARF ; 594 : NBNR1= NBNR ; 595 : REPETER BOUNR NBNR1; 596 : NUNU= EXTR ( TB1.IDEN.PARF ) &BOUNR ; 597 : NNCH NOM2 NUNU = NOCOMCHI TB1 'NUMCOMP' NUNU ; 598 : * 599 : * les non reactifs intervenant dans les decroissances sont traités 600 : * comme des reactifs sinon les quantitées de matieres devenant non 601 : * reactives ne sont plus transportées 602 : 'SI' ( 'EXISTE' TRANSI 'DECROISSANCE') ; 603 : IREA= FAUX ; 604 : 'REPE' B2DECR NBDEC ; 605 : TBDEC= TRANSI.'DECROISSANCE'. &B2DECR ; 606 : 'SI' ('EGA' (TBDEC.'PERE') NUNU) ; 607 : IREA= VRAI ; 608 : 'QUITTER' B2DECR ; 609 : 'SINON' ; 610 : 'SI' ('EGA' (TBDEC.'FILS') NUNU) ; 611 : IREA= VRAI ; 612 : 'QUITTER' B2DECR ; 613 : 'FINSI' ; 614 : 'FINSI' ; 615 : 'FIN' B2DECR ; 616 : 'SI' IREA ; 617 : NBREA=NBREA+1 ; 618 : NBNR= NBNR-1 ; 619 : NOMREAC= NOMREAC ET ( MOTS NOM2 ) ; 620 : 'SINON' ; 621 : NOMPARF= NOMPARF ET ( MOTS NOM2 ) ; 622 : 'FINSI' ; 623 : 'SINON' ; 624 : NOMPARF= NOMPARF ET ( MOTS NOM2 ) ; 625 : 'FINSI' ; 626 : FIN BOUNR ; 627 : * LIST NOMPARF ; 628 : FINSI ; 629 : * 630 : * 631 : * Table utilisée par les operateurs MATP, SMTP, HYBP et HDEBI 632 : * 633 : TAB = 'TABLE' ; 634 : TAB.'SOUSTYPE' = 'DARCY_TRANSITOIRE' ; 635 : TAB.'THETA' = TETA ; 636 : TAB.'THETA_CONVECTION'= TETA ; 637 : TAB.'SURF' = EMSURF ; 638 : TAB.'PAS' = DELTAT ; 639 : TAB.'TRACE'= MANU CHPO FACHYTOT 1 TH 0.D0 ; 640 : TAB.'CHARGE'= MANU CHPO CEHYTOT 1 H 0.D0 ; 641 : * 642 : * Initialisations du calcul 643 : * 644 : MASHYB = 'MHYB' MODHYB MAT1 ; 645 : MC SMTR = 'SMTP' MODHYB MASHYB TAB TERSC1 QFACE ; 646 : MF = 'MATP' MODHYB MASHYB TAB ; 647 : AF = MF ET MC ; 648 : * 649 : * 650 : TB3= CHI2 TB1 TBPAR2 TBPARM ; 651 : * 652 : * 653 : CAQU=TB3.AQUE ; 654 : CAQU0=CAQU ; 655 : CFIX0=TB3.FIXE ; 656 : CFIXE=TB3.FIXE ; 657 : CLOGC= TB3.LOGC ; 658 : FLU00= TAQU -TAQU ; 659 : FLU01= FLU00 ; 660 : * 661 : * Les coefficients 662 : * 663 : COEMC= COEMC * XVOLU ; 664 : PETID= DMTD MODHYB MASHYB ; 665 : ALFA= (TETA* PETID) +(COEMC/DELTAT ) ; 666 : ALFA= ALFA ** (-1) ; 667 : COEF1=ALFA*COEMC/DELTAT ; 668 : COEF2= ALFA* PETID*(1. - TETA) ; 669 : COEF3= ALFA*(1. - TETA) ; 670 : COEF4= 1. - (ALFA * TETA * PETID ) ; 671 : COEF5= ALFA*TETA*PETID ; 672 : * 673 : * Indice ISOR0 de la table resulat 674 : * 675 : TMPS= TINIT ; 676 : TRANSI . 'TEMPS' . ISOR0 = TMPS ; 677 : TRANSI . 'TOT' . ISOR0 = TNC ; 678 : TRANSI . 'AQUE' . ISOR0 = CAQU ; 679 : TRANSI . 'FIXE' . ISOR0 = CFIXE ; 680 : TRANSI . 'TAQU' . ISOR0 = TAQU ; 681 : TRANSI . 'LOGC' . ISOR0 = CLOGC ; 682 : TRANSI . 'FLUX' . ISOR0 = 'HDEB' MODHYB MASHYB CAQU TAQU 683 : QFACE ; 684 : * 'MESS' ' FLUX 0' ; 685 : * LIST ( TRANSI . 'FLUX' . ISOR0 ) ; 686 : 'SI' ( 'EXISTE' TRANSI 'SORTIE' ) ; 687 : 'REPETER' BOU4 NBSOR ; 688 : MOSOR= 'EXTR' ( TRANSI . 'SORTIE' ) &BOU4 ; 689 : TRANSI . MOSOR . ISOR0 = TB3. MOSOR ; 690 : 'FIN' BOU4 ; 691 : 'SI' ( 'EXISTE' TRANSI 'PREC' ) ; 692 : CPRECIP= TB3.'PREC' ; 693 : 'FINSI' ; 694 : 'SI' ( 'EXISTE' TRANSI 'FION' ) ; 695 : CFIONI= TB3.'FION' ; 696 : 'FINSI' ; 697 : 'SI' ( 'EXISTE' TRANSI 'TYP6' ) ; 698 : CTYP6= TB3.'TYP6' ; 699 : 'FINSI' ; 700 : 'SI' ( 'EXISTE' TRANSI 'TYP5' ) ; 701 : CTYP5= TB3.'TYP5' ; 702 : 'FINSI' ; 703 : 'SI' ( 'EXISTE' TRANSI 'TYP3' ) ; 704 : CTYP3= TB3.'TYP3' ; 705 : 'FINSI' ; 706 : 'SI' ( 'EXISTE' TRANSI 'NTY4' ) ; 707 : CNTY4= TB3.'NTY4' ; 708 : ICTY4= 1 ; 709 : 'FINSI' ; 710 : 'SI' ( 'EXISTE' TRANSI 'SURF' ) ; 711 : CSURF= TB3.'SURF' ; 712 : 'FINSI' ; 713 : 'SI' ( 'EXISTE' TRANSI 'SOLU' ) ; 714 : CSOLU= TB3.'SOLU' ; 715 : 'FINSI' ; 716 : 'FINSI' ; 717 : * 718 : * ------------------------------------------------------------------- 719 : * Boucle sur le temps 720 : * ------------------------------------------------------------------- 721 : * 722 : ISOR=1 ; 723 : ITERCUM= 0 ; 724 : NPAFLUX= 0 ; 725 : REPETER BOUTMP NBTPS ; 726 : NUSOR= 'EXTR' LTPSOR ISOR ; 727 : TMPS= TMPS+DELTAT ; 728 : TNC1= TNC ; 729 : 'SI' ( 'EXISTE' TRANSI 'SOURCE' ) ; 730 : SOURC= TIRE CHASOUR TMPS ; 731 : 'SINON' ; 732 : SOURC= SOURC0 ; 733 : 'FINSI' ; 734 : 'SI' ( 'EXISTE' TRANSI 'BLOCAGE' ) ; 735 : CHAIMP= TIRE CCHAIMP TMPS ; 736 : CHAIMP= 'CHAN' 'ATTRIBUT' CHAIMP 'NATURE' 'DISCRET' ; 737 : 'FINSI' ; 738 : 'SI' ( 'EXISTE' TRANSI 'FLUX_IMPOSE' ) ; 739 : FLUIMP= TIRE FLUIMPO TMPS ; 740 : FLUIMP= 'CHAN' 'ATTRIBUT' FLUIMP 'NATURE' 'DISCRET' ; 741 : 'FINSI' ; 742 : TOTO= TAQU ; 743 : * FLU2= TOTO - TOTO ; 744 : DOMERR= CEHYTOT ; 745 : * 746 : * --------------------------- 747 : * Transport des non réactifs 748 : * --------------------------- 749 : * 750 : SI (NBNR > 0 ) ; 751 : * 752 : I=0 ; 753 : REPETER BLOC1 NBNR ; 754 : I= I + 1 ; 755 : MOCOMP= EXTR NOMPARF I ; 756 : CONC= EXCO MOCOMP TOTO MOCOMP ; 757 : CHA2= EXCO MOCOMP TNC MOCOMP ; 758 : TSOUR= EXCO MOCOMP SOURC 'SOUR' ; 759 : TOTO= TOTO - CONC ; 760 : TNC = TNC - CHA2 ; 761 : * 762 : * = Conditions initiales = 763 : * 764 : TFHYB = NOMC 'TH' CONC ; 765 : TCHYB = 'HYBP' MODHYB MASHYB TFHYB ; 766 : TAB.'TRACE' = TFHYB ; 767 : TAB.'CHARGE' = TCHYB ; 768 : * 769 : * = VALEURS imposées = 770 : * 771 : * 772 : RIGS SMTR = 'SMTP' MODHYB MASHYB TAB TSOUR QFACE ; 773 : * 774 : 'SI' ('EXISTE' TRANSI 'BLOCAGE') ; 775 : CLIAB= EXCO MOCOMP CHAIMP 'H' ; 776 : EEBAS = 'DEPI' MATBLOC CLIAB ; 777 : AFF = AF 'ET' MATBLOC ; 778 : SMTR = SMTR 'ET' EEBAS ; 779 : 'SINON' ; 780 : AFF =AF ; 781 : 'FINSI' ; 782 : 'SI' ('EXISTE' TRANSI 'FLUX_IMPOSE') ; 783 : FLUIMPC= EXCO MOCOMP FLUIMP 'FLUX' ; 784 : SMTR = SMTR ET FLUIMPC ; 785 : 'FINSI' ; 786 : 787 : TP1 = 'RESO' AFF SMTR ; 788 : TP2 = 'EXCO' TP1 'TH' 'TH' ; 789 : CONC0 = 'NOMC' 'SCAL' TP2 ; 790 : CONC1 = 'NOMC' 'SCAL' TFHYB ; 791 : CONC2 = TETA *CONC0 + ((1.D0-TETA )*CONC1) ; 792 : CONC3 = (-1.D0) * CONC2 * QFACE ; 793 : TERSC2 = 'DIVU' MODHYB CONC3 MCHYB ; 794 : TERSC2 = 'NOMC' 'SOUR' TERSC2 ; 795 : TERSCE = TSOUR + TERSC2 ; 796 : CHA2 = 'HYBP' MODHYB MASHYB TP2 TAB TERSCE ; 797 : CONC= NOMC MOCOMP TP2 ; 798 : CHA2= NOMC MOCOMP CHA2 ; 799 : TOTO= TOTO+CONC ; 800 : TNC = TNC + CHA2 ; 801 : FIN BLOC1 ; 802 : TAQU= TOTO ; 803 : TAQU0=TAQU ; 804 : FINSI ; 805 : * 806 : * 807 : * --------------------------- 808 : * Transport des réactifs 809 : * --------------------------- 810 : * 811 : AAS1= BMTD MODHYB MASHYB (COEF1*TNC) ; 812 : ABS1= BMTD MODHYB MASHYB (ALFA*SOURC) ; 813 : ACS1= BMTD MODHYB MASHYB ( COEF2 * CAQU0) ; 814 : ADS1=DMMU MODHYB MASHYB QFACE TAQU0 ; 815 : AES1= BMTD MODHYB MASHYB (COEF3*ADS1) ; 816 : AS1 = ACS1 - ABS1 - AAS1 - AES1 ; 817 : AT1=(COEF1*TNC) - (ALFA*(1.-TETA)*PETID*CAQU0) +(COEF3*ADS1) ; 818 : AT1=AT1+ (ALFA * SOURC ) ; 819 : CFION2=CFIONI; 820 : CLOGC2=CLOGC ; 821 : CAQU2=CAQU ; 822 : 'SI' ( 'EXISTE' TRANSI 'CLIM' ) ; 823 : CCLIM2=CCLIM ; 824 : 'FINSI' ; 825 : 'SI' ( 'EXISTE' TRANSI 'TEMPE' ) ; 826 : TEMPERA2=TEMPERAT ; 827 : 'FINSI' ; 828 : CFIXE= CFIX0 ; 829 : CFIX2=CFIXE ; 830 : TAQU = TAQU0 ; 831 : * ------------- 832 : * Couplage 833 : * ------------- 834 : ITECO= 0 ; 835 : REPETER BLOC2 ITERC ; 836 : ITECO= ITECO+ 1 ; 837 : AS2 = BMTD MODHYB MASHYB ( COEF4 * CFIXE) ; 838 : AS = AS1 +AS2 ; 839 : ABT2= COEF5*CFIXE ; 840 : * 841 : * 842 : * Résolution composante par composante 843 : * 844 : TNC0=TNC ; 845 : REPETER BLOC4 NBREA ; 846 : MOCOMP= EXTR NOMREAC &BLOC4 ; 847 : * LIST MOCOMP ; 848 : * 849 : CONC0= EXCO MOCOMP TAQU MOCOMP ; 850 : TAQU = TAQU - CONC0 ; 851 : ASI = EXCO MOCOMP AS 'FLUX' ; 852 : 'SI' ('EXISTE' TRANSI 'BLOCAGE' ) ; 853 : CLIAB= EXCO MOCOMP CHAIMP 'H' ; 854 : EEBAS = 'DEPI' MATBLOC CLIAB ; 855 : AFF = AF 'ET' MATBLOC ; 856 : ASS = ASI ET EEBAS ; 857 : 'SINON' ; 858 : ASS = ASI ; 859 : AFF= AF ; 860 : 'FINSI' ; 861 : 'SI' ('EXISTE' TRANSI 'FLUX_IMPOSE' ) ; 862 : FLUIMPC=EXCO MOCOMP FLUIMP 'FLUX' ; 863 : ASS = ASS ET FLUIMPC ; 864 : 'FINSI' ; 865 : CONC1= 'RESOU' AFF ASS ; 866 : CONC0= EXCO CONC1 'TH' MOCOMP ; 867 : TAQU = TAQU + CONC0 ; 868 : LAT1=EXCOM MOCOMP AT1 MOCOMP ; 869 : EABT2=EXCO MOCOMP ABT2 MOCOMP ; 870 : AAT2= DMMU MODHYB MASHYB QFACE CONC0 ; 871 : AT2= EABT2 + (ALFA*TETA*AAT2 ); 872 : TNL=EXCO MOCOMP TNC MOCOMP ; 873 : TNC=TNC -TNL ; 874 : TNC= TNC +AT2 +LAT1 ; 875 : FIN BLOC4 ; 876 : * 877 : * Prise en compte de la décroissance 878 : * 879 : 'SI' ( 'EXISTE' TRANSI 'DECROISSANCE') ; 880 : * mess ' avant decroissance ' ; 881 : * list tnc ; 882 : TNDEC=(TETDEC*TNC)+((1.-TETDEC)*TNC1) ; 883 : TNDEC= EXCO TNDEC LISMPERE LISMPERE ; 884 : TTPERE= LAMP*TNDEC LISMPERE LISMPERE LISMPERE ; 885 : TTFILS=NOMC TTPERE LISMPERE LISMFILS 'NATU' 'DISCRET' ; 886 : TNC=TNC+(DELTAT*(TTFILS-TTPERE)) ; 887 : * mess ' apres decroissance ' ; 888 : * list tnc ; 889 : 'FINSI' ; 890 : * 891 : * Convergence sur TNC 892 : * 893 : * NBCOMP nombre de composantes de CTOT 894 : DIFTN=ABS(TNC-TNC0) ; 895 : EPSTN0=EPSS*((ABS TNC )+(MASQ TNC EGALE 0. ) ) ; 896 : MAMA0= MASQ DIFTN SUPERIEUR 'SOMME' EPSTN0 ; 897 : * MESS 'mama0 ' ; LIST MAMA0 ; 898 : SI ( MAMA0 EGA 0 ) ; 899 : MESS ' on a convergé ' ; 900 : QUITTER BLOC2 ; 901 : FINSI ; 902 : EPSTN=EPSS*0.001*((ABS TNC )+(MASQ TNC EGALE 0. ) ) ; 903 : MAMA= MASQ DIFTN SUPERIEUR EPSTN ; 904 : II=1 ; 905 : MOCOMP= EXTR TT1 II ; 906 : BB= EXCO MOCOMP MAMA ; 907 : NBC1= NBCOMP-1 ; 908 : SI ( NBC1 NEG 0 ) ; 909 : REPETER BLOC3 NBC1 ; 910 : II=II+1 ; 911 : MOCOMP= EXTR TT1 II ; 912 : CC= EXCO MOCOMP MAMA ; 913 : BB=BB+CC ; 914 : FIN BLOC3 ; 915 : FINSI ; 916 : DOMERR= BB POIN SUPERIEUR 0. ; 917 : * OPTION DONN 5 ; 918 : CFION2= REDU DOMERR CFIONI ; 919 : CLOGC2= REDU DOMERR CLOGC ; 920 : CAQU2= REDU DOMERR CAQU ; 921 : CFIX2= REDU DOMERR CFIXE ; 922 : TTNC= REDU DOMERR TNC ; 923 : TBPAR2.FIONI= CFION2 ; 924 : TBPAR2.LOGC= CLOGC2 ; 925 : TBPAR2.TOT= TTNC ; 926 : 'SI' ( 'EXISTE' TRANSI 'CLIM' ) ; 927 : CCLIM2= REDU DOMERR CCLIM ; 928 : TBPAR2.CLIM= CCLIM2 ; 929 : 'FINSI' ; 930 : 'SI' ( 'EXISTE' TRANSI 'TEMPE' ) ; 931 : TEMPERA2= REDU DOMERR TEMPERAT ; 932 : TBPAR2.'TEMPE'= TEMPERA2 ; 933 : 'FINSI' ; 934 : 'SI' ( ICTY4 'EGA' 1 ) ; 935 : CPPP = REDU DOMERR CNTY4 ; 936 : TBPAR2.'NTY4'= CPPP ; 937 : 'FINSI' ; 938 : * on va calculer chimi2 sur un sous maillage et on garde dans CCAQU 939 : * ce qui ne bougera pas 940 : CCFIXE= CFIXE -CFIX2 ; 941 : CCAQU= CAQU -CAQU2 ; 942 : CCLOGC= CLOGC -CLOGC2 ; 943 : * 944 : * 945 : TB3= CHI2 TB1 TBPAR2 TBPARM ; 946 : * 947 : * 948 : CAQU= CCAQU + TB3.AQUE ; 949 : CFIXE= CCFIXE + TB3.FIXE ; 950 : CLOGC= CCLOGC+TB3.LOGC ; 951 : 'SI' ( 'EXISTE' TRANSI 'PREC' ) ; 952 : CPPP='REDU' DOMERR CPRECIP ; 953 : CPRECIP= CPRECIP -CPPP + TB3.'PREC' ; 954 : 'FINSI' ; 955 : 'SI' ( 'EXISTE' TRANSI 'FION' ) ; 956 : CPPP='REDU' DOMERR CFIONI ; 957 : CFIONI= CFIONI - CPPP + TB3.'FION' ; 958 : 'FINSI' ; 959 : 'SI' ( 'EXISTE' TRANSI 'TYP6' ) ; 960 : CPPP='REDU' DOMERR CTYP6 ; 961 : CTYP6= CTYP6 - CPPP + TB3.'TYP6' ; 962 : 'FINSI' ; 963 : 'SI' ( 'EXISTE' TRANSI 'TYP5' ) ; 964 : CPPP='REDU' DOMERR CTYP5 ; 965 : CTYP5= CTYP5 -CPPP + TB3.'TYP5' ; 966 : 'FINSI' ; 967 : 'SI' ( 'EXISTE' TRANSI 'TYP3' ) ; 968 : CPPP='REDU' DOMERR CTYP3 ; 969 : CTYP3= CTYP3 -CPPP +TB3.'TYP3' ; 970 : 'FINSI' ; 971 : 'SI' ( 'EXISTE' TRANSI 'NTY4' ) ; 972 : CPPP='REDU' DOMERR CNTY4 ; 973 : CNTY4= CNTY4 -CPPP + TB3.'NTY4' ; 974 : 'FINSI' ; 975 : 'SI' ( 'EXISTE' TRANSI 'SURF' ) ; 976 : CPPP='REDU' DOMERR CSURF ; 977 : CSURF= CSURF -CPPP +TB3.'SURF' ; 978 : 'FINSI' ; 979 : 'SI' ( 'EXISTE' TRANSI 'SOLU' ) ; 980 : CPPP='REDU' DOMERR CSOLU ; 981 : CSOLU= CSOLU -CPPP +TB3.'SOLU' ; 982 : 'FINSI' ; 983 : CAQU0=CAQU ; 984 : CFIX0= CFIXE ; 985 : * 986 : FIN BLOC2 ; 987 : * ------------ 988 : * 989 : CAQU0=CAQU ; 990 : CFIX0= CFIXE ; 991 : ITERCUM=ITERCUM+ ITECO ; 992 : MESS ' Iterations ' ITECO ITERCUM ; 993 : TAQU0=TAQU ; 994 : * Calcul du flux 995 : NPAFLUX= NPAFLUX+1 ; 996 : FLUPA= FLU01+('HDEB' MODHYB MASHYB CAQU TAQU QFACE ) ; 997 : 'OUBL' FLU01 ; 998 : SI( EXIS TB1 'IDEN' 'IMMO') ; 999 : NBIMMO=DIME TB1.IDEN.IMMO ; 1000 : REPE BOUIMMO NBIMMO ; 1001 : NUNU= EXTR( TB1.IDEN.IMMO) &BOUIMMO ; 1002 : NNCH NOM2 NUNU = NOCOMCHI TB1 'NUMCOMP' NUNU ; 1003 : FLU03= EXCO NOM2 FLUPA NOM2 ; 1004 : FLUPA = FLUPA- FLU03 ; 1005 : FIN BOUIMMO ; 1006 : FINSI ; 1007 : FLU01= FLUPA ; 1008 : SI( NUSOR 'EGA' &BOUTMP ) ; 1009 : ISOR2=ISOR0+ISOR ; 1010 : TRANSI. 'TEMPS' . ISOR2 = TMPS ; 1011 : TRANSI.TOT . ISOR2 = TNC ; 1012 : TRANSI.AQUE . ISOR2 = CAQU ; 1013 : TRANSI.FIXE . ISOR2 = CFIXE; 1014 : TRANSI.'TAQU' . ISOR2 = TAQU; 1015 : TRANSI.'LOGC' . ISOR2 = CLOGC ; 1016 : TRANSI . 'FLUX' . ISOR2 = FLUPA / NPAFLUX ; 1017 : * TRANSI . 'FLU2' . ISOR2 = FLU2 ; 1018 : 'SI' ( 'EXISTE' TRANSI 'PREC' ) ; 1019 : TRANSI.'PREC' . ISOR2 = CPRECIP ; 1020 : 'FINSI' ; 1021 : 'SI' ( 'EXISTE' TRANSI 'FION' ) ; 1022 : TRANSI.'FION' . ISOR2 = CFIONI ; 1023 : 'FINSI' ; 1024 : 'SI' ( 'EXISTE' TRANSI 'TYP6' ) ; 1025 : TRANSI.'TYP6' . ISOR2 = CTYP6 ; 1026 : 'FINSI' ; 1027 : 'SI' ( 'EXISTE' TRANSI 'TYP5' ) ; 1028 : TRANSI.'TYP5' . ISOR2 = CTYP5 ; 1029 : 'FINSI' ; 1030 : 'SI' ( 'EXISTE' TRANSI 'TYP3' ) ; 1031 : TRANSI.'TYP3' . ISOR2 = CTYP3 ; 1032 : 'FINSI' ; 1033 : 'SI' ( 'EXISTE' TRANSI 'NTY4' ) ; 1034 : TRANSI.'NTY4' . ISOR2 = CNTY4 ; 1035 : 'FINSI' ; 1036 : 'SI' ( 'EXISTE' TRANSI 'SURF' ) ; 1037 : TRANSI.'SURF' . ISOR2 = CSURF ; 1038 : 'FINSI' ; 1039 : 'SI' ( 'EXISTE' TRANSI 'SOLU' ) ; 1040 : TRANSI.'SOLU' . ISOR2 =CSOLU ; 1041 : 'FINSI' ; 1042 : FLU01=FLU00 ; 1043 : NPAFLUX= 0 ; 1044 : ISOR=ISOR+1 ; 1045 : 'FINSI' ; 1046 : MENAGE ; 1047 : FIN BOUTMP ; 1048 : * 1049 : 'FINP' TRANSI ; 1050 : 1051 : 1052 :
© Cast3M 2003 - All rights reserved.
Disclaimer