Download translin.procedur

Back to the list

   1 : * TRANSLIN  PROCEDUR  PASCAL    14/01/23    21:15:03     7913           
   2 : 'DEBPROC' TRANSLIN PRECED*'TABLE';                                      
   3 :                                                                         
   4 : *----------------------------------------------------------------------*
   5 : *                                                                      *
   6 : *                             T R A N S L I N                          *
   7 : *                             ---------------                          *
   8 : *                                                                      *
   9 : *     RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE LINEAIRE       *
  10 : *     METHODE A UN PAS DE TEMPS ( THETA SCHEMA )                       *
  11 : *                                                                      *
  12 : *     ETAB, TABLE CONTENANT EN ENTREE :                                *
  13 : *                                                                      *
  14 : *     INDICE 'TET1'         CHAMP DE TEMPERATURE INITIAL AU PAS 0      *
  15 : *     INDICE 'MOD_THE'      OBJET MODELE THERMIQUE                     *
  16 : *     INDICE 'MOD_CON'      OBJET MODELE CONVECTION                    *
  17 : *     INDICE 'BLOCAGES_THERMIQUES'      MATRICE DE BLOCAGE             *
  18 : *     INDICE 'MAT_THE'      OBJET MATERIAU THERMIQUE.                  *
  19 : *                           CE CHAMP PEUT AVOIR DES COMPOSANTES DE     *
  20 : *                           TYPE FLOTTANT OU EVOLUTION                 *
  21 : *     INDICE 'MAT_CON'      OBJET MATERIAU CONVECTION                  *
  22 : *     INDICE 'CHARGEMENT'   CHARGEMENT DECRIVANT LES :                 *
  23 : *                           VALEURS DES VARIABLES EXTERNES (EX: TE,    *
  24 : *                           FLUX,TEMPERATURES IMPOSEES ,...)           *
  25 : *                           VALEURS DES VARIABLES EXTERNES             *
  26 : *     INDICE 'TEMPS0'       TEMPS INITIAL (CORRESPOND A INITAL(0)      *
  27 : *     INDICE 'TEM_CALC'     LISTREEL : TEMPS DES RESULTATS A CALCULER  *
  28 : *     INDICE 'RELAXATION_THETA'  VALEUR DU 1 COEFFICIENT DE RELAXATION *
  29 : *                           (VALEUR PAR DEFAUT 0.5)                    *
  30 : *     INDICE 'SOUS-RELAXATION'  VALEUR DU 2 COEFFICIENT DE RELAXATION  *
  31 : *                           (VALEUR PAR DEFAUT 0.5)                    *
  32 : *                                                                      *
  33 : *     REMARQUE :  CERTAINES VARIABLES ONT DES NOMS IMPOSES.            *
  34 : *                 LE TEMPS                      : TEMP                 *
  35 : *                 LA TEMPERATURE                : T                    *
  36 : *                 LES TEMPERATURES IMPOSEES     : TIMP                 *
  37 : *                 LES FLUX                      : Q                    *
  38 : *                                                                      *
  39 : *                 LE NOM DES AUTRES VARIABLES EST LAISSE AU CHOIX DE   *
  40 : *                 L'UTILISATEUR                                        *
  41 : *                                                                      *
  42 : *     D.R., LE 29 JUIN 1988. VERSION DU 18 JANVIER 1989.               *
  43 : *                                                                      *
  44 : *----------------------------------------------------------------------*
  45 :                                                                         
  46 : ERR_VAL = FAUX;                                                         
  47 :                                                                         
  48 : ********************************************************************    
  49 : *        Recuperation de l'information contenue dans ETAB          *    
  50 : ********************************************************************    
  51 :                                                                         
  52 : *------- Initialisation de la liste des temps à calculer ---------      
  53 : ETAB=PRECED.'WTABLE';                                                   
  54 : TE_CALC = ETAB.'TEM_CALC' ;                                             
  55 : DCALC = 'DIME' TE_CALC;                                                 
  56 :                                                                         
  57 : *-------------- Calcul du premier pas de calcul -------------------     
  58 :                                                                         
  59 : TEM1 = 'EXTR' TE_CALC 1;                                                
  60 : TEM0 = ETAB.'TEMPS0' ;                                                  
  61 : T_PAS = TEM1 -TEM0;                                                     
  62 :                                                                         
  63 : *----------- Initialisation du champ de temperatures ------------       
  64 :                                                                         
  65 : U0 = ETAB.'TET1' ;                                                      
  66 :                                                                         
  67 : *---------- y-a-t-il definition des coefficients lambda ----------      
  68 :                                                                         
  69 : 'SI' ( 'EXISTE' ETAB 'RELAXATION_THETA' ) ;                             
  70 :    LAMBDA1   = ETAB.'RELAXATION_THETA' ;                                
  71 : 'SINON' ;                                                               
  72 :    LAMBDA1   = 1. ;                                                    
  73 : 'FINSI' ;                                                               
  74 : 'SI' ( 'EXISTE' ETAB 'SOUS-RELAXATION' ) ;                              
  75 :    LAMBDA2   = ETAB.'SOUS-RELAXATION' ;                                 
  76 : 'SINON' ;                                                               
  77 :    LAMBDA2   = 1. ;                                                    
  78 : 'FINSI' ;                                                               
  79 :                                                                         
  80 : *------- Cas particulier ou il n'y a pas de CAPACITE ------------------*
  81 : *- Ceci correspond au cas ou, au moins, une des 2 composantes 'C   '  -*
  82 : *- et/ou 'RHO ' n'est pas definie dans le materiau (facultatives).    -*
  83 :                                                                         
  84 : LCOMPM = 'EXTRAIRE' ETAB.'MAT_THE' 'COMP' ;                             
  85 : ICAPA = ('EXISTE' LCOMPM 'C   ') 'ET' ('EXISTE' LCOMPM 'RHO ') ;        
  86 : * En regime stationnaire (sans CAPACITE), on force LAMBDA1 et LAMBDA2 
  87 : * a 1. Sinon on ne resout pas le bon probleme !
  88 : 'SI' ('NON' ICAPA) ;  LAMBDA1 = 1. ; LAMBDA2 = 1. ;  'FINSI' ;
  89 :                                                                         
  90 : ********************************************************************    
  91 : *                 Rappel des donnees du probleme                   *    
  92 : ********************************************************************    
  93 :                                                                         
  94 : 'SI' ('EGA' ETAB.'PAS' 1) ;                                             
  95 : 'SAUTER' 1 'LIGNE';                                                     
  96 : 'MESS' '---- Probleme de thermique transitoire linéaire ----';          
  97 : 'MESS' '---- Méthode à un pas de temps (THETA méthode) ----';           
  98 : 'SAUTER' 1 'LIGNE';                                                     
  99 : 'MESS' 'Données utilisées du problème :';                               
 100 : 'SAUTER' 1 'LIGNE';                                                     
 101 : 'MESS' '   Champ de températures à l instant : '  TEM0;                 
 102 : 'MESS' '   Coefficient de relaxation : ' LAMBDA1;                       
 103 : 'MESS' '   Coefficient de sous-relaxation : ' LAMBDA2;                  
 104 : 'SI' ('NEG' ETAB.'BLOCAGES_THERMIQUES' 'INCONNU');                      
 105 :    'MESS' '   Présence de températures imposées.';                      
 106 : 'SINON';                                                                
 107 :    'MESS' '   Pas de températures imposées.';                           
 108 : 'FINSI';                                                                
 109 : 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q   ');                             
 110 :    'MESS' '   Présence de flux.';                                       
 111 : 'SINON';                                                                
 112 :    'MESS' '   Pas de présence de flux.';                                
 113 : 'FINSI';                                                                
 114 : 'SI' ETAB.'CONVECTION';                                                 
 115 :    'MESS' '   Présence de convection.';                                 
 116 : 'SINON';                                                                
 117 :    'MESS' '   Pas de terme convectif.';                                 
 118 : 'FINSI';                                                                
 119 : 'SI' ('NON' ICAPA) ;                                                    
 120 :    'MESS' '   Probleme de thermique lineaire stationnaire' ;          
 121 : 'FINSI' ;                                                               
 122 : 'MESS' ' ';                                                             
 123 : 'FINSI';                                                                
 124 :                                                                         
 125 : ********************************************************************    
 126 : *                  Boucle sur les pas de temps                     *    
 127 : ********************************************************************    
 128 :                                                                         
 129 : 'REPETER' BOUC_SO ;                                                     
 130 :    ITE3 = &BOUC_SO;                                                     
 131 :                                                                         
 132 : *-------------------- Condition de fin de boucle ------------------     
 133 :                                                                         
 134 :    TEMM = (LAMBDA2 * TEM1)  + ((1 - LAMBDA2) * TEM0);                   
 135 :                                                                         
 136 :    'MESS' ' ';                                                          
 137 :    'MESS' '---- Calcul du champ de température au temps :'TEM1;         
 138 :    'MESS' ' ';                                                          
 139 :                                                                         
 140 : *****************************************************************       
 141 : *               Gestion des variables externes                  *       
 142 : *****************************************************************       
 143 :                                                                         
 144 : *--------------- Si convection on cherche TE --------------------       
 145 :                                                                         
 146 :    'SI' ETAB.'CONVECTION';                                              
 147 :        CH_TE = 'TIRE' (ETAB.'CHARGEMENT') 'TECO' TEMM;                  
 148 :    'FINSI';                                                             
 149 :                                                                         
 150 : *--------------------- On cherche les flux -----------------------      
 151 :                                                                         
 152 :    'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q   ');                          
 153 :       CH_FL = 'TIRE' (ETAB.'CHARGEMENT') 'Q   ' TEMM;                   
 154 :    'FINSI';                                                             
 155 :                                                                         
 156 : *------------- Calcul de la matrice de conductivité ----------------    
 157 :                                                                         
 158 :    MAT_COND = 'CONDU' ETAB.'MOD_THE' ETAB.'MAT_THE';                    
 159 :                                                                         
 160 : *----------------- y-a-t-il des blocages ---------------------------    
 161 :                                                                         
 162 :    'SI' ('EGA' ETAB.'BLOCAGES_THERMIQUES' 'INCONNU') ;                  
 163 :       MAT_BLOC = 'EXTR' MAT_COND 'RIGI' 'MULT';                         
 164 :    'SINON';                                                             
 165 :       MAT_BLOC = ETAB.'BLOCAGES_THERMIQUES';                            
 166 :    'FINSI';                                                             
 167 :    'SI' ('NON' ('EXISTE' (ETAB.'CHARGEMENT') 'TIMP'));                  
 168 :       CH_TI = 'DEPI' MAT_BLOC 0.;                                       
 169 :    'SINON';                                                             
 170 :       CH_TI =  'TIRE' (ETAB.'CHARGEMENT') 'TIMP' TEM1;                  
 171 :    'FINSI';                                                             
 172 :                                                                         
 173 : *----------------- Calcul de la matrice de capacite -----------------   
 174 :                                                                         
 175 :    'SI' ICAPA ;                                                         
 176 :       MAT_CAPA = 'CAPACITE' ETAB.'MOD_THE' ETAB.'MAT_THE';              
 177 :    'FINSI' ;                                                            
 178 :                                                                         
 179 : *---------------- Calcul de la matrice regularisee -----------------    
 180 :                                                                         
 181 :    MAT_RIGI = MAT_COND * LAMBDA1 ;                                      
 182 :    B1       = MAT_COND * (LAMBDA1 - 1.) ;                               
 183 :    'SI' ICAPA ;                                                         
 184 :       A1 = MAT_CAPA / T_PAS ;                                           
 185 :       MAT_RIGI = MAT_RIGI 'ET' A1 ;                                     
 186 :       B1 = B1 'ET' A1 ;                                                 
 187 :    'FINSI' ;                                                            
 188 :    MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ;                                  
 189 :    MAT_CHPO = B1 * U0 ;                                                 
 190 :    'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q   ');                          
 191 :       MAT_CHPO = MAT_CHPO + CH_FL ;                                     
 192 :    'FINSI' ;                                                            
 193 :    MAT_CHPO = MAT_CHPO + CH_TI ;                                        
 194 :                                                                         
 195 : *******************************************************************     
 196 : *              On genere les termes de convection                 *     
 197 : *******************************************************************     
 198 :                                                                         
 199 :    'SI' ETAB.'CONVECTION';                                              
 200 : *      RIG_CON = 'COND' ETAB.'MOD_CON' ETAB.'MAT_CON'       ;            
 201 :       CHAL_TE = 'CONV' ETAB.'MOD_CON' ETAB.'MAT_CON' CH_TE ;            
 202 : *      MAT_RIGI = MAT_RIGI 'ET' RIG_CON;                                 
 203 :       MAT_CHPO = MAT_CHPO + CHAL_TE;                                    
 204 :    'FINSI';                                                             
 205 :                                                                         
 206 : *--------------------- Calcul d'un pas ----------------------------     
 207 :                                                                         
 208 :       U1 = 'RESOUDRE' MAT_RIGI MAT_CHPO ;                               
 209 :                                                                         
 210 : *---------------- Appel a une procedure utilisateur -----------------   
 211 :                                                                         
 212 :      ETAB.'THER_COURANT' = U1 ;                                         
 213 :      'SI' (ETAB.'PROCEDURE_PERSO2');                                    
 214 :         ETAB.'TEMI' = U1 ;                                              
 215 :         PERSO2 PRECED ;                                                 
 216 :         ETAB = 'ENLEVER' ETAB 'TEMI' ;                                  
 217 :         'SI' ('EXIS' PRECED 'ARRET') ;                                  
 218 :           ETAB . 'ARRET' = PRECED . 'ARRET' ;                           
 219 :         'FINS' ;                                                        
 220 :      'FINSI';                                                           
 221 :                                                                         
 222 : *******************************************************************     
 223 : *      Reinitialisation des variables en vue du pas suivant       *     
 224 : *******************************************************************     
 225 :                                                                         
 226 :    'SI' ((ITE3 + 1) '<EG' DCALC);                                       
 227 :       TEM0 = TEM1;                                                      
 228 :       TEM1 = 'EXTR' TE_CALC (ITE3 + 1);                                 
 229 :       T_PAS = TEM1 - TEM0;                                              
 230 :       U0  = U1  ;                                                       
 231 :    'SINON';                                                             
 232 :       'QUITTER' BOUC_SO;                                                
 233 :    'FINSI';                                                             
 234 :                                                                         
 235 : *------------------------ On fait le menage -----------------------     
 236 :                                                                         
 237 :    'MENAGE' ;                                                           
 238 :                                                                         
 239 : 'FIN' BOUC_SO ;                                                         
 240 :                                                                         
 241 : *---------- Initialisation de ETAB en vue d'une reprise ----------      
 242 :                                                                         
 243 : STAB = 'TABLE' ;                                                        
 244 : STAB.'ERREUR' = ERR_VAL ;                                               
 245 : STAB.'INITIAL(2)' = U1 ;                                                
 246 :                                                                         
 247 : 'FINPROC' STAB ;                                                        
 248 : 
 249 :  
 250 :  
 251 :  
 252 :  

© Cast3M 2003 - All rights reserved.
Disclaimer