Download transit1.procedur

Back to the list

   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