1 : * TRANSIT0 PROCEDUR CHAT 92/09/01 21:18:33 639 2 : 'DEBPROC' TRANSIT0 ETAB*'TABLE' ; 3 : *----------------------------------------------------------------------* 4 : * PROCEDURE TRANSIT0 MARS 91 * 5 : * * 6 : * calcul d'un increment de solution en thermique non-lineaire * 7 : * stationnaire par la methode des residus 8 : * * 9 : * INSPIREE DE INCREME + TRANSIT1 10 : *----------------------------------------------------------------------* 11 : * * 12 : * ETAB, TABLE CONTENANT EN ENTREE : * 13 : * ------------------------------- * 14 : * INDICE 'SOUSTYPE' THERMIQUE * 15 : * INDICE 'MAILLAGE' MAILLAGE DE BASE * 16 : * INDICE 'COQUE' TYPE D'ELEMENT COQUE 17 : * INDICE 'EPAI' EPAISSEUR DE LA COQUE 18 : * INDICE 'BLOCAGE' MATRICE DE BLOCAGE (CREEE PAR "BLOQUE") * 19 : * INDICE 'IMPOSE' VALEURS IMPOSEES (CREE PAR "DEPI") * 20 : * INDICE 'CONDUCTIVITE' VALEUR INITIALE DE LA CONDUCTIVITE * 21 : * INDICE 'EVOCOND' EVOLUTION DE LA CONDUCTIVITE DU MATERIAU * 22 : * EN FONCTION DE LA TEMPERATURE : K(T) * 23 : * INDICE 'FLUX' FLUX EQUIVALENTS * 24 : * INDICE 'CRITERE' CRITERE DE CONVERGENCE * 25 : * (10E-5 PAR DEFAUT) * 26 : * INDICE 'NITER' REACTUALISATION DE LA CONDUCTIVITE TOUTES * 27 : * LES NITER ITERATIONS ( 10 PAR DEFAUT) * 28 : * INDICE 'NIVEAU' NIVEAU DE MESSAGES (NIVEAU=0 PAR DEFAUT) * 29 : * INDICE 'ACCELERATION' FREQUENCE DES ACCELERATIONS (2 PAR DEFAUT) 30 : * INDICE 'MAXITERATION' NOMBRE D'ITERATIONS MAXIMUM (30 PAR DEFAUT) 31 : * * 32 : * ETAB CONTENANT EN SORTIE : * 33 : * ------------------------ * 34 : * INDICE 'TEMPERATURE' CHAMP DE TEMPERATURE RESULTAT * 35 : * * 36 : *----------------------------------------------------------------------* 37 : 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ; 38 : 'MESS' 'SOUS TYPAGE INCORRECT DE LA TABLE EN ENTREE ' ; 39 : 'QUITTER' TRANSIT0 ; 40 : 'FINSI' ; 41 : 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ; 42 : NIV_MESS = ETAB.'NIVEAU' ; 43 : 'SINON' ; 44 : NIV_MESS = 0 ; 45 : 'FINSI' ; 46 : 'SI' ( NIV_MESS '>EG' 1 ) ; 47 : 'SAUTER' 1 'LIGNE' ; 48 : 'MESS' '*** DEBUT DE LA PROCEDURE "TRANSIT0" ***' ; 49 : 'FINSI' ; 50 : * 51 : *--- RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB" 52 : * 53 : 'SI' ('EXISTE' ETAB 'COQUE') ; 54 : TYP_COQ = ETAB.'COQUE' ; 55 : 'SI' ( 'EXISTE' ETAB 'EPAI' ) ; 56 : EP = ETAB.'EPAI' ; 57 : 'SINON' ; 58 : 'SAUTER' 1 'LIGNE' ; 59 : 'MESS' '*** IL MANQUE L EPAISSEUR DE LA COQUE *** '; 60 : 'QUITTER' TRANSIT0 ; 61 : 'FINSI' ; 62 : 'FINSI' ; 63 : * 64 : OBJ_MAI = ETAB.'MAILLAGE' ; 65 : VAL_COND = ETAB.'CONDUCTIVITE' ; 66 : ZCLIM = ETAB.'BLOCAGE' ; 67 : ZU1 = MANU CHPO OBJ_MAI 1 'T' 0. ; 68 : ZF1 = MANU CHPO OBJ_MAI 1 'Q' 0. ; 69 : ZFEXT2 = MANU CHPO OBJ_MAI 1 'Q' 0. ; 70 : * 71 : 'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ; 72 : VAL_IMPO = ETAB.'IMPOSE' ; 73 : ZFEXT2 = ZFEXT2 ET VAL_IMPO ; 74 : 'FINSI'; 75 : * 76 : 'SI' ( 'EXISTE' ETAB 'FLUX' ) ; 77 : QTE_FLUX = ETAB.'FLUX' ; 78 : ZFEXT2 = ZFEXT2 ET QTE_FLUX ; 79 : 'FINSI'; 80 : * 81 : 'SI' ( 'EXISTE' ETAB 'EVOCOND' ) ; 82 : EVO_COND = ETAB.'EVOCOND' ; 83 : LIS_COND = 'EXTRAIRE' EVO_COND 'CONDUCTIVITE' ; 84 : LIS_TEMP = 'EXTRAIRE' EVO_COND 'TEMPERATURE' ; 85 : 'FINSI' ; 86 : * 87 : 'SI' ( 'EXISTE' ETAB 'CRITERE' ) ; 88 : ZPREC = ETAB.'CRITERE' ; 89 : 'SINON' ; 90 : ZPREC = 1.E-5 ; 91 : 'FINSI' ; 92 : * 93 : 'SI' ( 'EXISTE' ETAB 'NITER' ) ; 94 : NBRE_ITE = ETAB.'NITER' ; 95 : 'SI' ( NIV_MESS '>EG' 1 ) ; 96 : 'SAUTER' 1 'LIGNE' ; 97 : 'MESS' 'REACTUALISATION DE LA MATRICE DE CONDUCTIVITE TOUTES ' 98 : 'LES ' NBRE_ITE 'ITERATIONS' ; 99 : 'FINSI' ; 100 : 'SINON' ; 101 : NBRE_ITE = 10; 102 : 'FINSI' ; 103 : * 104 : 'SI' ( 'EXISTE' ETAB 'MAXITERATION' ) ; 105 : ZMAXIT = ETAB.'MAXITERATION' ; 106 : 'SINON' ; 107 : ZMAXIT = 30 ; 108 : 'FINSI' ; 109 : * 110 : 'SI' ( 'EXISTE' ETAB 'ACCELERATION' ) ; 111 : ZNACCE = ETAB.'ACCELERATION' ; 112 : 'SINON' ; 113 : ZNACCE = 2 ; 114 : 'FINSI' ; 115 : * 116 : * CREATION DE L'OBJET MODELE ET DU CHAMP DE MATERIAU 117 : * 118 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 119 : ZOBMOD = 'MODL' OBJ_MAI 'THERMIQUE' 'ISOTROPE' TYP_COQ ; 120 : ZMAT = 'MATR' ZOBMOD 'K' VAL_COND 'EPAI' EP ; 121 : 'SINON' ; 122 : ZOBMOD = 'MODL' OBJ_MAI 'THERMIQUE' 'ISOTROPE' ; 123 : ZMAT = 'MATR' ZOBMOD 'K' VAL_COND ; 124 : 'FINSI'; 125 : * 126 : * CALCUL DE L'OPERATEUR 127 : * 128 : CND1 = 'CONDUCTIVITE' ZOBMOD ZMAT ; 129 : ZRAID = CND1 ET ZCLIM ; 130 : * 131 : * 132 : ******************** 133 : ******************** initialisation et reprise des valeurs des tables 134 : ******************** 135 : ETAB.'INCREMENT' = ZFEXT2 ; 136 : MLPRIM = 'MOTS' 'T' 'TSUP' 'TINF' 'LX'; 137 : MLDUAL = 'MOTS' 'Q' 'QSUP' 'QINF' 'FLX'; 138 : * 139 : * 140 : * --------------------------------- 141 : * ! QUELQUES INITIALISATIONS ! 142 : * --------------------------------- 143 : IT= 0 ; 144 : ZICONV = VRAI; 145 : MMC = 0 ; 146 : MM1 = 1 ; 147 : MM2 = 1 ; 148 : * 149 : ******************** calcul de la partie constante du second membre 150 : ******************** ZFP1 est cense contenir : F0 + 4/DT*M*V0 - B0*SIG0 151 : ******************** + 2/DT*C*X0 152 : ZFCONSTA = COPIER ZFEXT2; 153 : ZFEXT = ZFCONSTA 'ENLEVER' 'FLX'; 154 : ******************** mise a jour des jeux 155 : ZZD = 'ENLEVER' ZU1 'LX'; 156 : ZMU= ZZD * ZCLIM; 157 : ZFPLU= ZMU + ZF1 ; 158 : ZFPLO=COPIER ZF1 ; 159 : 'DETR' ZF1 ; 160 : * 161 : ZITAC= 0 ; 162 : IPREM = VRAI ; 163 : ******* initialisation acceleration de convergence 164 : ******* on peut mettre n'importe quoi 165 : ******* c'est pour ne pas faire de tests dans la boucle 166 : acfp1 = zfconsta ; 167 : acfp2 = zfconsta ; 168 : acfp3 = zfconsta ; 169 : acdep1 = zfconsta ; 170 : acdep2 = zfconsta ; 171 : acdep3 = zfconsta ; 172 : ********* la il ne faut pas mettre n'importe quoi 173 : fcorf = zmu ; 174 : ******************** 175 : ******************** DEBUT DES ITERATIONS 176 : ******************** 177 : 'REPETER' ETIQ ; 178 : IT= IT + 1 ; 179 : ZITAC = ZITAC + 1 ; 180 : ********************CALCUL DE L INCREMENT DE L INCREMENT DE SOLUTION 181 : ZDF = ZFCONSTA - ZFPLU; 182 : ZTEM1 = 'RESOU' ZRAID ZDF; 183 : ******************** on ajoute l increment de deplacement au precedent 184 : 'SI' IPREM ; 185 : XDENO = XTY ZTEM1 (ZFEXT ET 186 : (ETAB . 'INCREMENT' EXCO 'FLX' 'NOID' 'FLX' * -1)) MLPRIM MLDUAL; 187 : XDENO = ('ABS' XDENO) + ('ABS' ('XTY' ZTEM1 ZFPLO MLPRIM MLDUAL)); 188 : XDENO = XDENO /( ('MAXI' ZTEM1 'ABS' ) + 1.D-20 ); 189 : ZTEMT = 'COPIER' ZTEM1 ; 190 : ******************** initialisation des messages 191 : 'MESS' ' iteration critere ' ; 192 : * 193 : 'SINON'; 194 : ZTEM=ZTEMT 'ENLEVER' 'LX' ; 195 : 'DETR' ZTEMT ; 196 : ZTEM2 = ZTEM + ZTEM1 ; 197 : 'DETR' ZTEM ; 198 : ZTEMT = ZTEM2 ; 199 : 'FINSI' ; 200 : 'SI' (('MULT' it znacce) 'ET' (it > 3)) ; 201 : 'MESS' ' ****** acceleration de convergence '; 202 : correc = 'ACT3' acdep3 acdep2 acdep1 ztemt 203 : acfp3 acfp2 acfp1 (zdf - fcorf) ; 204 : 'DETRUIRE' acdep3 ; 'DETRUIRE' acfp3; 205 : acdep3 = acdep2 ; acdep2 = acdep1 ; acdep1 = ztemt ; 206 : ztem2 = ztemt - correc; 207 : ztemt = ztem2; 208 : 'SINON'; 209 : si (it > 3); 'DETRUIRE' acdep3 ; 'DETRUIRE' acfp3; finsi; 210 : acdep3 = acdep2 ; acdep2 = acdep1 ; acdep1 = 'COPIER' ztemt 'GEOM' ; 211 : 'FINSI'; 212 : acfp3 = acfp2 ; acfp2 = acfp1 ; 213 : acfp1 = zdf - fcorf ; 214 : 'DETRUIRE' fcorf; 215 : ******************** 216 : ******************** calcul de fcorf= lambda*m force de reaction 217 : ******************** fcoru = u * m depi (flx) 218 : ******************** 219 : ZDETOT = ZZD + ZTEMT; 220 : FCOR= ZCLIM * ZDETOT; 'DETR' ZDETOT ; 221 : FCORF = 'ENLEVER' FCOR 'FLX'; 222 : FCORU = 'EXCO' FCOR 'FLX' 'FLX'; 223 : 'DETR' FCOR ; 224 : *---------------------------------------------------------------- 225 : ******************** preparation des tests de convergence.on calcule la 226 : ******************** plus grande composante de delta f + freac(sans flx) 227 : FEQUI = ZFEXT - FCORF; 228 : FEQUI2=FEQUI - ZFPLO; 'DETR' ZFPLU ; 229 : ZFAU1 = 'ABS' FEQUI2;DETR FEQUI2; 230 : XAUX = 'MAXI' ZFAU1 'ABS' ; 231 : 'DETR' ZFAU1; 232 : * 233 : MM2=MM1 * 1; 234 : MM1 = MMC * 1 ; 235 : * 236 : ******************** FORCES QUI VARIENT 237 : ******************** 238 : * 239 : 'SI' ('EXISTE' ETAB 'COQUE' ) ; 240 : U1_T1= 'EXCO' 'TINF' ZTEMT 'NOID' 'T' ; 241 : U1_T2= 'EXCO' 'TSUP' ZTEMT 'NOID' 'T' ; 242 : U1_T3= 'EXCO' 'T ' ZTEMT 'NOID' 'T' ; 243 : U1_TM = (U1_T1 + U1_T2 + U1_T3)/3.0 ; 244 : 'SINON' ; 245 : U1_T = 'EXCO' ZTEMT 'T' 'NOID' 'T' ; 246 : 'FINSI' ; 247 : 'SI' ('EXISTE' ETAB 'COQUE') ; 248 : K1 = 'IPOL' U1_TM LIS_TEMP LIS_COND ; 249 : K2 = 'NOMC' 'K' K1 ; 250 : MA1 = 'EXTRAIRE' K2 'MAIL' 'NOMU' ; 251 : EE1 = 'MANU' 'CHPO' MA1 1 'EPAI' EP ; 252 : CHAM_CN1 = 'CHAN' 'CHAM' ZOBMOD K2 'CARACTERISTIQUES' ; 253 : CHAM_CN2 = 'CHAN' 'CHAM' ZOBMOD EE1 'CARACTERISTIQUES' ; 254 : ZMAT2 = CHAM_CN1 'ET' CHAM_CN2 ; 255 : 'SINON' ; I 256 : K1 = 'IPOL' U1_T LIS_TEMP LIS_COND ; 257 : K2 = 'NOMC' 'K' K1 ; 258 : ZMAT2 = 'CHAN' 'CHAM' ZOBMOD K2 'CARACTERISTIQUES' ; 259 : 'FINSI' ; 260 : * 261 : CND2 = 'CONDUCTIVITE' ZOBMOD ZMAT2 ; 262 : FEQU2 = CND2 * ZTEMT ; 263 : * 264 : 'SI'( 'NON' ( 'MULT' ZITAC NBRE_ITE ) ); 265 : 'DETR' CND2 'ELEM' ; 266 : 'FINSI'; 267 : * 268 : ******************** 269 : ******************** test de convergence 270 : ******************** 271 : * 272 : RESIDU = FEQUI - FEQU2; 273 : XNUM = 'MAXI' RESIDU 'ABS'; 274 : 'DETR' RESIDU ; 275 : XCONV = XNUM / XDENO ; 276 : 'MESS' IT XCONV ; 277 : 'SI' (NON(('MULT' it znacce) 'ET' (IT > 3))); 278 : 'SI' ( IT > 1 ) ; 279 : 'SI' ( XCONV < ZPREC ) ; 280 : 'MESS' ' ****** CONVERGENCE A L ITERATION ' IT; 281 : 'DETR' FEQU2 ; 282 : 'QUITTE' ETIQ ; 283 : 'FINSI'; 284 : 'FINSI'; 285 : 'FINSI'; 286 : 'SI'(IT '>EG' ZMAXIT ); 287 : 'MESS' ' ****** PAS DE CONVERGENCE A L ITERATION ' IT ; 288 : ZICONV = FAUX; 289 : 'DETR' FEQU2 ; 290 : 'QUITTER' ETIQ; 291 : 'FINSI' ; 292 : ZFPLU = FCORU + FEQU2 ; 293 : 'DETR' FCORU ; 294 : 'DETR' FEQU2 ; 'DETR' FEQUI ; 295 : * 296 : * CHANGEMENT D'OPERATEUR 297 : * 298 : 'SI'('MULT' ZITAC NBRE_ITE ) ; 299 : ZITAC = 0; 300 : 'DETR' ZRAID; 301 : ZRAID =CND2 'ET' ZCLIM ; 302 : 'FINSI' ; 303 : ******************** 304 : ******************** fin de boucle 305 : ******************** 306 : IPREM = FAUX; 307 : 'FIN' ETIQ ; 308 : ******************** 309 : ******************** 310 : ******************** 311 : ******************** quelques destructions supplementaires 312 : 'DETR' ZFEXT ; 'DETR' FCORU ; 'DETR' FCORF ; 313 : 'DETR' FEQUI ; 'DETR' ZDF ; 314 : 'DETR' ZZD ; 315 : 'DETR' ZFPLO; 316 : * 317 : ETAB.'TEMPERATURE' = ZTEMT; 318 : 'DETR' ZTEM1; 319 : 'FINPROC' ;
© Cast3M 2003 - All rights reserved.
Disclaimer