Download transit2.procedur

Back to the list

   1 : * TRANSIT2  PROCEDUR  JEANV     94/10/10    21:50:57     1285           
   2 : 'DEBPROC' TRANSIT2 ETAB*'TABLE   ' ;                                            
   3 : *----------------------------------------------------------------------*        
   4 : *                                                                      *        
   5 : *                             T R A N S I T 2                          *        
   6 : *                             ---------------                          *        
   7 : *                                                                      *        
   8 : *     RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE LINEAIRE       *        
   9 : *     METHODE A UN PAS DE TEMPS                                        *        
  10 : *                                                                      *        
  11 : *     ETAB, TABLE CONTENANT EN ENTREE :                                *        
  12 : *                                                                      *        
  13 : *     INDICE 'SOUSTYPE'     THERMIQUE                                  *        
  14 : *     INDICE 'INITIAL'      CHAMP DE TEMPERATURE INITIAL               *        
  15 : *     INDICE 'IMPOSE'       VALEURS IMPOSEES ( CHPOINT OU CHARGEMENT ) *        
  16 : *     INDICE 'BLOCAGE'      MATRICE DE BLOCAGE                         *        
  17 : *     INDICE 'FLUX'         CHARGEMENT DE FLUX EN FONCTION DU TEMPS    *        
  18 : *     INDICE 'CONDUCTIVITE' MATRICE DE CONDUCTIVITE                    *        
  19 : *     INDICE 'CAPACITE'     MATRICE DE CAPACITE                        *        
  20 : *     INDICE 'TINI'         TEMPS INITIAL (TINI=0. PAR DEFAUT)         *        
  21 : *     INDICE 'PAS'          VALEUR DU PAS DE TEMPS                     *        
  22 : *     INDICE 'NPAS'         NOMBRE DE PAS DE CALCUL (NPAS=1 PAR DEFAUT)*        
  23 : *     INDICE 'NSOR'         ON VEUT UN RESULTAT TOUS LES NSOR PAS      *        
  24 : *                           (NSOR=1 PAR DEFAUT)                        *        
  25 : *     INDICE 'COEF'         VALEUR DU COEFFICIENT DE RELAXATION        *        
  26 : *                           (0.55 PAR DEFAUT )                         *        
  27 : *     INDICE 'COE2'         VALEUR DU SECOND COEFFICIENT               *        
  28 : *                           (0.5 PAR DEFAUT)                           *        
  29 : *     INDICE 'NIVEAU'       NIVEAUX DE MESSAGES (0 PAR DEFAUT)         *        
  30 : *     INDICE 'REPRISE'      'OUI' POUR UNE REPRISE DE CALCUL           *        
  31 : *                                                                      *        
  32 : *     ETAB CONTENANT EN SORTIE :                                       *        
  33 : *                                                                      *        
  34 : *     INDICE NUMPAS NUMERO DU PAS DE SORTIE                            *        
  35 : *     LA TABLE ( ETAB NUMPAS ) CONTENANT :                             *        
  36 : *     INDICE 'TEMPERATURE'  LE CHAMP DE TEMPERATURE                    *        
  37 : *     INDICE 'INSTANT'      L'INSTANT DE SORTIE                        *        
  38 : *                                                                      *        
  39 : *     D.R., LE 20 DECEMBRE 1988. VERSION DU 18 JANVIER 1989.           *        
  40 : *     CONDITION DE TEMPERATURE IMPOSEE FACULTATIVE, D.R. LE 30/05/89   *        
  41 : *                                                                      *        
  42 : *----------------------------------------------------------------------*        
  43 : 'REPETER' PROC 1 ;                                                              
  44 : 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ;                                
  45 :    'MESS' 'SOUS TYPAGE INCORRECT DE LA TABLE EN ENTREE|' ;                      
  46 :    'QUITTER' PROC ;                                                             
  47 : 'FINSI' ;                                                                       
  48 : 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ;                                               
  49 :    NIV_MESS = 'ENTIER' ( ETAB.'NIVEAU' ) ;                                      
  50 : 'SINON' ;                                                                       
  51 :    NIV_MESS = 0 ;                                                               
  52 : 'FINSI' ;                                                                       
  53 : 'SI' ( NIV_MESS '>EG' 1 ) ;                                                     
  54 :    'SAUTER' 1 'LIGNE' ;                                                         
  55 :    'MESS' '***  DEBUT DE LA PROCEDURE "TRANSIT2"  ***' ;                        
  56 : 'FINSI' ;                                                                       
  57 : *                                                                               
  58 : *---  RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB"                        
  59 : *                                                                               
  60 : U0 = 'COPIER' ( ETAB.'INITIAL' ) 'GEOM' ;                                       
  61 : T_REP = 0. ;NREP = 0 ;IREP = 0 ;                                                
  62 : 'SI' ( 'EXISTE' ETAB 'REPRISE' ) ;                                              
  63 :    'REPETER' BOUC_REP ;                                                         
  64 :       IREP = IREP + 1 ;                                                         
  65 :       'SI' ( 'NON' ( 'EXISTE' ETAB IREP ) ) ;                                   
  66 :          'QUITTER' BOUC_REP ;                                                   
  67 :       'FINSI' ;                                                                 
  68 :    'FIN' BOUC_REP ;                                                             
  69 :    NREP = IREP - 1 ;                                                            
  70 :    U0 = ETAB.NREP.'TEMPERATURE' ;                                               
  71 :    T_REP = ETAB.NREP.'INSTANT' ;                                                
  72 : 'FINSI' ;                                                                       
  73 : TAB_FLUX = ETAB.'FLUX' ;                                                        
  74 : MAT_COND = ETAB.'CONDUCTIVITE' ;                                                
  75 : MAT_CAPA = ETAB.'CAPACITE' ;                                                    
  76 : 'SI' ( 'EXISTE' ETAB 'BLOCAGE' ) ;                                              
  77 :    MAT_BLOC = ETAB.'BLOCAGE'  ;                                                 
  78 :    'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ;                                            
  79 :       VAL_IMP  = ETAB.'IMPOSE'   ;                                              
  80 :       TYP_IMP = 'TYPE' VAL_IMP ;                                                
  81 :       'SI' ( 'NEG' TYP_IMP 'CHARGEME' ) ;                                       
  82 :          VAL_IMPO = VAL_IMP ;                                                   
  83 :       'FINSI' ;                                                                 
  84 :    'FINSI' ;                                                                    
  85 : 'FINSI' ;                                                                       
  86 : 'SI' ( 'EXISTE' ETAB 'COEF' ) ;                                                 
  87 :    LAMBDA   = ETAB.'COEF' ;                                                     
  88 : 'SINON' ;                                                                       
  89 :    LAMBDA   = 0.55 ;                                                            
  90 : 'FINSI' ;                                                                       
  91 : 'SI' ( 'EXISTE' ETAB 'COE2' ) ;                                                 
  92 :    LAMBDA2  = ETAB.'COE2' ;                                                     
  93 : 'SINON' ;                                                                       
  94 :    LAMBDA2  = 0.5 ;                                                             
  95 : 'FINSI' ;                                                                       
  96 : 'SI' ( 'EXISTE' ETAB 'TINI' ) ;                                                 
  97 :    T_INI  = ETAB.'TINI' ;                                                       
  98 : 'SINON' ;                                                                       
  99 :    T_INI  = 0. ;                                                                
 100 : 'FINSI' ;                                                                       
 101 : T_INI = T_INI + T_REP ;                                                         
 102 : 'SI' ( 'EXISTE' ETAB 'NPAS' ) ;                                                 
 103 :    NBRE_PAS = 'ENTIER' ( ETAB.'NPAS' )  ;                                       
 104 : 'SINON' ;                                                                       
 105 :    NBRE_PAS = 1 ;                                                               
 106 : 'FINSI' ;                                                                       
 107 : 'SI' ( 'EXISTE' ETAB 'NSOR' ) ;                                                 
 108 :    N_SOR = 'ENTIER' ( ETAB.'NSOR' )  ;                                          
 109 : 'SINON' ;                                                                       
 110 :    N_SOR = 1 ;                                                                  
 111 : 'FINSI' ;                                                                       
 112 : 'SI' ( 'EXISTE' ETAB 'PAS' ) ;                                                  
 113 :    T_PAS = ETAB.'PAS' ;                                                         
 114 : 'SINON' ;                                                                       
 115 :    'SAUTER' 1 'LIGNE' ;                                                         
 116 :    'MESS' 'IL MANQUE LE PAS DE TEMPS |' ;                                       
 117 :    'QUITTER' PROC ;                                                             
 118 : 'FINSI' ;                                                                       
 119 : T0 = T_INI ;                                                                    
 120 : Q0 = 'TIRER' TAB_FLUX  T0 ;                                              
 121 : *                                                                               
 122 : *---  "ETAB" EST UNE TABLE DE TABLES, INDICEE PAR LE NUMERO DU PAS              
 123 : *                                                                               
 124 : NUM_PAS = NREP ;                                                                
 125 : 'SI' ( 'NON' ( 'EXISTE' ETAB 'REPRISE' ) ) ;                                    
 126 :    STN = 'TABLE' ;                                                              
 127 :    ETAB.NUM_PAS = 'TABLE' STN ;                                                 
 128 :    STN.'INSTANT' = T0 ;                                                         
 129 :    STN.'TEMPERATURE' = U0 ;                                                     
 130 :    'SI' ( NIV_MESS '>EG' 1 ) ;                                                  
 131 :       'SAUTER' 1 'LIGNE' ;                                                      
 132 :       'MESS' 'SORTIE D UN RESULTAT POUR LE TEMPS :' T0      ;                   
 133 :       'MESS' 'NUMERO DU PAS DE SORTIE            :' NUM_PAS ;                   
 134 :       'SI' ( NIV_MESS '>EG' 2 ) ;                                               
 135 :          'SAUTER' 1 'LIGNE' ;                                                   
 136 :          'MESS' 'CHAMP DE TEMPERATURE AU TEMPS      :' T0 ;                     
 137 :          'LISTE' U0 ;                                                           
 138 :       'FINSI' ;                                                                 
 139 :    'FINSI' ;                                                                    
 140 : 'FINSI' ;                                                                       
 141 : SCA1 = 1. - LAMBDA ;                                                            
 142 : SCA2 = 1. / T_PAS ;                                                             
 143 : A1 = MAT_COND * LAMBDA ;                                                        
 144 : A2 = MAT_CAPA * SCA2 ;                                                          
 145 : A3 = MAT_COND * ( LAMBDA - 1 ) ;                                                
 146 : B2 = A2 'ET' A3 ;                                                               
 147 : MAT_RIGI = A1 'ET' A2 ;                                                         
 148 : 'SI' ( 'EXISTE' ETAB 'BLOCAGE' ) ;                                              
 149 :    MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ;                                          
 150 : 'FINSI' ;                                                                       
 151 : IPAS = 0 ;ITEM = 0 ;                                                            
 152 : *                                                                               
 153 : *---  BOUCLE SUR LES PAS DE TEMPS                                               
 154 : *                                                                               
 155 : 'REPETER' BOUC_SOR ;                                                            
 156 :    ITEM = ITEM + 1 ;                                                            
 157 :    IPAS = IPAS + 1 ;                                                            
 158 : *                                                                               
 159 : *---  TEST SI FIN DE BOUCLE                                                     
 160 : *                                                                               
 161 :    'SI' ( ITEM '>' NBRE_PAS ) ;                                                 
 162 :       'QUITTER' BOUC_SOR ;                                                      
 163 :    'FINSI' ;                                                                    
 164 :    T1 = T_INI + ( ITEM * T_PAS ) ;                                              
 165 :    Q1 = 'TIRER' TAB_FLUX  T1 ;                                           
 166 :    B1 = 'COLI' Q0 (1. - LAMBDA2) Q1 LAMBDA2 ;                                   
 167 :    B3 = B2 * U0 ;                                                               
 168 :    MAT_CHPO = B1 + B3 ;                                                      
 169 :    'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ;                                            
 170 :       'SI' ( 'EGA' TYP_IMP 'CHARGEME' ) ;                                       
 171 :          VAL_IMPO = 'TIRER' VAL_IMP  T1 ;                                
 172 :       'FINSI' ;                                                                 
 173 :       MAT_CHPO = MAT_CHPO + VAL_IMPO ;                                       
 174 :    'FINSI' ;                                                                    
 175 : *                                                                               
 176 : *---  CALCUL D'UN PAS                                                           
 177 : *                                                                               
 178 :    U1 = 'RESOUDRE' MAT_RIGI MAT_CHPO ;                                          
 179 :    U1_LX  = 'EXCO' 'LX' U1 'NOID' 'LX' ;                                        
 180 :    U1_AUX = U1 - U1_LX ;                                                        
 181 :    U1_T   = 'ENLEVE'  U1 'LX' ;                                                 
 182 : *                                                                               
 183 : *---  ARCHIVAGE DES RESULTATS DANS "ETAB"                                       
 184 : *                                                                               
 185 :    'SI' ( IPAS 'EGA' N_SOR ) ;                                                  
 186 :       NUM_PAS = NUM_PAS + 1 ;                                                   
 187 :       STN = 'TABLE' ;                                                           
 188 :       ETAB.NUM_PAS = 'TABLE' STN ;                                              
 189 :       STN.'INSTANT' = T1 ;                                                      
 190 :       STN.'TEMPERATURE' = U1_T ;                                                
 191 :       'SI' ( NIV_MESS '>EG' 1 ) ;                                               
 192 :          'SAUTER' 1 'LIGNE' ;                                                   
 193 :          'MESS' 'SORTIE D UN RESULTAT POUR LE TEMPS :' T1      ;                
 194 :          'MESS' 'NUMERO DU PAS DE SORTIE            :' NUM_PAS ;                
 195 :          'SI' ( NIV_MESS '>EG' 2 ) ;                                            
 196 :             'SAUTER' 1 'LIGNE' ;                                                
 197 :             'MESS' 'CHAMP DE TEMPERATURE AU TEMPS      :' T1 ;                  
 198 :             'LISTE' U1 ;                                                        
 199 :          'FINSI' ;                                                              
 200 :       'FINSI' ;                                                                 
 201 :       IPAS = 0 ;                                                                
 202 :    'FINSI' ;                                                                    
 203 :    T0 = T1 ;                                                                    
 204 :    U0 = U1_AUX ;                                                                
 205 :    Q0 = Q1 ;                                                                    
 206 : 'FIN' BOUC_SOR ;                                                                
 207 : *                                                                               
 208 : *---  ON FAIT LE MENAGE |                                                       
 209 : *                                                                               
 210 : 'MENAGE' ;                                                                      
 211 : *                                                                               
 212 : 'SI' ( NIV_MESS '>EG' 1 ) ;                                                     
 213 :    'SAUTER' 1 'LIGNE' ;                                                         
 214 :    'MESS' '***  FIN DE LA PROCEDURE "TRANSIT2"  ***' ;                          
 215 : 'FINSI' ;                                                                       
 216 : 'FIN' PROC ;                                                                    
 217 : 'FINPROC' ETAB ;                                                                

© Cast3M 2003 - All rights reserved.
Disclaimer