1 : * TRANSIT1 PROCEDUR JEANV 94/06/14 21:16:44 1165 2 : 'DEBPROC' TRANSIT1 ETAB*'TABLE ' ; 3 : *----------------------------------------------------------------------* 4 : * * 5 : * T R A N S I T 1 * 6 : * --------------- * 7 : * * 8 : * RESOLUTION D'UN PROBLEME DE THERMIQUE NON-LINEAIRE * 9 : * EN REGIME PERMANENT,A L'AIDE DE LA METHODE DU POINT FIXE * 10 : * * 11 : * ETAB, TABLE CONTENANT EN ENTREE : * 12 : * * 13 : * INDICE 'SOUSTYPE' THERMIQUE * 14 : * INDICE 'COQUE' TYPE D'ELEMENT COQUE * 15 : * INDICE 'EPAI' EPAISSEUR DE LA COQUE * 16 : * INDICE 'PEAU' PEAU SUR LAQUELLE S'EFFECTUE L'ECHANGE * 17 : * INDICE 'BLOCAGE' MATRICE DE BLOCAGE (CREEE PAR "BLOQUE") * 18 : * INDICE 'IMPOSE' VALEURS IMPOSEES (CREE PAR "DEPI") * 19 : * INDICE 'INSTANT(0)' CHAMP DE TEMPERATURE INITIAL * 20 : * OU -INDICE 'CONDUC(0)' TABLE DES VALEURS INITIALES DE LA * 21 : * I CONDUCTIVITE INDICEE PAR LES MODELES DES * 22 : * I SOUS ZONES * 23 : * -INDICE 'CONVEC(0)' TABLE DES VALEURS INITIALES DU COEFFICIENT * 24 : * I D'ECHANGE DE CONVECTION INDICEE PAR LES * 25 : * I MODELES DES PAROIS DE CONVECTION * 26 : * -INDICE 'TEMPEX(0)' TABLE DES TEMPERATURES INITIALES INDICEE * 27 : * I PAR LES MODELES DES PAROIS DE CONVECTION * 28 : * INDICE 'CONDUCTIVITE' MATRICE DE CONDUCTIVITE * 29 : * OU -INDICE 'TABCOND' TABLE DES OBJETS D'EVOLUTION K(T) INDICEE * 30 : * PAR LES MODELES DES SOUS ZONES * 31 : * INDICE 'CONVECTION' TABLE DES TABLES POUR UNE CONDITION DE * 32 : * CONVECTION : * 33 : * 'TABCONV1' TABLE DES COEFFICIENTS D'ECHANGE OU TABLE * 34 : * DES EVOLUTION DU COEFFICIENT D'ECHANGE * 35 : * FONCTION DE LA TEMPERATURE INDICEE PAR LES * 36 : * MODELES DES SURFACES DE CONVECTION * 37 : * 'TABTE1' TABLE DES TEMPERATURES EXTERIEURES OU TABLE* 38 : * DES EVOLUTION DES TEMPERATURES EXTERIEURES * 39 : * FONCTION DE LA TEMPERATURE DE SURFACE DE * 40 : * CONVECTION INDICEE PAR LES MODELES DES * 41 : * SURFACES DE CONVECTION * 42 : * INDICE 'FLUX' FLUX EQUIVALENTS * 43 : * INDICE 'CRITERE' CRITERE DE CONVERGENCE * 44 : * (10E-5 PAR DEFAUT) * 45 : * INDICE 'NITER' REACTUALISATION DE LA CONDUCTIVITE TOUTES * 46 : * LES NITER ITERATIONS (NITER=1 PAR DEFAUT) * 47 : * INDICE 'NIVEAU' NIVEAU DE MESSAGES (NIVEAU=0 PAR DEFAUT) * 48 : * INDICE 'ITERMAX' NOMBRE D'ITERATIONS MAXIMUM * 49 : * (ITERMAX=10 PAR DEFAUT) * 50 : * * 51 : * ETAB CONTENANT EN SORTIE : * 52 : * * 53 : * INDICE 'TEMPERATURE' CHAMP DE TEMPERATURE RESULTAT * 54 : * * 55 : * D.R., LE 7 JUILLET 1988.VERSION DU 18 JANVIER 1989. * 56 : * * 57 : *----------------------------------------------------------------------* 58 : CONVERGE = ( 1 'EGA' 1 ) ; 59 : 'REPETER' PROC 1 ; 60 : 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ; 61 : 'MESS' 'SOUS TYPAGE INCORRECT DE LA TABLE EN ENTREE|' ; 62 : 'QUITTER' PROC ; 63 : 'FINSI' ; 64 : 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ; 65 : NIV_MESS = ETAB.'NIVEAU' ; 66 : 'SINON' ; 67 : NIV_MESS = 0 ; 68 : 'FINSI' ; 69 : 'SI' ( NIV_MESS '>EG' 1 ) ; 70 : 'SAUTER' 1 'LIGNE' ; 71 : 'MESS' '*** DEBUT DE LA PROCEDURE "TRANSIT1" ***' ; 72 : 'FINSI' ; 73 : * 74 : *--- RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB" 75 : * 76 : 'SI' ('EXISTE' ETAB 'COQUE') ; 77 : TYP_COQ = ETAB.'COQUE' ; 78 : 'SI' ( 'EXISTE' ETAB 'EPAI' ) ; 79 : EP = ETAB.'EPAI' ; 80 : 'SINON' ; 81 : 'SAUTER' 1 'LIGNE' ; 82 : 'MESS' '*** IL MANQUE L EPAISSEUR DE LA COQUE | *** '; 83 : 'QUITTER' PROC ; 84 : 'FINSI' ; 85 : 'FINSI' ; 86 : * 87 : *-- lecture de la conductivite 88 : * 89 : 'SI' ('EXISTE' ETAB 'CONDUCTIVITE') ; 90 : MAT_COND = ETAB.'CONDUCTIVITE' ; 91 : 'SINON' ; 92 : 'SI' ( 'EXISTE' ETAB 'TABCOND' ) ; 93 : TAB_COND = ETAB.TABCOND ; 94 : 'SINON' ; 95 : 'MESS' '*** LA DONNEE DE LA CONDUCTIVITE EST INCORECTE | *** '; 96 : 'QUITTER' PROC ; 97 : 'FINSI' ; 98 : 'FINSI'; 99 : * 100 : *-- lecture des conditions limites 101 : * 102 : 'SI' ('EXISTE' ETAB 'BLOCAGE') ; 103 : MAT_BLO = ETAB.'BLOCAGE' ; 104 : 'FINSI'; 105 : 'SI' ('EXISTE' ETAB 'IMPOSE') ; 106 : VAL_IMPO = ETAB.'IMPOSE' ; 107 : 'FINSI'; 108 : 'SI' ('EXISTE' ETAB 'FLUX') ; 109 : QTE_FLUX = ETAB.'FLUX' ; 110 : 'FINSI'; 111 : * 112 : *-- lecture des parametres numeriques 113 : * 114 : 'SI' ( 'EXISTE' ETAB 'CRITERE' ) ; 115 : EPSILON = ETAB.'CRITERE' ; 116 : 'SINON' ; 117 : EPSILON = 1.E-5 ; 118 : 'FINSI' ; 119 : 'SI' ( 'EXISTE' ETAB 'NITER' ) ; 120 : NBRE_ITE = ETAB.'NITER' ; 121 : 'SI' ( NIV_MESS '>EG' 1 ) ; 122 : 'SAUTER' 1 'LIGNE' ; 123 : 'MESS' 'REACTUALISATION DE LA MATRICE DE CONDUCTIVITE TOUTES ' 124 : 'LES ' NBRE_ITE 'ITERATIONS' ; 125 : 'FINSI' ; 126 : 'SINON' ; 127 : NBRE_ITE = 1 ; 128 : 'FINSI' ; 129 : 'SI' ( 'EXISTE' ETAB 'ITERMAX' ) ; 130 : ITER_MAX = ETAB.'ITERMAX' ; 131 : 'SINON' ; 132 : ITER_MAX = 10 ; 133 : 'FINSI' ; 134 : * 135 : *-- gestion de la convection 136 : * 137 : 'SI' ( 'EXISTE' ETAB 'CONVECTION' ) ; 138 : CTAB = ETAB.'CONVECTION' ; 139 : 'SI' ( 'EXISTE' CTAB 'TABCONV1' ) ; 140 : TAB_CON1 = CTAB.'TABCONV1' ; 141 : 'SI' ('EXISTE' CTAB 'TABTE1') ; 142 : TAB_TE1 = CTAB.'TABTE1' ; 143 : 'SINON' ; 144 : TAB_TE1 = TABLE ; 145 : 'FINSI' ; 146 : 'SINON' ; 147 : 'MESS' '*** LA DONNE DE LA CONVECTION EST INCORECTE ***' ; 148 : 'QUITTER' PROC ; 149 : 'FINSI' ; 150 : 'FINSI' ; 151 : * 152 : *-- gestion du champ de temperature initial 153 : * 154 : 'SI' ( 'EXISTE' ETAB 'CONDUC(0)' ) ; 155 : TCND0 = ETAB.'CONDUC(0)' ; 156 : 'SI' ( 'EXISTE' ETAB 'COQUE' ) ; 157 : 'SI' ( 'EXISTE' ETAB 'PEAU' ) ; 158 : PE = ETAB.'PEAU' ; 159 : 'SINON' ; 160 : 'MESS' '*** PRECISER LA PEAU | ***' ; 161 : 'QUITTER' PROC ; 162 : 'FINSI' ; 163 : 'FINSI' ; 164 : * 165 : *-- calcul de MAT_CND1 : matrice de conduction 166 : * 167 : IDCOND = 'INDE' TCND0 ; 168 : NCOND = 'DIME' IDCOND ; 169 : ICOND = 0 ; 170 : 'REPETE' BOUCOND NCOND ; 171 : ICOND = ICOND + 1 ; 172 : MOD1 = IDCOND.ICOND ; 173 : VCOND = TCND0.MOD1 ; 174 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 175 : MAT_CON = 'MATR' MOD1 'K' VCOND 'EPAI' EP; 176 : 'SINON' ; 177 : MAT_CON = 'MATR' MOD1 'K' VCOND ; 178 : 'FINSI' ; 179 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 180 : RIG_COND = 'CONDUCTIVITE' MOD1 MAT_CON PE ; 181 : 'SINON' ; 182 : RIG_COND = 'CONDUCTIVITE' MOD1 MAT_CON ; 183 : 'FINSI' ; 184 : 'SI' ('EGA' ICOND 1 ) ; 185 : MAT_CND1 = RIG_COND ; 186 : 'SINON' ; 187 : MAT_CND1 = MAT_CND1 'ET' RIG_COND ; 188 : 'FINSI' ; 189 : 'FIN' BOUCOND ; 190 : * 191 : *-- test d'existance de convec(0) . Calcul de CHAL_TE1 (flux) 192 : * et de RIG_CON1 (conductivite) 193 : * 194 : 'SI' ('EXISTE' ETAB 'CONVEC(0)' ) ; 195 : T_CV0 = ETAB.CONVEC(0) ; 196 : 'SI' ( 'EXISTE' ETAB 'COQUE' ) ; 197 : PE = ETAB.'PEAU' ; 198 : 'FINSI' ; 199 : 'SI' ('EXISTE' ETAB 'TEMPEX(0)' ) ; 200 : T_TE0 = ETAB.TEMPEX(0) ; 201 : 'SINON' ; 202 : T_TE0 = TABLE ; 203 : * 'MESS' '*** LA DONNEE DE LA TEMP. INIT. EST INCORECTE| *** ' ; 204 : * 'QUITTER' PROC ; 205 : 'FINSI' ; 206 : * 207 : IDCONV = 'INDE' T_CV0 ; 208 : NCONV = 'DIME' IDCONV ; 209 : NTE = 'DIME' T_TE0 ; 210 : 'SI' (NTE 'NEG' 0 ) ;IDTE = 'INDE' T_TE0 ;FINSI ; 211 : * 'SI' ('NEG' NCONV NTE ) ; 212 : * 'SAUTER' 1 'LIGNE' ; 213 : * 'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORECTE| *** ' ; 214 : * 'QUITTER' PROC ; 215 : * 'FINSI' ; 216 : ICONV = 0 ; 217 : 'REPETE' BOUCONV NCONV ; 218 : ICONV = ICONV + 1 ; 219 : MOD1 = IDCONV.ICONV ; 220 : VCONV = T_CV0.MOD1 ; 221 : MAT_CONV = 'MATR' MOD1 'H' VCONV ; 222 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 223 : RIG_CONV = 'CONDUCTIVITE' MOD1 MAT_CONV PE ; 224 : 'SINON' ; 225 : RIG_CONV = 'CONDUCTIVITE' MOD1 MAT_CONV ; 226 : 'FINSI' ; 227 : 'SI' ('EGA' ICONV 1 ) ; 228 : RIG_CON1 = RIG_CONV ; 229 : 'SINON' ; 230 : RIG_CON1 = RIG_CON1 'ET' RIG_CONV ; 231 : 'FINSI' ; 232 : 'FIN' BOUCONV ; 233 : 'SI' (NTE 'NEG' 0 ) ; 234 : ICONV = 0 ; 235 : 'REPETE' BOUCTE NTE ; 236 : ICONV = ICONV + 1 ; 237 : MOD1 = IDTE.ICONV ; 238 : VCONV = T_CV0.MOD1 ; 239 : MAT_CONV = 'MATR' MOD1 'H' VCONV ; 240 : VTE = T_TE0.MOD1 ; 241 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 242 : CHAL_TEM = 'CONVECTION' MOD1 MAT_CONV 'T' VTE PE ; 243 : 'SINON' ; 244 : CHAL_TEM = 'CONVECTION' MOD1 MAT_CONV 'T' VTE ; 245 : 'FINSI' ; 246 : 'SI' ('EGA' ICONV 1 ) ; 247 : CHAL_TE1 = CHAL_TEM ; 248 : 'SINON' ; 249 : CHAL_TE1 = CHAL_TE1 'ET' CHAL_TEM ; 250 : 'FINSI' ; 251 : 'FIN' BOUCTE ; 252 : 'FINSI' ; 253 : * 254 : *-- assemblage : convection avec le reste 255 : * 256 : 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; 257 : MAT_CND1 = MAT_CND1 'ET' RIG_CON1 'ET' MAT_BLO ; 258 : 'SINON' ; 259 : MAT_CND1 = MAT_CND1 'ET' RIG_CON1 ; 260 : 'FINSI' ; 261 : 'SI' (NTE 'NEG' 0) ; 262 : FF1 = CHAL_TE1 ; 263 : 'SI' ('EXISTE' ETAB 'FLUX' ) ; 264 : FF1 = FF1 'ET' QTE_FLUX ; 265 : 'FINSI' ; 266 : 'SI' ('EXISTE' ETAB 'IMPOSE' ) ; 267 : FF1 = FF1 'ET' VAL_IMPO ; 268 : 'FINSI' ; 269 : 'SINON' ; 270 : 'SI' ('EXISTE' ETAB 'FLUX' ) ; 271 : FF1 = QTE_FLUX ; 272 : 'SI' ('EXISTE' ETAB 'IMPOSE') ; 273 : FF1 = FF1 'ET' VAL_IMPO ; 274 : 'FINSI' ; 275 : 'SINON' ; 276 : 'SI' ('EXISTE' ETAB 'IMPOSE'); FF1 = VAL_IMPO ; 'FINSI' ; 277 : 'FINSI' ; 278 : 'FINSI' ; 279 : * 280 : *-- cas ou il n'y a pas de convection : assemblage sans convection 281 : * 282 : 'SINON' ; 283 : 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; 284 : MAT_CND1 = MAT_CND1 'ET' MAT_BLO ; 285 : 'FINSI' ; 286 : 'SI' ('EXISTE' ETAB 'FLUX' ) ; 287 : FF1 = QTE_FLUX ; 288 : 'SI' ('EXISTE' ETAB 'IMPOSE') ; 289 : FF1 = FF1 'ET' VAL_IMPO ; 290 : 'FINSI' ; 291 : 'SINON' ; 292 : 'SI' (('EXISTE' ETAB 'IMPOSE')'ET'('NON'('EXISTE' ETAB 'FLUX'))); 293 : FF1 = VAL_IMPO ; 294 : 'FINSI' ; 295 : 'FINSI' ; 296 : * 297 : 'FINSI' ; 298 : * 299 : *-- resolution : calcul de U1 300 : * 301 : U1 = 'RESOUDRE' MAT_CND1 FF1 ; 302 : * 303 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 304 : U1_T = 'ENLEVE' U1 'LX' ; 305 : U1_T1= 'EXCO' 'TINF' U1 'NOID' 'T' ; 306 : U1_T2= 'EXCO' 'TSUP' U1 'NOID' 'T' ; 307 : U1_T3= 'EXCO' 'T ' U1 'NOID' 'T' ; 308 : U1_TM = (U1_T1 + U1_T2 + U1_T3)/3.0 ; 309 : 'SINON' ; 310 : U1_T = 'EXCO' U1 'T' 'NOID' 'T' ; 311 : 'FINSI' ; 312 : * 313 : 'SI' ( NIV_MESS '>EG' 2) ; 314 : 'SAUTER' 1 'LIGNE' ; 315 : 'MESS' 'CHAMP THERMIQUE AVANT ITERATION ' ; 316 : 'LISTE' U1_T ; 317 : 'FINSI' ; 318 : * 319 : *-- si il n'existe pas CONDUC(0) 320 : * 321 : 'SINON' ; 322 : * 323 : *-- lecture de U1 324 : * 325 : 'SI' ('EXISTE' ETAB 'INSTANT(0)' ) ; 326 : U1_T = ETAB.'INSTANT(0)' ; 327 : U1 = U1_T ; 328 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 329 : U1_T = 'ENLEVE' U1 'LX' ; 330 : U1_T1= 'EXCO' 'TINF' U1 'NOID' 'T' ; 331 : U1_T2= 'EXCO' 'TSUP' U1 'NOID' 'T' ; 332 : U1_T3= 'EXCO' 'T ' U1 'NOID' 'T' ; 333 : U1_TM = (U1_T1 + U1_T2 + U1_T3)/3.0 ; 334 : 'FINSI' ; 335 : 'SINON' ; 336 : 'MESS' '*** DONNER LE CHAMP DE TEMPERATURE INITIAL| ***' ; 337 : 'QUITTER' PROC ; 338 : 'FINSI' ; 339 : * 340 : 'FINSI' ; 341 : 342 : * 343 : *--- ON RECHERCHE LA SOLUTION PAR ITERATIONS SUCCESSIVES... 344 : * 345 : NUM_ITE = 0 ; 346 : IFOIS = 0 ; 347 : 'REPETER' BOUC_1 ; 348 : NUM_ITE = NUM_ITE + 1 ; 349 : IFOIS = IFOIS + 1 ; 350 : 'SI' ( NIV_MESS '>EG' 1 ) ; 351 : 'SAUTER' 1 'LIGNE' ; 352 : 'MESS' 'ITERATION NUMERO :' IFOIS ; 353 : 'FINSI' ; 354 : * 355 : *--calcul des matrices MAT_CND1 et FF1. 356 : * 357 : *-- conductivite 358 : * 359 : 'SI' ('EXISTE' ETAB 'CONDUCTIVITE') ; 360 : 'SI' ( 'EGA' IFOIS 1 ) ; 361 : MAT_CND1 = MAT_COND ; 362 : 'FINSI' ; 363 : 'SINON' ; 364 : IDCOND = 'INDE' TAB_COND ; 365 : NCOND = 'DIME' TAB_COND ; 366 : ICOND = 0 ; 367 : 'REPETE' BOUCOND NCOND ; 368 : ICOND = ICOND + 1 ; 369 : MOD1 = IDCOND.ICOND ; 370 : VCOND = TAB_COND.MOD1 ; 371 : TYPC = 'TYPE' VCOND ; 372 : 'SI' ('EGA' TYPC 'EVOLUTIO' ) ; 373 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 374 : CC = 'VARI' MOD1 VCOND U1_TM 'NOEUD' ; 375 : 'SINON' ; 376 : CC = 'VARI' MOD1 VCOND U1_T 'NOEUD' ; 377 : 'FINSI' ; 378 : CCC = 'EXCO' CC 'SCAL' 'NOID' 'K' ; 379 : 'SINON' ; 380 : CCC = VCOND ; 381 : 'FINSI' ; 382 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 383 : MMM = 'MATR' MOD1 'K' CCC 'EPAI' EP; 384 : 'SINON' ; 385 : MMM = 'MATR' MOD1 'K' CCC ; 386 : 'FINSI' ; 387 : MI = 'CONDUCTION' MOD1 MMM ; 388 : *-- actualisation de la conductivite 389 : 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' 390 : ( IFOIS 'EGA' 1 ) ) ; 391 : 'SI' ('EGA' ICOND 1 ) ; 392 : MAT_CND1 = MI ; 393 : 'SINON' ; 394 : MAT_CND1 = MAT_CND1 'ET' MI ; 395 : 'FINSI' ; 396 : *-- non actualisation 397 : 'SINON' ; 398 : 'SI' ('EGA' ICOND 1 ) ; 399 : MAT_CND2 = MI ; 400 : 'SINON' ; 401 : MAT_CND2 = MAT_CND2 'ET' MI ; 402 : 'FINSI' ; 403 : 'FINSI' ; 404 : 'FIN' BOUCOND ; 405 : 'FINSI' ; 406 : * 407 : *-- en cas de convection 408 : * 409 : 'SI' ('EXISTE' ETAB 'CONVECTION' ) ; 410 : 'SI' ( 'EXISTE' ETAB 'COQUE' ) ; 411 : 'SI' ( 'EXISTE' ETAB 'PEAU' ) ; 412 : PE = ETAB.'PEAU' ; 413 : 'SINON' ; 414 : 'MESS' '*** PRECISER LA PEAU | ***' ; 415 : 'QUITTER' PROC ; 416 : 'FINSI' ; 417 : CHT_CONV = U1_TM ; 418 : 'SI' ('EGA' PE 'TINF') ; 419 : CHT_CONV = 'EXCO' 'TINF' CHT_CONV 'NOID' 'T' ; 420 : 'FINSI' ; 421 : 'SI' ('EGA' PE 'TSUP') ; 422 : CHT_CONV = 'EXCO' 'TSUP' CHT_CONV 'NOID' 'T' ; 423 : 'FINSI' ; 424 : 'SINON' ; 425 : CHT_CONV = U1_T ; 426 : 'FINSI' ; 427 : IDCONV = 'INDE' TAB_CON1 ; 428 : NCONV = 'DIME' IDCONV ; 429 : NTE = 'DIME' TAB_TE1 ; 430 : 'SI' (NTE 'NEG' 0) ;IDTE = 'INDE' TAB_TE1 ;'FINSI' ; 431 : * 'SI' ('NEG' NCONV NTE ) ; 432 : * 'SAUTER' 1 'LIGNE' ; 433 : * 'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORECTE| *** ' ; 434 : * 'QUITTER' PROC ; 435 : * 'FINSI' ; 436 : ICONV = 0 ; 437 : 'REPETE' BOUCONV NCONV ; 438 : ICONV = ICONV + 1 ; 439 : MOD1 = IDCONV.ICONV ; 440 : VCONV = TAB_CON1.MOD1 ; 441 : TYPC = 'TYPE' VCONV ; 442 : 'SI' ('EGA' TYPC 'EVOLUTIO') ; 443 : CC = 'VARI' MOD1 VCONV CHT_CONV 'NOEUD' ; 444 : CCC = 'EXCO' CC 'SCAL' 'NOID' 'H' ; 445 : MAT_CONV = 'MATR' MOD1 'H' CCC ; 446 : 'SINON' ; 447 : MAT_CONV = 'MATR' MOD1 'H' VCONV ; 448 : 'FINSI' ; 449 : MOD_CONV = MOD1 ; 450 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 451 : RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV PE; 452 : 'SINON' ; 453 : RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV ; 454 : 'FINSI' ; 455 : * mise a jour de la conductivite 456 : 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' 457 : ( IFOIS 'EGA' 1 ) ) ; 458 : 'SI' ('EGA' ICONV 1 ) ; 459 : RIG_CON1 = RIG_CONV ; 460 : 'SINON' ; 461 : RIG_CON1 = RIG_CON1 'ET' RIG_CONV ; 462 : 'FINSI' ; 463 : * non mise a jour 464 : 'SINON' ; 465 : 'SI' ('EGA' ICONV 1 ) ; 466 : RIG_CON2 = RIG_CONV ; 467 : 'SINON' ; 468 : RIG_CON2 = RIG_CON2 'ET' RIG_CONV ; 469 : 'FINSI' ; 470 : 'FINSI' ; 471 : 'FIN' BOUCONV ; 472 : 'SI' (NTE 'NEG' 0) ; 473 : ICONV = 0 ; 474 : 'REPETE' BOUCTE NTE ; 475 : ICONV = ICONV + 1 ; 476 : MOD1 = IDTE.ICONV ; 477 : VCONV = TAB_CON1.MOD1 ; 478 : TYPC = 'TYPE' VCONV ; 479 : 'SI' ('EGA' TYPC 'EVOLUTIO') ; 480 : CC = 'VARI' MOD1 VCONV CHT_CONV 'NOEUD' ; 481 : CCC = 'EXCO' CC 'SCAL' 'NOID' 'H' ; 482 : MAT_CONV = 'MATR' MOD1 'H' CCC ; 483 : 'SINON' ; 484 : MAT_CONV = 'MATR' MOD1 'H' VCONV ; 485 : 'FINSI' ; 486 : VTE = TAB_TE1.MOD1 ; 487 : TYPC = 'TYPE' VTE ; 488 : 'SI' ('EGA' TYPC 'EVOLUTIO') ; 489 : EE = 'VARI' MOD1 VTE CHT_CONV 'NOEUD' ; 490 : VAL_TE = 'CHAN' 'CHPO' MOD1 EE ; 491 : 'SINON' ; 492 : VAL_TE = VTE ; 493 : 'FINSI' ; 494 : MOD_CONV = MOD1 ; 495 : TYP_TE = 'TYPE' VAL_TE ; 496 : 'SI' ( 'NEG' TYP_TE 'CHPOINT ' ) ; 497 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 498 : CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE PE; 499 : 'SINON' ; 500 : CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE ; 501 : 'FINSI' ; 502 : 'SINON' ; 503 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 504 : CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE PE; 505 : 'SINON' ; 506 : CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE ; 507 : 'FINSI' ; 508 : 'FINSI' ; 509 : * mise a jour du flux 510 : 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' 511 : ( IFOIS 'EGA' 1 ) ) ; 512 : 'SI' ('EGA' ICONV 1 ) ; 513 : CHAL_TE1 = CHAL_TEM ; 514 : 'SINON' ; 515 : CHAL_TE1 = CHAL_TE1 'ET' CHAL_TEM ; 516 : 'FINSI' ; 517 : 'FINSI' ; 518 : 'FIN' BOUCTE ; 519 : 'FINSI' ; 520 : * 521 : *-- assemblage : convection avec le reste et resolution 522 : * 523 : 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' 524 : ( IFOIS 'EGA' 1 ) ) ; 525 : 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; 526 : MAT_CND1 = MAT_CND1 'ET' RIG_CON1 'ET' MAT_BLO ; 527 : 'SINON' ; 528 : MAT_CND1 = MAT_CND1 'ET' RIG_CON1 ; 529 : 'FINSI' ; 530 : 'SI' (NTE 'NEG' 0 ) ; 531 : FF1 = CHAL_TE1 ; 532 : 'SI' ('EXISTE' ETAB 'FLUX' ) ; 533 : FF1 = FF1 'ET' QTE_FLUX ; 534 : 'FINSI' ; 535 : 'SI' ('EXISTE' ETAB 'IMPOSE' ) ; 536 : FF1 = FF1 'ET' VAL_IMPO ; 537 : 'FINSI' ; 538 : 'SINON' ; 539 : 'SI' ('EXISTE' ETAB 'FLUX' ) ; 540 : FF1 = QTE_FLUX ; 541 : 'SI' ('EXISTE' ETAB 'IMPOSE') ; 542 : FF1 = FF1 'ET' VAL_IMPO ; 543 : 'FINSI' ; 544 : 'SINON' ; 545 : 'SI' ('EXISTE' ETAB 'IMPOSE'); FF1 = VAL_IMPO ; 'FINSI' ; 546 : 'FINSI' ; 547 : 'FINSI' ; 548 : * 549 : * resolution 550 : U2 = 'RESOUDRE' MAT_CND1 FF1 ; 551 : NUM_ITE = 0 ; 552 : * non mise a jour 553 : 'SINON' ; 554 : 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; 555 : MAT_CND2 = MAT_CND2 'ET' RIG_CON2 'ET' MAT_BLO ; 556 : 'SINON' ; 557 : MAT_CND2 = MAT_CND2 'ET' RIG_CON2 ; 558 : 'FINSI' ; 559 : FF2 = (MAT_CND1 * U1_T ) - (MAT_CND2 * U1_T ) ; 560 : FF3 = FF1 et FF2 ; 561 : * resolution 562 : U2 = 'RESOUDRE' MAT_CND1 FF3 ; 563 : 'FINSI' ; 564 : * 565 : *-- cas ou il n'y a pas de convection : assemblage et resolution 566 : * 567 : 'SINON' ; 568 : 'SI' ( 'EGA' IFOIS 1 ) ; 569 : 'SI' ('EXISTE' ETAB 'FLUX' ) ; 570 : FF1 = QTE_FLUX ; 571 : 'SI' ('EXISTE' ETAB 'IMPOSE') ; 572 : FF1 = FF1 'ET' VAL_IMPO ; 573 : 'FINSI' ; 574 : 'SINON' ; 575 : 'SI' (('EXISTE' ETAB 'IMPOSE')'ET'('NON'('EXISTE' ETAB 'FLUX'))); 576 : FF1 = VAL_IMPO ; 577 : 'FINSI' ; 578 : 'FINSI' ; 579 : 'FINSI' ; 580 : * mise a jour 581 : 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' 582 : ( IFOIS 'EGA' 1 ) ) ; 583 : 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; 584 : MAT_CND1 = MAT_CND1 'ET' MAT_BLO ; 585 : 'FINSI' ; 586 : * resolution 587 : U2 = 'RESOUDRE' MAT_CND1 FF1 ; 588 : NUM_ITE = 0 ; 589 : * non mise a jour 590 : 'SINON' ; 591 : 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; 592 : MAT_CND2 = MAT_CND2 'ET' MAT_BLO ; 593 : 'FINSI' ; 594 : FF3 = (MAT_CND1 * U1_T ) - (MAT_CND2 * U1_T ) ; 595 : FF4 = FF1 et FF3 ; 596 : *-- resolution 597 : U2 = 'RESOUDRE' MAT_CND1 FF4 ; 598 : 'FINSI' ; 599 : 'FINSI'; 600 : * 601 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 602 : U2_T = 'ENLEVE' U2 'LX' ; 603 : U2_T1= 'EXCO' 'TINF' U2 'NOID' 'T' ; 604 : U2_T2= 'EXCO' 'TSUP' U2 'NOID' 'T' ; 605 : U2_T3= 'EXCO' 'T ' U2 'NOID' 'T' ; 606 : U2_TM = (U2_T1 + U2_T2 + U2_T3)/3.0 ; 607 : 'SINON' ; 608 : U2_T = 'EXCO' U2 'T' 'NOID' 'T' ; 609 : 'FINSI' ; 610 : 'SI' ( NIV_MESS '>EG' 2) ; 611 : 'SAUTER' 1 'LIGNE' ; 612 : 'MESS' 'CHAMP THERMIQUE A L ITERATION :' IFOIS ; 613 : 'LISTE' U2_T ; 614 : 'FINSI' ; 615 : * 616 : MAIL_CHP = 'EXTRAIRE' U1_T 'MAIL' ; 617 : NBRE_NOE = 'NBNO' MAIL_CHP ; 618 : * 619 : SOM_COMP*'FLOTTANT' = 0. ; 620 : NUM_NOE*'ENTIER' = 0 ; 621 : IFFFF*'ENTIER' = 0 ; 622 : * 623 : *--- BOUCLE SUR LES POINTS 624 : * 625 : 'REPETER' BOUC_POI ; 626 : NUM_NOE = NUM_NOE + 1 ; 627 : * 628 : *--- TEST SI FIN DE BOUCLE 629 : * 630 : 'SI' ( NUM_NOE '>' NBRE_NOE ) ; 631 : 'QUITTER' BOUC_POI ; 632 : 'FINSI' ; 633 : * 634 : POI_EXTR = MAIL_CHP 'POIN' NUM_NOE ; 635 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 636 : FLO_EX1I = 'EXTRAIRE' U1_T 'TINF' POI_EXTR ; 637 : FLO_EX1S = 'EXTRAIRE' U1_T 'TSUP' POI_EXTR ; 638 : FLO_EX1M = 'EXTRAIRE' U1_T 'T ' POI_EXTR ; 639 : FLO_EXT1 = (FLO_EX1I + FLO_EX1S +FLO_EX1M)/3.0 ; 640 : FLO_EX2I = 'EXTRAIRE' U2_T 'TINF' POI_EXTR ; 641 : FLO_EX2S = 'EXTRAIRE' U2_T 'TSUP' POI_EXTR ; 642 : FLO_EX2M = 'EXTRAIRE' U2_T 'T ' POI_EXTR ; 643 : FLO_EXT2 = (FLO_EX2I+ FLO_EX2S +FLO_EX2M)/3.0 ; 644 : 'SINON'; 645 : FLO_EXT1 = 'EXTRAIRE' U1_T 'T' POI_EXTR ; 646 : FLO_EXT2 = 'EXTRAIRE' U2_T 'T' POI_EXTR ; 647 : 'FINSI'; 648 : DIFF_FLO = FLO_EXT2 - FLO_EXT1 ; 649 : ADIF_FLO = 'ABS' DIFF_FLO ; 650 : AFL_EXT1 = 'MAXI' ( 'PROG' ( 'ABS' FLO_EXT1 ) EPSILON ) ; 651 : * 652 : 'SI' ( ( ADIF_FLO / AFL_EXT1 ) '<' EPSILON ) ; 653 : IFFFF = IFFFF + 1 ; 654 : 'FINSI' ; 655 : 'FIN' BOUC_POI ; 656 : * 657 : 'SI' ( IFFFF 'EGA' NBRE_NOE ) ; 658 : CONVERGE = VRAI ; 659 : 'SINON' ; 660 : CONVERGE = FAUX ; 661 : 'FINSI' ; 662 : * 663 : *--- LE CRITERE DE CONVERGENCE EST-IL SATISFAIT ? 664 : * 665 : 'SI' ( CONVERGE ) ; 666 : 'SI' ( NIV_MESS '>EG' 1 ) ; 667 : 'SAUTER' 1 'LIGNE' ; 668 : 'MESS' 'CONVERGENCE A L ITERATION :' IFOIS ; 669 : 'MESS' 'CRITERE DE CONVERGENCE :' EPSILON ; 670 : 'FINSI' ; 671 : 'QUITTER' BOUC_1 ; 672 : 'FINSI' ; 673 : 'SI' ( 'EXISTE' ETAB 'COQUE' ); 674 : U1_TM = U2_TM ; 675 : 'FINSI'; 676 : U1_T = U2_T ; 677 : 'SI' ( IFOIS '>' ITER_MAX ) ; 678 : 'SAUTER' 1 'LIGNE' ; 679 : 'MESS' 'PAS DE CONVERGENCE A L ITERATION :' ITER_MAX ; 680 : 'QUITTER' BOUC_1 ; 681 : 'FINSI' ; 682 : 'FIN' BOUC_1 ; 683 : * 684 : *--- ARCHIVAGE DES RESULTATS DANS "STAB" 685 : * 686 : ETAB.'TEMPERATURE' = U2_T ; 687 : * 688 : *--- ON FAIT LE MENAGE... 689 : * 690 : *'MENAGE' ; 691 : 'SI' ( NIV_MESS '>EG' 1 ) ; 692 : 'SAUTER' 1 'LIGNE' ; 693 : 'MESS' '*** FIN DE LA PROCEDURE "TRANSIT1" ***' ; 694 : 'FINSI' ; 695 : 'FIN' PROC ; 696 : 'FINPROC' ETAB ; 697 :
© Cast3M 2003 - All rights reserved.
Disclaimer