Download transit0.procedur

Back to the list

   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