Download transit3.procedur

Back to the list

   1 : * TRANSIT3  PROCEDUR  JEANV     94/10/10    21:51:02     1285           
   2 : 'DEBPROC' TRANSIT3 ETAB*'TABLE   ' ;                                            
   3 : *----------------------------------------------------------------------*        
   4 : *                                                                      *        
   5 : *                             T R A N S I T 3                          *        
   6 : *                             ---------------                          *        
   7 : *                                                                      *        
   8 : *     RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE                *        
   9 : *     METHODE A DEUX PAS DE TEMPS ( ALGORITHME DE DUPONT2 )            *        
  10 : *                                                                      *        
  11 : *     ETAB, TABLE CONTENANT EN ENTREE :                                *        
  12 : *                                                                      *        
  13 : *     INDICE 'SOUSTYPE'     THERMIQUE                                  *        
  14 : *     INDICE 'INITIAL(0)'   CHAMP DE TEMPERATURE INITIAL AU PAS 0      *        
  15 : *     INDICE 'INITIAL(1)'   CHAMP DE TEMPERATURE INITIAL AU PAS 1      *        
  16 : *                           ( LA DONNEE DE CE CHAMP EST FACULTATIVE )  *        
  17 : *     INDICE 'COQUE'        TYPE D'ELEMENT COQUE UTILISE               *        
  18 : *     INDICE 'EPAI '        EPAISSEUR DE LA COQUE                      *        
  19 : *     INDICE 'PEAU'         PEAU SUR LAQUELLE ECHANGE DE SURFACE       *       
  20 : *                           S'EFFECTUE DANS LE CAS DES  COQUE ('INFE'  *
  21 : *                           OU 'SUPE')                                 *        
  22 : *     INDICE 'CONDUCTIVITE' MATRICE DE CONDUCTIVITE                    *        
  23 : * OU  INDICE 'TABCOND'      TABLE DES OBJETS D'EVOLUTION K(T) INDICEE  *        
  24 : *                           PAR LES OBJETS MMODELS DES SOUS-ZONES      *
  25 : *     INDICE 'CAPACITE'     MATRICE DE CAPACITE                        *        
  26 : * OU  INDICE 'TABCAPA'      TABLE DES OBJETS D'EVOLUTION CRHO(T) INDICEE        
  27 : *                           PAR LES OBJETS MMODELS DES SOUS-ZONES      *
  28 : *     INDICE 'MODELE'       OBJET MODELE DE L'ENSEMBLE                 *        
  29 : *     INDICE 'IMPOSE'       VALEURS IMPOSEES ( CHPOINT OU CHARGEMENT ) *        
  30 : *     INDICE 'BLOCAGE'      MATRICE DE BLOCAGE                         *        
  31 : *     INDICE 'FLUX'         CHARGEMENT DES FLUX EQUIVALENTS            *        
  32 : *     INDICE 'CONVECTION'   TABLE DES TABLES POUR UNE CONDITION        *
  33 : *                           DE CONVECTION :                            *        
  34 : *            'TABCONV1'     TABLE DES COEFFICIENTS D'ECHANGE OU TABLE  *
  35 : *                           DES EVOLUTIONS DU COEFFICIENT D'ECHANGE    *
  36 : *                           FONCTION DE LA TEMPERATURE H(T) INDICEE    *
  37 : *                           PAR LES OBJETS  MMODELS CORRESPONDANT AUX  *
  38 : *                           DIFFERENTES SURFACES DE CONVECTION         *
  39 : *            'TABTE1'       TABLE DES TEMPERATURES EXTERIEURES         *
  40 : *                           ( FLOTTANTS OU CHPOINTS ) OU TABLE DES     *
  41 : *                           EVOLUTIONS DE LA TEMPERATURE EXTERIEURE    *
  42 : *                           FONCTION DE LA TEMPERATURE DE LA SURFACE   *
  43 : *                           DE CONVECTION TE(T) INDICEE PAR LES OBJETS *
  44 : *                           MMODELS CORRESPONDANT AUX   DIFFERENTES    *
  45 : *                           SURFACES DE CONVECTION                     *
  46 : *     OU                                                               * 
  47 : *            'TABCONV2'     TABLE DES COEFFICIENTS D'ECHANGE OU TABLE  *
  48 : *                           DES EVOLUTIONS DU COEFFICIENT D'ECHANGE    *
  49 : *                           FONCTION DU TEMPS H(TEMPS) INDICEE PAR     *
  50 : *                           LES OBJETS  MMODELS CORRESPONDANT AUX      *
  51 : *                           DIFFERENTES SURFACES DE CONVECTION         *
  52 : *            'TABTE2'       TABLE DES TEMPERATURES  EXTERIEURES        *
  53 : *                           ( FLOTTANTS OU CHPOINTS ) OU TABLE DES     *
  54 : *                           DES EVOLUTIONS DE LA TEMPERATURE EXTERIEURE*
  55 : *                           FONCTION DU TEMPS :TE(TEMPS) INDICEE PAR   *
  56 : *                           LES OBJETS  MMODELS CORRESPONDANT AUX      *
  57 : *                           DIFFERENTES  SURFACES DE CONVECTION        *
  58 : *     INDICE 'PHASE'        TABLE TAB1 POUR L'OPERATEUR CAPACITE       *        
  59 : *     INDICE 'TINI'         TEMPS INITIAL ( TINI=0. PAR DEFAUT )       *        
  60 : *     INDICE 'PAS'          VALEUR DU PAS DE TEMPS                     *        
  61 : *     INDICE 'NPAS'         NOMBRE DE PAS DE CALCUL                    *        
  62 : *                           ( NPAS=1 PAR DEFAUT )                      *        
  63 : *     INDICE 'NSOR'         ON VEUT UN RESULTAT TOUS LES NSOR PAS      *        
  64 : *                           ( NSOR=1 PAR DEFAUT )                      *        
  65 : *     INDICE 'COEF'         VALEUR DU COEFFICIENT DE RELAXATION        *        
  66 : *                           (VALEUR PAR DEFAUT 0.25)                   *        
  67 : *     INDICE 'REPRISE'      'OUI' POUR UNE REPRISE DE CALCUL           *        
  68 : *                                                                      *        
  69 : *     ETAB CONTENANT EN SORTIE :                                       *        
  70 : *                                                                      *        
  71 : *     INDICE NUMPAS NUMERO DU PAS DE SORTIE                            *        
  72 : *     LA TABLE ( ETAB NUMPAS ) CONTENANT :                             *        
  73 : *     INDICE 'TEMPERATURE'  LE CHAMP DE TEMPERATURE                    *        
  74 : *     INDICE 'INSTANT'      L'INSTANT DE SORTIE                        *        
  75 : *                                                                      *        
  76 : *     D.R., LE 29 JUIN 1988. VERSION DU 18 JANVIER 1989.               *        
  77 : *                                                                      *        
  78 : *----------------------------------------------------------------------*        
  79 : 'REPETER' PROC 1 ;   
  80 : ***
  81 : 'SAUTER' 1 'LIGNE' ;
  82 : 'MESS' '  Calcul transitoire non linéaire méthode DupontII' ;
  83 : ***                                                                             
  84 : *                                                                               
  85 : *---  RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB"                        
  86 : *                                                                               
  87 : 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ;                                
  88 :    'MESS' 'SOUS TYPAGE DE LA TABLE EN ENTREE INCORRECT|' ;                      
  89 :    'QUITTER' PROC ;                                                             
  90 : 'FINSI' ;                                                                       
  91 : 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ;                                               
  92 :    NIV_MESS = 'ENTIER' ( ETAB.'NIVEAU' ) ;                                      
  93 : 'SINON' ;                                                                       
  94 :    NIV_MESS = 0 ;                                                               
  95 : 'FINSI' ;                                                                       
  96 : 'SI' ( NIV_MESS '>EG' 1 ) ;                                                     
  97 :    'SAUTER' 1 'LIGNE' ;                                                         
  98 :    'MESS' '***  DEBUT DE LA PROCEDURE "TRANSIT3"  ***' ;                        
  99 : 'FINSI' ;                                                                       
 100 : T_REP = 0 ;NREP = 0 ;IREP = 0 ;ITEM = 0 ;                                       
 101 : 'SI' ( 'EXISTE' ETAB 'REPRISE' ) ;                                              
 102 :    'REPETER' BOUC_REP ;                                                         
 103 :       IREP = IREP + 1 ;                                                         
 104 :       'SI' ( 'NON' ( 'EXISTE' ETAB IREP ) ) ;                                   
 105 :          'QUITTER' BOUC_REP ;                                                   
 106 :       'FINSI' ;                                                                 
 107 :    'FIN' BOUC_REP ;                                                             
 108 :    NREP = IREP - 1 ;                                                            
 109 :    U0_1 = ETAB . ( NREP - 1 ) . 'TEMPERATURE' ;                                 
 110 :    U0_0 = ETAB.NREP.'TEMPERATURE' ;                                             
 111 :    T_REP = ETAB.NREP.'INSTANT' ;                                                
 112 :    T_INI = T_REP ;              
 113 :    DTREP = T_REP - ETAB.(NREP - 1).'INSTANT';
 114 :    'SI' ( ABS(DTREP - (ETAB.'PAS')) >EG 1.e-6 ) ;
 115 :        'ERREUR' 'Conditions de reprise impossibles' ;
 116 :        'QUITTER' PROC ; 
 117 :    'FINSI' ;
 118 : 'SINON' ;                                                                       
 119 :    U0_1     = 'COPIER' ( ETAB.'INITIAL(0)' ) 'GEOM' ;                           
 120 :    'SI' ( 'EXISTE' ETAB 'INITIAL(1)' ) ;                                        
 121 :       U0_0     = 'COPIER' ( ETAB.'INITIAL(1)' ) 'GEOM' ;                        
 122 :    'SINON' ;                                                                    
 123 :       U0_0 = U0_1 ;                                                             
 124 :    'FINSI' ;                                                                    
 125 :    'SI' ( 'EXISTE' ETAB 'TINI' ) ;                                              
 126 :       T_INI = ETAB.'TINI' ;                                                     
 127 :    'SINON' ;                                                                    
 128 :       T_INI = 0. ;                                                              
 129 :    'FINSI' ;                                                                    
 130 : 'FINSI' ;                                                                       
 131 : 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;                                                 
 132 :    TC_TPS = ETAB.'FLUX' ;                                                       
 133 : 'FINSI' ;                                                                       
 134 : 'SI' ( 'EXISTE' ETAB 'CONDUCTIVITE' ) ;                                         
 135 :    MAT_COND = ETAB.'CONDUCTIVITE' ;                                             
 136 : 'SINON' ;                                                                       
 137 :    'SI' ( 'EXISTE' ETAB 'TABCOND' ) ;                                           
 138 :       TAB_COND = ETAB.'TABCOND' ;                                               
 139 :    'SINON' ;                                                                    
 140 :       'SAUTER' 1 'LIGNE' ;                                                      
 141 :       'MESS' '*** LA DONNEE DE LA CONDUCTIVITE EST INCORRECTE | ***' ;          
 142 :       'QUITTER' PROC ;                                                          
 143 :    'FINSI' ;                                                                    
 144 : 'FINSI' ;                                                                       
 145 : *                                                                               
 146 : 'SI' ( 'EXISTE' ETAB 'PHASE' ) ;                                                
 147 :    TABP2 = ETAB.'PHASE' ; 
 148 :    'MESS' '    avec changement de phase' ;                                      
 149 : 'FINSI' ;                                                                       
 150 : 'SI' ( 'EXISTE' ETAB 'BLOCAGE' ) ;                                              
 151 :    MAT_BLOC = ETAB.'BLOCAGE'  ;                                                 
 152 : 'FINSI' ;                                                                       
 153 : 'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ;                                               
 154 :    VAL_IMP  = ETAB.'IMPOSE'   ;                                                 
 155 : 'FINSI' ;                                                                       
 156 : TYP_IMP = 'TYPE' VAL_IMP ;                                                      
 157 : 'SI' ( 'NEG' TYP_IMP 'CHARGEME' ) ;                                             
 158 :    VAL_IMPO = VAL_IMP ;                                                         
 159 : 'FINSI' ;                                                                       
 160 : 'SI' ( 'EXISTE' ETAB 'COEF' ) ;                                                 
 161 :    LAMBDA   = ETAB.'COEF' ;                                                     
 162 : 'SINON' ;                                                                       
 163 :    LAMBDA   = 0.25 ;                                                            
 164 : 'FINSI' ;                                                                     
 165 : 'SI' ( 'EXISTE' ETAB 'MODELE' ) ;                                             
 166 :    OBJ_MOD = ETAB.'MODELE' ;
 167 :    MOD_CAPA=OBJ_MOD;                                                
 168 : 'FINSI' ;                                                                       
 169 :  'SI' ('EXISTE' ETAB 'COQUE') ;                                             
 170 :        TYP_COQ = ETAB.'COQUE' ;                                                 
 171 :        'SI' ( 'EXISTE' ETAB 'EPAI' )  ;                                         
 172 :           EP = ETAB.'EPAI' ;                                                    
 173 :        'SINON' ;                                                                
 174 :          'SAUTER' 1 'LIGNE' ;                                                   
 175 :          'MESS' '*** IL MANQUE L EPAISSEUR DE LA COQUE | *** ';                 
 176 :          'QUITTER' PROC ;                                                       
 177 :        'FINSI';                                                                 
 178 : 'FINSI' ;                                                                       
 179 : 'SI' ( 'EXISTE' ETAB 'CAPACITE' ) ;                                             
 180 :    MAT_CAPA = ETAB.'CAPACITE' ;                                                 
 181 : 'SINON' ;                                                                       
 182 :    'SI' ( 'EXISTE' ETAB 'TABCAPA' ) ;                                           
 183 :       TAB_CAPA = ETAB.'TABCAPA' ;                                               
 184 :    'SINON' ;                                                                    
 185 :       'SAUTER' 1 'LIGNE' ;                                                      
 186 :       'MESS' '*** LA DONNEE DE LA CAPACITE EST INCORRECTE | ***' ;              
 187 :       'QUITTER' PROC ;                                                          
 188 :    'FINSI' ;                                                                    
 189 : 'FINSI' ;                                                                       
 190 : *                                                                               
 191 : *---  GESTION DE LA CONDITION DE CONVECTION FORCEE                              
 192 : *+*                                                                             
 193 : 'SI' ( 'EXISTE' ETAB 'CONVECTION' ) ; 
 194 :   'SI' ( 'EXISTE' ETAB 'COQUE' ) ;                                             
 195 :      'SI' ( 'EXISTE' ETAB 'PEAU' ) ;
 196 :        PE = ETAB.'PEAU' ;
 197 :      'SINON' ;
 198 :       'MESS' '*** PRECISER LA PEAU | ***' ;
 199 :       'QUITTER' PROC ;
 200 :      'FINSI' ;
 201 :   'FINSI' ;                                                  
 202 :    CTAB = ETAB.'CONVECTION' ;                                                   
 203 :    'SI' ('EXISTE' CTAB 'TABCONV1') ;
 204 :        IT=1 ;
 205 :        TAB_CON1=CTAB.'TABCONV1'  ;
 206 :        'SI' ('EXISTE' CTAB 'TABTE1') ;TAB_TE1 = CTAB.'TABTE1'  ;
 207 :        'SINON' ;TAB_TE1 = TABLE ;FINSI ;
 208 :     'SINON' ;
 209 :        IT=2 ;
 210 :        'SI' ('EXISTE' CTAB 'TABTE2') ;TAB_TE2 = CTAB.'TABTE2'  ;
 211 :        'SINON' ;TAB_TE2 = TABLE ;'FINSI' ;
 212 :        TAB_CON2 = CTAB.'TABCONV2'  ;
 213 :     'FINSI'  ;         
 214 : 'FINSI' ;                                                                       
 215 : 'SI' ( 'EXISTE' ETAB 'NPAS' ) ;                                                 
 216 :    NBRE_PAS = 'ENTIER' ( ETAB.'NPAS' ) ;                                        
 217 : 'SINON' ;                                                                       
 218 :    NBRE_PAS = 1 ;                                                               
 219 : 'FINSI' ;                                                                       
 220 : 'SI' ( 'EXISTE' ETAB 'NSOR' ) ;                                                 
 221 :    N_SOR = 'ENTIER' ( ETAB.'NSOR' ) ;                                           
 222 : 'SINON' ;                                                                       
 223 :    N_SOR = 1 ;                                                                  
 224 : 'FINSI' ;                                                                       
 225 : 'SI' ( 'EXISTE' ETAB 'PAS' ) ;                                                  
 226 :    T_PAS = ETAB.'PAS' ;                                                         
 227 : 'SINON' ;                                                                       
 228 :    'SAUTER' 1 'LIGNE' ;                                                         
 229 :    'MESS' 'IL MANQUE LE PAS DE TEMPS |' ;                                       
 230 :    'OBTENIR' T_PAS*'FLOTTANT' ;                                                 
 231 : 'FINSI' ;                                                                       
 232 : T0_0 = T_INI ;                                                                  
 233 : 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;                                                 
 234 :    QTPS_0 = 'TIRER' TC_TPS  T0_0 ;                                       
 235 : 'FINSI' ;                                                                       
 236 : T0_1 = T_INI + T_PAS ;                                                          
 237 : 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;                                                 
 238 :    QTPS_1 = 'TIRER' TC_TPS  T0_1 ;                                       
 239 : 'FINSI' ;                                                                       
 240 : *                                                                               
 241 : *---  "ETAB" EST UNE TABLE DE TABLES, INDICEE PAR LE NUMERO DU PAS              
 242 : *                                                                               
 243 : NUM_PAS = NREP ;                                                                
 244 : 'SI' ( 'NON' ( 'EXISTE' ETAB REPRISE ) ) ;                                      
 245 :    STN = 'TABLE'  ;                                                             
 246 :    ETAB.NUM_PAS      = 'TABLE' STN ;                                            
 247 :    STN.'INSTANT'     = T0_0        ;                                            
 248 :    STN.'TEMPERATURE' = U0_0        ;                                            
 249 :    'SI' ( NIV_MESS '>EG' 1 ) ;                                                  
 250 :       'SAUTER' 1 'LIGNE' ;                                                      
 251 :       'MESS' 'Sortie du resultat pour le temps   :' T0_0    ;                   
 252 :       'MESS' 'Numéro du pas de sortie            :' NUM_PAS ;                   
 253 :       'SI' ( NIV_MESS '>EG' 2 ) ;                                               
 254 :          'SAUTER' 1 'LIGNE' ;                                                   
 255 :          'MESS' 'CHAMP DE TEMPERATURE AU TEMPS      :' T0_0 ;                   
 256 :          'LISTE' U0_0 ;                                                         
 257 :       'FINSI' ;                                                                 
 258 :    'FINSI' ;                                                                    
 259 :    NUM_PAS = 1    ;                                                             
 260 :    STN = 'TABLE'  ;                                                             
 261 :    ETAB.NUM_PAS      = 'TABLE' STN ;                                            
 262 :    STN.'INSTANT'     = T0_1        ;                                            
 263 :    STN.'TEMPERATURE' = U0_1        ;                                            
 264 :    'SI' ( NIV_MESS '>EG' 1 ) ;                                                  
 265 :       'SAUTER' 1 'LIGNE' ;                                                      
 266 :       'MESS' 'Sortie du resultat pour le temps   :' T0_1    ;                   
 267 :       'MESS' 'Numéro du pas de sortie            :' NUM_PAS ;                   
 268 :       'SI' ( NIV_MESS '>EG' 2 ) ;                                               
 269 :          'SAUTER' 1 'LIGNE' ;                                                   
 270 :          'MESS' 'CHAMP DE TEMPERATURE AU TEMPS      :' T0_1 ;                   
 271 :          'LISTE' U0_1 ;                                                         
 272 :       'FINSI' ;                                                                 
 273 :    'FINSI' ;                                                                    
 274 :    ITEM = 1 ;                                                                   
 275 : 'FINSI' ;                                                                       
 276 : IPAS = 0 ;                                                                      
 277 : *                                                                               
 278 : *---  BOUCLE SUR LES PAS DE TEMPS                                               
 279 : *                                                                               
 280 : 'REPETER' BOUC_SOR ;
 281 : *
 282 :          'SAUTER' 1 'LIGNE' ;
 283 :          'MESS' 'Numéro du pas                      :' NUM_PAS ;
 284 : *                                                           
 285 :    ITEM = ITEM + 1 ;                                                            
 286 :    IPAS = IPAS + 1 ;                                                            
 287 :    'SI' ('EXISTE' ETAB 'COQUE' ) ;                                              
 288 :      U0_T  = 'ENLEVE' U0_1 'LX'  ;                                              
 289 :    'SINON' ;                                                                    
 290 :      U0_T = 'EXCO' 'T' U0_1 'NOID' 'T' ;                                        
 291 :    'FINSI' ;                                                                    
 292 : *                                                                               
 293 : *---  TEST SI FIN DE BOUCLE                                                     
 294 : *                                                                               
 295 :    'SI' ( ITEM '>' NBRE_PAS ) ;                                                 
 296 :       'QUITTER' BOUC_SOR ;                                                      
 297 :    'FINSI' ;                                                                    
 298 :    T1 = T_INI + ( T_PAS * ITEM ) ;                                              
 299 :    'SI' ( 'EXISTE' ETAB 'FLUX' ) ;                                              
 300 :       FLUX_TPS = 'COLI' QTPS_0 0.5 QTPS_1 0.5 ;                                 
 301 :    'FINSI' ;                                                                    
 302 :    'SI' ( 'EGA' TYP_IMP 'CHARGEME' ) ;                                          
 303 :       VAL_IMPO = 'TIRER' VAL_IMP  T1 ;                                   
 304 :    'FINSI' ;                                                                    
 305 :    'SI' ( 'EXISTE' ETAB 'TABCOND' ) ;                                           
 306 : *                                                                               
 307 : *---  CALCUL DE LA MATRICE DE CONDUCTIVITE                                      
 308 : *                                                                               
 309 :       U1_CALC = 'COLI' U0_0 1.5 U0_1 -0.5      ;                                
 310 :       'SI' ('EXISTE' ETAB 'COQUE' ) ;                                           
 311 :          UC1_TI = 'EXCO' 'TINF' U1_CALC 'NOID' 'T' ;                            
 312 :          UC1_TS = 'EXCO' 'TSUP' U1_CALC 'NOID' 'T' ;                            
 313 :          UC1_TM = 'EXCO' 'T   ' U1_CALC 'NOID' 'T' ;                            
 314 :          UC1_T  = (UC1_TI + UC1_TS +UC1_TM )/3.0  ;                             
 315 :        'SINON';                                                                 
 316 :         UC1_T   = 'EXCO' 'T' U1_CALC 'NOID' 'T'  ;                              
 317 :       'FINSI';                                                                  
 318 :        IDCOND = 'INDE' TAB_COND ;
 319 :        ICOND=0      ;
 320 :        'REPE' BOUCOND ('DIME' TAB_COND)   ;
 321 :           ICOND = ICOND + 1  ;
 322 :           MOD1 = IDCOND.ICOND  ;
 323 :           VCOND = TAB_COND.MOD1  ;
 324 :           TYPC = 'TYPE' VCOND ;          
 325 :           'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
 326 :              CC = 'VARI' MOD1 VCOND UC1_T 'NOEUD' ;
 327 :              CCC = 'EXCO' CC 'SCAL' 'NOID' 'K' ;
 328 :           'SINON' ;
 329 :              CCC = VCOND ;
 330 :           'FINSI'  ;
 331 :           'SI' ('EXISTE' ETAB 'COQUE' )   ;
 332 :               MMM = 'MATR' MOD1 'K' CCC 'EPAI' EP ;
 333 :           'SINON'  ;
 334 :               MMM = 'MATR' MOD1 'K' CCC ;
 335 :           'FINSI'  ;
 336 :            MI= 'CONDUCTION' MOD1 MMM;
 337 :           'SI' (ICOND 'EGA' 1) ;
 338 :               MAT_COND = MI;
 339 :            'SINON' ;
 340 :               MAT_COND =MAT_COND ET MI ;
 341 :            'FINSI'     ;
 342 :         'FIN' BOUCOND  ;
 343 :     'FINSI'   ;
 344 :    'SI' ( 'EXISTE' ETAB 'TABCAPA' ) ;                                           
 345 : *                                                                               
 346 : *---  CALCUL DE LA MATRICE DE CAPACITE                                          
 347 : *                                                                               
 348 :       U2_CALC = 'COLI' U0_0 1.5 U0_1 -0.5      ;  
 349 :       'SI' ( 'EXISTE' ETAB 'PHASE' ) ; 
 350 : *          initialisation de la table pour le changement de phase
 351 :              TABP2.'CHAMP THERMIQUE 1' = 'ENLEVER' U0_0 'LX' ;
 352 :              TABP2.'CHAMP THERMIQUE 2' = 'ENLEVER' 
 353 :                                 ( COLI 2. U0_0 -1. U0_1)'LX' ;
 354 :       'FINSI' ;                                           
 355 :       'SI' ('EXISTE' ETAB 'COQUE' ) ;                                           
 356 :          UC2_TI = 'EXCO' 'TINF' U2_CALC 'NOID' 'T' ;                            
 357 :          UC2_TS = 'EXCO' 'TSUP' U2_CALC 'NOID' 'T' ;                            
 358 :          UC2_TM = 'EXCO' 'T   ' U2_CALC 'NOID' 'T' ;                            
 359 :          UC2_T  = (UC2_TI + UC2_TS + UC2_TM)/0.3   ;                            
 360 :        'SINON';                                                                 
 361 :       UC2_T   = 'EXCO' 'T' U2_CALC 'NOID' 'T'  ;                                
 362 :       'FINSI';                                                                  
 363 :        IDCAPA = 'INDE' TAB_CAPA ;
 364 :        ICAPA=0     ;
 365 :        'REPE' BOUCAPA ('DIME' TAB_CAPA)   ;
 366 :           ICAPA = ICAPA + 1  ;
 367 :           MOD1  = IDCAPA.ICAPA  ;
 368 :           VCAPA = TAB_CAPA.MOD1  ;
 369 :           TYPC = 'TYPE' VCAPA ;          
 370 :           'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
 371 :             CC = 'VARI' MOD1 VCAPA UC2_T 'NOEUD' ;
 372 :             CCC = 'EXCO' CC 'SCAL' 'NOID' 'C' ;
 373 :           'SINON'  ;
 374 :              CCC = VCAPA  ;
 375 :           'FINSI'  ;
 376 :           'SI' ('EXISTE' ETAB 'COQUE' )   ;
 377 :               MMM = 'MATR' MOD1 'C' CCC  'RHO' 1. 'EPAI' EP ;
 378 :           'SINON'  ;
 379 :               MMM = 'MATR' MOD1 'C' CCC 'RHO' 1.;
 380 :           'FINSI'  ;
 381 :           'SI' ( 'EXISTE' ETAB 'PHASE' ) ;
 382 :                MI = 'CAPACITE'  MOD1 MMM TABP2 ;  
 383 :           'SINON' ;
 384 :                MI = 'CAPACITE'  MOD1 MMM ;
 385 :           'FINSI' ;
 386 :           'SI' (ICAPA 'EGA' 1) ;
 387 :               MAT_CAPA = MI  ;
 388 :               MOD_CAPA=MOD1;
 389 :            'SINON' ;
 390 :                MAT_CAPA = MAT_CAPA  ET  MI ;
 391 :                MOD_CAPA=MOD_CAPA ET MOD1;
 392 :            'FINSI'     ;
 393 :         'FIN' BOUCAPA  ;
 394 :     'FINSI'   ;                                                                 
 395 : *                                                                               
 396 :    SCA1    = 0.5 + LAMBDA          ;                                            
 397 :    SCA2    = 1. / T_PAS            ;                                            
 398 :    SCA3    = 0.5 - ( 2. * LAMBDA ) ;                                            
 399 :    SCA4    = ( 2. * LAMBDA ) - 0.5 ;                                            
 400 :    A2 = MAT_COND * SCA1 ;                                                       
 401 :    A1 = MAT_CAPA * SCA2 ;                                                       
 402 :    MAT_RIGI = A1 'ET' A2 ;                                                      
 403 :    'SI' ( 'EXISTE' ETAB 'BLOCAGE' ) ;                                           
 404 :         MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ;                                     
 405 :    'FINSI' ;                                                                    
 406 :    B3 = MAT_COND * SCA4 ;                                                       
 407 :    B1 = A1 'ET' B3 ;                                                            
 408 :    B2 = MAT_COND * ( -1 * LAMBDA ) ;                                            
 409 :    C1 = B1 * U0_0 ;     
 410 : * Correction DR 1/9/92  U0_0 -> U0_1
 411 :    C2 = B2 * U0_1 ;                                                             
 412 :    MAT_CHPO = C1 + C2 ;                                                      
 413 :    'SI' ( 'EXISTE' ETAB 'FLUX' ) ;                                              
 414 :       MAT_CHPO = MAT_CHPO + FLUX_TPS ;                                       
 415 :    'FINSI' ;                                                                    
 416 :    'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ;                                            
 417 :       MAT_CHPO = MAT_CHPO + VAL_IMPO ;                                       
 418 :    'FINSI' ;                                                                    
 419 :    'SI' ( 'EXISTE' ETAB 'CONVECTION' ) ;                                        
 420 : *                                                                               
 421 : *---  ON GENERE LES TERMES DE CONVECTION                                        
 422 : *                                                                               
 423 :    'SI' ('EGA' IT 1 ) ;
 424 : * CORRECTION AM 4/8/92  PERMUTATION U0_0 ET U0_1
 425 :       CHT_CNV  = 'COLI' U0_0 1.5 U0_1 -0.5  ;
 426 :       'SI' ('EXISTE' ETAB 'COQUE' ) ;                                           
 427 :         PE =ETAB.'PEAU';                                                     
 428 :         'SI' ('EGA' PE 'TINF') ;
 429 :           CHT_CNV = 'EXCO' 'TINF' CHT_CNV 'NOID' 'T' ;                          
 430 :         'FINSI'   ;
 431 :         'SI' ('EGA' PE 'TSUP') ;
 432 :           CHT_CNV = 'EXCO' 'TSUP' CHT_CNV 'NOID' 'T' ;                          
 433 :         'FINSI'  ;
 434 :       'FINSI' ;                                                                
 435 :        IDCONV = 'INDE' TAB_CON1 ;
 436 :        NCONV =  'DIME' IDCONV ;
 437 :        NTE = 'DIME' TAB_TE1 ;
 438 :        'SI' (NTE 'NEG' 0 ) ;IDTE  =  'INDE' TAB_TE1 ;'FINSI' ;
 439 : *       'SI' ('NEG' NCONV NTE ) ;
 440 : *          'SAUTER' 1 'LIGNE' ;
 441 : *    'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORRECTE *** ' ;
 442 : *     'QUITTER' PROC ;                                                          
 443 : *       'FINSI'    ;
 444 :         ICONV = 0 ;
 445 :         'REPETE' BOUCONV NCONV ;
 446 :           ICONV = ICONV + 1 ;
 447 :           MOD1 = IDCONV.ICONV ;
 448 :           VCONV = TAB_CON1.MOD1 ;
 449 :           TYPC = 'TYPE' VCONV ;          
 450 :           'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
 451 :              CC = 'VARI' MOD1 VCONV CHT_CNV 'NOEUD' ;
 452 :              CCC = 'EXCO' CC 'SCAL'  'NOID' 'H' ;
 453 :              MAT_CONV = 'MATR' MOD1 'H' CCC ;
 454 :           'SINON'  ;
 455 :              MAT_CONV = 'MATR'  MOD1 'H' VCONV ;
 456 :           'FINSI'   ;
 457 :            MOD_CONV = MOD1 ; 
 458 :          'SI' ('EXISTE' ETAB 'COQUE' ) ;                                        
 459 :             RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV PE ;                    
 460 :          'SINON'  ;                                                             
 461 :             RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV ;                       
 462 :          'FINSI'  ;                                                             
 463 :          'SI' ('EGA' ICONV 1 ) ;
 464 :             RIG_CON1 = RIG_CONV ;
 465 :          'SINON'  ;
 466 :             RIG_CON1 = RIG_CONV ET RIG_CON1  ;
 467 :          'FINSI'       ;
 468 :        'FIN' BOUCONV  ;
 469 :        'SI' (NTE 'NEG' 0 )  ;
 470 :         ICONV = 0 ;
 471 :         'REPETE' BOUCTE NTE ;
 472 :           ICONV = ICONV + 1 ;
 473 :           MOD1 = IDTE.ICONV ;
 474 :           VCONV = TAB_CON1.MOD1 ;
 475 :           TYPC = 'TYPE' VCONV ;          
 476 :           'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
 477 :              CC = 'VARI' MOD1 VCONV CHT_CNV 'NOEUD' ;
 478 :              CCC = 'EXCO' CC 'SCAL'  'NOID' 'H' ;
 479 :              MAT_CONV = 'MATR' MOD1 'H' CCC ;
 480 :           'SINON'  ;
 481 :              MAT_CONV = 'MATR'  MOD1 'H' VCONV ;
 482 :           'FINSI'   ;
 483 :           VTE = TAB_TE1.MOD1  ;
 484 :           TYPC = 'TYPE' VTE ;
 485 :           'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
 486 :              EE = 'VARI' MOD1 VTE CHT_CNV 'NOEUD' ;
 487 :              VAL_TE = 'CHAN' 'CHPO' MOD1 EE ;
 488 :           'SINON'  ;
 489 :              VAL_TE = VTE   ;
 490 :           'FINSI'   ;
 491 :           MOD_CONV = MOD1 ; 
 492 :           TYP_TE = 'TYPE' VAL_TE ;                                              
 493 :          'SI' ( 'NEG' TYP_TE 'CHPOINT ' ) ;                                     
 494 :            'SI' ('EXISTE' ETAB 'COQUE' ) ;                                      
 495 :              PE =ETAB.'PEAU';                                                   
 496 :              CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE PE ;          
 497 :            'SINON' ;                                                            
 498 :              CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE ;             
 499 :            'FINSI';                                                             
 500 :          'SINON' ;                                                              
 501 :            'SI' ('EXISTE' ETAB 'COQUE' ) ;                                      
 502 :              CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV  VAL_TE PE ;             
 503 :            'SINON' ;                                                            
 504 :              CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE     ;             
 505 :           'FINSI';                                                              
 506 :          'FINSI' ;                                                              
 507 :          'SI' ('EGA' ICONV 1 ) ;
 508 :             CHAL_TE1 = CHAL_TEM ;
 509 :          'SINON'  ;
 510 :             CHAL_TE1 = CHAL_TEM ET CHAL_TE1  ;
 511 :          'FINSI'       ;
 512 :        'FIN' BOUCTE  ;
 513 :      'FINSI'    ;
 514 :     'SINON'    ;
 515 :        IDCONV = 'INDE' TAB_CON2 ;
 516 :        NCONV =  'DIME' IDCONV ;
 517 :        NTE = 'DIME' TAB_TE2 ;
 518 :        'SI' (NTE 'NEG' 0) ;IDTE  =  'INDE' TAB_TE2 ;'FINSI';
 519 : *       'SI' ('NEG' NCONV NTE ) ;
 520 : *          'SAUTER' 1 'LIGNE' ;
 521 : *    'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORRECTE *** '  ;
 522 : *    'QUITTER' PROC ;                                                           
 523 : *       'FINSI'    ;
 524 :         ICONV = 0 ;
 525 :         'REPETE' BOUCONV1 NCONV ;
 526 :           ICONV = ICONV + 1 ;
 527 :           MOD1 = IDCONV.ICONV ;
 528 :           VCONV = TAB_CON2.MOD1 ;
 529 :           TYPC = 'TYPE' VCONV ;          
 530 :           'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
 531 :              LIS_TEM = 'EXTR' VCONV 'TEMPS'  ;
 532 :              LIS_H   = 'EXTR' VCONV 'H' ;
 533 :              CC = 'IPOL' T1 LIS_TEM LIS_H ;
 534 :              MAT_CONV = 'MATR' MOD1 'H' CC ;
 535 :           'SINON'  ;
 536 :              MAT_CONV = 'MATR'  MOD1 'H' VCONV ;
 537 :           'FINSI'   ;
 538 :            MOD_CONV = MOD1 ; 
 539 :          'SI' ('EXISTE' ETAB 'COQUE' ) ;                                        
 540 :             RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV PE ;                    
 541 :          'SINON'  ;                                                             
 542 :             RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV ;                       
 543 :          'FINSI'  ;                                                             
 544 :          'SI' ('EGA' ICONV 1 ) ;
 545 :             RIG_CON1 = RIG_CONV ;
 546 :          'SINON'  ;
 547 :             RIG_CON1 = RIG_CONV ET RIG_CON1  ;
 548 :          'FINSI'       ;
 549 :        'FIN' BOUCONV1  ;
 550 :        'SI' (NTE 'NEG' 0 ) ;
 551 :         ICONV = 0 ;
 552 :         'REPETE' BOUCTE1 NTE ;
 553 :           ICONV = ICONV + 1 ;
 554 :           MOD1 = IDTE.ICONV ;
 555 :           VCONV = TAB_CON2.MOD1 ;
 556 :           TYPC = 'TYPE' VCONV ;          
 557 :           'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
 558 :              LIS_TEM = 'EXTR' VCONV 'TEMPS'  ;
 559 :              LIS_H   = 'EXTR' VCONV 'H' ;
 560 :              CC = 'IPOL' T1 LIS_TEM LIS_H ;
 561 :              MAT_CONV = 'MATR' MOD1 'H' CC ;
 562 :           'SINON'  ;
 563 :              MAT_CONV = 'MATR'  MOD1 'H' VCONV ;
 564 :           'FINSI'   ;
 565 :           VTE = TAB_TE2.MOD1  ;
 566 :           TYPC = 'TYPE' VTE ;
 567 :           'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
 568 :              LIS_TEM = 'EXTR' VTE 'TEMPS'  ;
 569 :              LIS_TE   = 'EXTR' VTE 'TE' ;
 570 :              VAL_TE = 'IPOL' T1 LIS_TEM LIS_TE ;
 571 :           'SINON'  ;
 572 :              VAL_TE = VTE   ;
 573 :           'FINSI'   ;
 574 :           MOD_CONV = MOD1 ; 
 575 :           TYP_TE = 'TYPE' VAL_TE ;                                              
 576 :          'SI' ( 'NEG' TYP_TE 'CHPOINT ' ) ;                                     
 577 :            'SI' ('EXISTE' ETAB 'COQUE' ) ;                                      
 578 :              PE =ETAB.'PEAU';                                                   
 579 :              CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE PE ;          
 580 :            'SINON' ;                                                            
 581 :              CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE ;      
 582 :            'FINSI';                                                             
 583 :          'SINON' ;                                                              
 584 :            'SI' ('EXISTE' ETAB 'COQUE' ) ;                                      
 585 :              CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV  VAL_TE PE ;             
 586 :            'SINON' ;                                                            
 587 :              CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE     ;             
 588 :           'FINSI';                                                              
 589 :          'FINSI' ;                                                              
 590 :          'SI' ('EGA' ICONV 1 ) ;
 591 :             CHAL_TE1 = CHAL_TEM ;
 592 :          'SINON'  ;
 593 :             CHAL_TE1 = CHAL_TEM ET CHAL_TE1  ;
 594 :          'FINSI'       ;
 595 :        'FIN' BOUCTE1  ;
 596 :       'FINSI'   ;
 597 :      'FINSI'     ;
 598 :       MAT_RIGI = MAT_RIGI 'ET' RIG_CON1 ;
 599 :       'SI' (NTE 'NEG' 0 ) ;MAT_CHPO = MAT_CHPO + CHAL_TE1 ;'FINSI';
 600 :    'FINSI' ;                                                                    
 601 : *                                                                               
 602 : *---  CALCUL D'UN PAS                                                           
 603 : *                                                                               
 604 :    U1 = 'RESOUDRE' MAT_RIGI MAT_CHPO ;                                          
 605 :    U1_LX  = 'EXCO' 'LX' U1 'NOID' 'LX' ;                                        
 606 :    U1_AUX = U1 - U1_LX ;                                                        
 607 :       'SI' ('EXISTE' ETAB 'COQUE' ) ;                                           
 608 :          U1_T  =  'ENLEVE' U1 'LX'   ;                                          
 609 :        'SINON';                                                                 
 610 :          U1_T = 'EXCO' 'T' U1 'NOID' 'T' ;                                      
 611 :       'FINSI';                                                                  
 612 : *
 613 : *                                                                               
 614 : *---  ARCHIVAGE DES RESULTATS DANS "ETAB"                                       
 615 : *                                                                               
 616 :    'SI' ( IPAS 'EGA' N_SOR ) ;                                                  
 617 :       NUM_PAS = NUM_PAS + 1 ;                                                   
 618 :       STN = 'TABLE' ;                                                           
 619 :       ETAB.NUM_PAS      = 'TABLE' STN ;                                         
 620 :       STN.'INSTANT'     = T1          ;                                         
 621 :       STN.'TEMPERATURE' = U1_T        ;                                         
 622 :       IPAS = 0 ;                                                                
 623 :       'SI' ( NIV_MESS '>EG' 0 ) ;                                               
 624 :          'MESS' 'Fin du calcul du temps             :' T1      ;                
 625 :          'SI' ( NIV_MESS '>EG' 2 ) ;                                            
 626 :             'SAUTER' 1 'LIGNE' ;                                                
 627 :             'MESS' 'CHAMP DE TEMPERATURE AU TEMPS      :' T1 ;                  
 628 :             'LISTE' U1_T ;                                                      
 629 :          'FINSI' ;                                                              
 630 :       'FINSI' ;                                                                 
 631 :    'FINSI' ;                                                                    
 632 :    T0_0   = T1     ;                                                            
 633 :    U0_1   = U0_0   ;                                                            
 634 :    U0_0   = U1_AUX ;                                                            
 635 :    'SI' ( 'EXISTE' ETAB 'FLUX' ) ;                                              
 636 :       QTPS_1 = QTPS_0 ;                                                         
 637 :       QTPS_0 = 'TIRER' TC_TPS T0_0 ;                                    
 638 :    'FINSI' ;                                                                    
 639 : 'FIN' BOUC_SOR ;                                                                
 640 : *                                                                               
 641 : *---  ON FAIT LE MENAGE...                                                      
 642 : *                                                                               
 643 : *'MENAGE' ;                                                                     
 644 : 'SI' ( NIV_MESS '>EG' 1 ) ;                                                     
 645 :    'SAUTER' 1 'LIGNE' ;                                                         
 646 :    'MESS' '***   Fin de la procedure "TRANSIT3"   ***' ;                        
 647 : 'FINSI' ;                                                                       
 648 :  'FIN' PROC ;                                                                   
 649 : 'FINPROC' ETAB ;

© Cast3M 2003 - All rights reserved.
Disclaimer