Download dupont2.procedur

Back to the list

   1 : * DUPONT2   PROCEDUR  CHAT      12/06/07    21:15:11     7389           
   2 : 'DEBPROC' DUPONT2 PRECED*'TABLE';                                       
   3 :                                                                         
   4 : *----------------------------------------------------------------------*
   5 : *                                                                      *
   6 : *                             D U P O N T 2                            *
   7 : *                             -------------                            *
   8 : *                                                                      *
   9 : *     RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE NON-LINEAIRE   *
  10 : *     METHODE A UN PAS DE TEMPS ( TETA SCHEMA )                        *
  11 : *                                                                      *
  12 : *     ETAB, TABLE CONTENANT EN ENTREE :                                *
  13 : *                                                                      *
  14 : *     INDICE 'TET0'         CHAMP DE TEMPERATURE INITIAL AU PAS 0      *
  15 : *     INDICE 'TET1'         CHAMP DE TEMPERATURE INITIAL AU PAS 1      *
  16 : *                           ( LA DONNEE DE CE CHAMP EST FACULTATIVE )  *
  17 : *     INDICE 'VIEUXPAS'     PAS DE TEMPS ENTRE TET0 ET TET1            *
  18 : *                           (DONNEE INDISPENSABLE SI EXISTE TET1)      *
  19 : *     INDICE 'RAYO'         LOGIQUE VALANT VRAI POUR UNE CONDITION     *
  20 : *                           DE RAYONNEMENT                             *
  21 : *     INDICE 'CELSIUS'      LOGIQUE VALANT VRAI SI L'UNITE EST LE      *
  22 : *                           DEGRE CELSIUS (CAPITAL SI RAYONNEMENT)     *
  23 : *     INDICE 'MOD_THE'      MODELE       THERMIQUE                     *
  24 : *     INDICE 'MOD_CON'      MODELE       CONVECTION                    *
  25 : *     INDICE 'MOD_TOT'      MODELE       CONVECTION + THERMIQUE        *
  26 : *     INDICE 'MAT_TOT'      MATERIAU     CONVECTION + THERMIQUE        *
  27 : *     INDICE 'BLOCAGES_THERMIQUES'      MATRICE DE BLOCAGE             *
  28 : *     INDICE 'CHARGEMENT'   CHARGEMENT DECRIVANT LES :                 *
  29 : *                           VALEURS DES VARIABLES EXTERNES (EX: TE,    *
  30 : *                           FLUX,TEMPERATURES IMPOSEES ,...)           *
  31 : *                           VALEURS DES VARIABLES EXTERNES             *
  32 : *     INDICE 'PHASE'        LOGIQUE VALANT VRAI SI CHGT DE PHASE       *
  33 : *     INDICE 'TEMPS0'       TEMPS INITIAL (CORRESPOND A TET0)          *
  34 : *     INDICE 'PAS'          VALEUR DU PAS DE TEMPS                     *
  35 : *     INDICE 'TEM_CALC'     LISTREEL : TEMPS DES RESULTATS A CALCULER  *
  36 : *     INDICE 'RELAXATION_DUPONT'  VALEUR DU COEFFICIENT DE RELAXATION  *
  37 : *                           (VALEUR PAR DEFAUT 0.25)                   *
  38 : *     INDICE 'SOUS-RELAXATION'  VALEUR DU COEFF. DE SOUS-RELAXATION    *
  39 : *                           (VALEUR PAR DEFAUT 0.5)                    *
  40 : *     INDICE PROJECTION     LOGIQUE VALANT VRAI SI COUPLAGE ET SI LE   *
  41 : *                           MAILLAGE DE LA MECANIQUE ET DE LA THERMIQUE*
  42 : *                           EST DIFFERENT                              *
  43 : *                                                                      *
  44 : *     ETAB CONTIENT EN SORTIE                                          *
  45 : *                                                                      *
  46 : *     INDICE INITIAL(2)     DERNIER CHAMP DE TEMPERATURE CALCULE       *
  47 : *                                                                      *
  48 : *     REMARQUE :  CERTAINES VARIABLES ONT DES NOMS IMPOSES.            *
  49 : *                 LE TEMPS                      : TEMP                 *
  50 : *                 LA TEMPERATURE                : T                    *
  51 : *                 LA TEMPERATURE EXTERIEURE     : TE                   *
  52 : *                 LES TEMPERATURES IMPOSEES     : TIMP                 *
  53 : *                 LES FLUX                      : Q                    *
  54 : *                                                                      *
  55 : *                 LE NOM DES AUTRES VARIABLES EST LAISSE AU CHOIX DE   *
  56 : *                 L'UTILISATEUR                                        *
  57 : *                                                                      *
  58 : *                                                                      *
  59 : *     D.R., LE 29 JUIN 1988.                                           *
  60 : *     E.J., MODIFICATIONS SEPTEMBRE 1994                               *
  61 : *                                                                      *
  62 : *----------------------------------------------------------------------*
  63 : ETAB=PRECED.'WTABLE';                                                   
  64 :                                                                         
  65 : 'REPETER' PROC 1 ;                                                      
  66 : ERR_VAL = FAUX;                                                         
  67 : MAIL_TOT = 'EXTR' ETAB.'MOD_TOT' 'MAIL';                                
  68 :                                                                         
  69 : ********************************************************************    
  70 : *        Recuperation de l'information contenue dans ETAB          *    
  71 : ********************************************************************    
  72 :                                                                         
  73 : *--------------- Traitement special pour le rayonnement -----------     
  74 :                                                                         
  75 : IRAD_INF = FAUX ;                                                       
  76 : IRADI = ETAB.'RAYO';                                                    
  77 :                                                                         
  78 : *---------------- Initialisation du pas de temps ------------------     
  79 :                                                                         
  80 : T_PAS = ETAB.'NOUV_PAS' ;                                               
  81 : 'SI' ('EXISTE' ETAB 'VIEUXPAS');                                        
  82 :    T_VPAS = ETAB.'VIEUXPAS';                                            
  83 : 'FINSI';                                                                
  84 :                                                                         
  85 : *------- Initialisation de la liste des temps à calculer ---------      
  86 :                                                                         
  87 : TE_CALC = ETAB.'TEM_CALC' ;                                             
  88 : DCALC = 'DIME' TE_CALC;                                                 
  89 :                                                                         
  90 : *------------ Initialisation des variables externes ---------------     
  91 :                                                                         
  92 : LNOM = 'EXTR' (ETAB.'CHARGEMENT') 'COMP';                               
  93 :                                                                         
  94 : *----------- y-a-t-il definition du coefficient lambda -----------      
  95 :                                                                         
  96 : 'SI' ( 'EXISTE' ETAB 'RELAXATION_DUPONT' ) ;                            
  97 :    LAMBDA = ETAB.'RELAXATION_DUPONT' ;                                  
  98 :    A_SUPPR = FAUX ;                                                     
  99 : 'SINON' ;                                                               
 100 :    LAMBDA   = 0.25 ;                                                    
 101 :    ETAB.'RELAXATION_DUPONT' = LAMBDA ;                                  
 102 :    A_SUPPR = VRAI ;                                                     
 103 : 'FINSI' ;                                                               
 104 : 'SI' ( 'EXISTE' ETAB 'SOUS_RELAXATION' ) ;                              
 105 :    LAMBDA2   = ETAB.'SOUS_RELAXATION' ;                                 
 106 : 'SINON' ;                                                               
 107 :    LAMBDA2   = 0.5 ;                                                    
 108 : 'FINSI' ;                                                               
 109 :                                                                         
 110 : *-------- Recherche des variables selon lesquelles varie ----------     
 111 : *---------------------- le champ de matériau ----------------------     
 112 :                                                                         
 113 : LVAREX = 'EXTR' ETAB.'MAT_TOT' 'DEVA';                                  
 114 : ILVA = 'DIME' LVAREX;                                                   
 115 : 'SI' ('NEG' ILVA 0);                                                    
 116 :    NONLIN1 = VRAI;                                                      
 117 :    'SI' (ETAB.'COUPLAGE');                                              
 118 :        CONTI=PRECED.'CONTINUATION';                                     
 119 : *--- Creation du MCHAML contenant tous les parametres mecaniques --     
 120 : *-------- Ces parametres sont determines au temps TEM0 ------------     
 121 : *----- Ces parametres sont projetes sur le maillage thermique -----     
 122 :                                                                         
 123 :       DEP1 = 'CHAN' 'CHAM' CONTI.'DEPLACEMENTS'                         
 124 :                            ETAB.'MO_TOT'  'NOEUD';                      
 125 :       CON1 = 'CHAN' 'NOEUD' CONTI.'CONTRAINTES'                         
 126 :                             ETAB.'MO_TOT' ;                             
 127 :       CHAR1_ME = DEP1 'ET' CON1;                                        
 128 : *      'SI' ('EXISTE' CONTI 'VITESSES');                                
 129 : *        VIT1 = 'CHAN' 'CHAM' CONTI.'VITESSES'                          
 130 : *                             ETAB.'MO_TOT'  'NOEUD';                   
 131 : *        CHAR1_ME = CHAR1_ME 'ET' VIT1;                                 
 132 : *      'FINSI';                                                         
 133 :       'SI' ('EXISTE' CONTI 'VARIABLES_INTERNES');                       
 134 :          VAR1 = 'CHAN'  'NOEUD'   CONTI.'VARIABLES_INTERNES'            
 135 :                                  ETAB.'MO_TOT' ;                        
 136 : *         DEF1 ='CHAN' 'NOEUD' (ETAB.'DEI_EST')                         
 137 : *                      (ETAB.'MO_TOT') ;                                
 138 :           CHAR1_ME = CHAR1_ME 'ET' VAR1 ;                               
 139 : *         CHAR1_ME = CHAR1_ME 'ET' VAR1 'ET' DEF1;                      
 140 :       'FINSI';                                                          
 141 :      'SI' ETAB.'PROJECTION';                                            
 142 :          CHAR_ME =  'CHAN' 'CHAM' ('PROI' MAIL_TOT CHAR1_ME)            
 143 :                 (ETAB.'MO_TOT')  'RIGIDITE';                            
 144 :      'SINON';                                                           
 145 :          CHAR_ME =  'CHAN' 'CHAM' ('CHAN' 'CHPO' CHAR1_ME               
 146 :                 (ETAB.'MO_TOT'))  (ETAB.'MO_TOT')  'RIGIDITE';          
 147 :      'FINSI';                                                           
 148 :    'FINSI';                                                             
 149 : 'SINON';                                                                
 150 :    NONLIN1 = FAUX;                                                      
 151 : 'FINSI';                                                                
 152 :                                                                         
 153 : *------- Cas particulier ou il n'y a pas de CAPACITE ------------------*
 154 : *- Ceci correspond au cas ou, au moins, une des 2 composantes 'C   '  -*
 155 : *- et/ou 'RHO ' n'est pas definie dans le materiau (facultatives).    -*
 156 :                                                                         
 157 : LCOMPM = 'EXTRAIRE' ETAB.'MAT_TOT' 'COMP' ;                             
 158 : ICAPA = ('EXISTE' LCOMPM 'C   ') 'ET' ('EXISTE' LCOMPM 'RHO ') ;        
 159 : * En regime stationnaire (sans CAPACITE), on force LAMBDA2 a 1.         
 160 : * Sinon on ne resout pas le bon probleme !                              
 161 : * Quelle valeur pour LAMBDA ? 0.5 ? A voir !                            
 162 : * On peut aussi se demander s'il est judicieux, dans le cas present,    
 163 : * d'utiliser cette methode d'integration !                              
 164 : 'SI' ('NON' ICAPA) ;  LAMBDA2 = 1. ;  'FINSI' ;                         
 165 :                                                                         
 166 : *---------- Initialisation de l'unité de température --------------     
 167 :                                                                         
 168 : 'SI' ('EXISTE' ETAB 'CELSIUS');                                         
 169 :    ICELS = ETAB.'CELSIUS';                                              
 170 : 'SINON';                                                                
 171 :    ICELS = FAUX;                                                        
 172 : 'FINSI';                                                                
 173 :                                                                         
 174 : *---------- Initialisation de la temperature de reference----------     
 175 :                                                                         
 176 : 'SI' ICELS ;                                                            
 177 :    TREF = 273.15 ;                                                      
 178 : 'SINON';                                                                
 179 :    TREF = 0. ;                                                          
 180 : 'FINSI';                                                                
 181 :                                                                         
 182 : *----------- Initialisation des champs de temperatures ------------     
 183 : *------------------------ et du temps -----------------------------     
 184 :                                                                         
 185 : INIT = 0;                                                               
 186 :                                                                         
 187 : TYP_0 = 'TYPE' (ETAB.'TET0');                                           
 188 : 'SI' ('NEG' TYP_0 'ENTIER  ') ;                                         
 189 :    'SI' ((ABS(T_PAS-T_VPAS)/T_PAS) '<EG' 1E-5);                         
 190 :       TEM1 = ETAB.'TEMPS0' ;                                            
 191 :       TEM0 = TEM1 - T_VPAS;                                             
 192 :       TEM2 = TEM1 + T_PAS;                                              
 193 :       U0 = ETAB.'TET0' ;                                                
 194 :       U1 = ETAB.'TET1' ;                                                
 195 :    'SINON';                                                             
 196 :       U1 = ETAB.'TET1' ;                                                
 197 :       INIT = 1;                                                         
 198 :    'FINSI';                                                             
 199 : 'SINON';                                                                
 200 :    INIT = 1;                                                            
 201 :    U1 = ETAB.'TET1' ;                                                   
 202 : 'FINSI';                                                                
 203 :                                                                         
 204 : 'SI' (INIT 'EGA' 1);                                                    
 205 :    TEM0 = ETAB.'TEMPS0';                                                
 206 :    TEM1 = TEM0 + T_PAS;                                                 
 207 :    TEM2 = TEM1 + T_PAS;                                                 
 208 :    LI_TEM =  ETAB.'TEM_CALC';                                           
 209 :    ETAB.'TEM_CALC' = 'PROG' TEM1;                                         
 210 :    TIN1 = TRANSNON PRECED;                                              
 211 :    ETAB.'TEM_CALC' = LI_TEM;                                            
 212 :    ERR_VAL = TIN1.'ERREUR' ;                                            
 213 :    'SI' (IRADI) ;                                                       
 214 :       RAYO_VAL = TIN1.'RAYONNEMENT' ;                                   
 215 :       ETAB.'RAYONNEMENT'=TIN1.'RAYONNEMENT';                            
 216 :    'FINSI' ;                                                            
 217 : *                                                                       
 218 :    'SI' ('EGA' DCALC 1);                                                
 219 :       STAB = TIN1 ;                                                     
 220 :       STAB.'RELAXATION_DUPONT' = LAMBDA ;                               
 221 :       'QUITTER' PROC;                                                   
 222 :    'FINSI';                                                             
 223 :                                                                         
 224 : ****************************************************************        
 225 : *             calculer U2 a partir de U1                       *        
 226 : ****************************************************************        
 227 : *  je suis passe dans TRANSNON                                          
 228 :    U2 = TIN1.'INITIAL(2)' ;                                             
 229 :    U0 = U1;                                                             
 230 :    U1 = U2;                                                             
 231 : 'FINSI' ;                                                               
 232 :                                                                         
 233 : 'SI' ICELS ;                                                            
 234 :   U0 = U0 + TREF ;  U1 = U1 + TREF ;                                    
 235 : 'FINSI' ;                                                               
 236 :                                                                         
 237 : ********************************************************************    
 238 : *                  Boucle sur les pas de temps                     *    
 239 : ********************************************************************    
 240 :                                                                         
 241 : 'REPETER' BOUC_SO ;                                                     
 242 :    ITE3 = &BOUC_SO;                                                     
 243 :                                                                         
 244 : *-------------------- Condition de fin de boucle ------------------     
 245 :                                                                         
 246 :    TEMM = (LAMBDA2 * TEM2)  + ((1 - LAMBDA2) * TEM1);                   
 247 :    UC_T = 'COLI' U1 ((TEMM - TEM0)/(TEM1 - TEM0))                       
 248 :                  U0 ((TEM1 - TEMM)/(TEM1 - TEM0)) ;                     
 249 :    TH_COUR = UC_T ;  'SI' ICELS ; TH_COUR = TH_COUR - TREF ; 'FINSI' ;  
 250 :    ETAB.'THER_COURANT' = TH_COUR ;                                      
 251 :                                                                         
 252 :    'MESS' ' ';                                                          
 253 :    'MESS' '---- Calcul du champ de température au temps :'TEM2;         
 254 :    'MESS' ' ';                                                          
 255 :                                                                         
 256 : *****************************************************************       
 257 : *               Gestion des variables externes                  *       
 258 : *****************************************************************       
 259 :                                                                         
 260 :    'SI' NONLIN1;                                                        
 261 :                                                                         
 262 : *-------------- Cas de la temperature et du temps ---------------       
 263 :                                                                         
 264 :                                                                         
 265 :       CHVAR = 'CHAN' 'CHAM' TH_COUR ETAB.'MOD_TOT' 'RIGIDITE'    ;      
 266 :       CHVAR2 = 'MANU' 'CHML' ETAB.'MOD_TOT' 'TEMP' TEMM 'RIGIDITE' ;    
 267 :       CHVAR = CHVAR 'ET' CHVAR2 ;                                       
 268 :                                                                         
 269 : *-------------- Cas des variables mecaniques --------------------       
 270 : *---- si il y a couplage on les "rentre" toutes dans CHVAR ------       
 271 :                                                                         
 272 :       'SI' (ETAB.'COUPLAGE');                                           
 273 :          CHVAR = CHVAR 'ET' CHAR_ME;                                      
 274 :       'FINSI';                                                          
 275 :                                                                         
 276 : *-------------- Mise a jour des variables externes --------------       
 277 :                                                                         
 278 :       'SI' (ETAB.'PROCEDURE_PARA_THER') ;                               
 279 :          PARATHER PRECED TEMM ;                                         
 280 :       'FINSI' ;                                                         
 281 :                                                                         
 282 : *-------------- Cas des autres variables --------------------           
 283 :                                                                         
 284 :       'REPETER' BOU_NU2 ILVA;                                           
 285 :          MOTI = 'EXTR' LVAREX &BOU_NU2 ;                                
 286 :          'SI' (('EGA' MOTI 'TEMP    ') OU ('EGA' MOTI 'T       '));     
 287 :             'ITERER' BOU_NU2;                                           
 288 :          'FINSI';                                                       
 289 :          'SI' (ETAB.'COUPLAGE');                                        
 290 :             'SI' ('EXISTE' CHAR_ME MOTI );                              
 291 :                'SI' ('NEG' LAMBDA2 0.);                                 
 292 :  'MESS' '*** Le materiau thermique depend de parametres mecaniques';    
 293 :  'ERRE' '*** Il faut initialiser SOUS-RELAXATION à 0.';                 
 294 :                'FINSI';                                                 
 295 :                'ITERER' BOU_NU2;                                        
 296 :             'FINSI';                                                    
 297 :          'FINSI';                                                       
 298 :          'SI' ('EXISTE' (ETAB.'CHARGEMENT') MOTI);                      
 299 :             CH_1 = 'TIRE' (ETAB.'CHARGEMENT') MOTI TEMM;                
 300 :             TYP_1 = 'TYPE' CH_1;                                        
 301 :                                                                         
 302 : * on suppose que les chargements qui ne sont pas d'origine mecanique    
 303 : * sont appuyes sur le maillage thermique .                              
 304 :                                                                         
 305 :             'SI' ('EGA' TYP_1 'CHPOINT ');                              
 306 :                CHVAR2 = 'CHAN' 'CHAM' CH_1 ETAB.'MOD_TOT' 'RIGIDITE';   
 307 :             'SINON';                                                    
 308 :                CHVAR2 = 'CHAN' 'RIGIDITE' CH_1 ETAB.'MOD_TOT';          
 309 :             'FINSI';                                                    
 310 :             CHVAR = CHVAR + CHVAR2;                                     
 311 :          'SINON';                                                       
 312 :             'MESS' '*** Il manque une donnee du chargement ***';        
 313 :             'MESS' '*** Variable concernee : 'MOTI;                     
 314 :             'ERREUR' ' ';                                               
 315 :          'FINSI';                                                       
 316 :       'FIN' BOU_NU2;                                                    
 317 :    'FINSI';                                                             
 318 :                                                                         
 319 : *---------- Si convection ou rayonnement, on cherche TE ------------    
 320 : *   'SI'  ('EXISTE' ( ETAB.'CHARGEMENT' ) 'TERA') ;                     
 321 : *      CH_TER = 'TIRE' (ETAB.'CHARGEMENT') 'TERA' TEMM ;                
 322 : *      'SI' ICELS ;  CH_TER = CH_TER + TREF ;  'FINSI' ;                
 323 : *   'FINSI';                                                            
 324 :    'SI'  ('EXISTE' ( ETAB.'CHARGEMENT' ) 'TECO') ;                      
 325 :        CH_TEC = 'TIRE' (ETAB.'CHARGEMENT') 'TECO' TEMM ;                
 326 :        'SI' ICELS ;  CH_TEC = CH_TEC + TREF ;  'FINSI' ;                
 327 :    'FINSI';                                                             
 328 :                                                                         
 329 : *--------------------- On cherche les flux -----------------------      
 330 :                                                                         
 331 :    'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q   ');                          
 332 :       CH_FL = 'TIRE' (ETAB.'CHARGEMENT') 'Q   ' TEMM;                   
 333 :    'FINSI';                                                             
 334 :                                                                         
 335 : *----------------- Calcul du champ de matériau ---------------------    
 336 :                                                                         
 337 :    'SI' NONLIN1;                                                        
 338 :       CHVAR1 = 'REDU' CHVAR (ETAB.'MOD_TOT');                           
 339 :       CHMAT = 'VARI' 'NUAG' (ETAB.'MOD_TOT') (ETAB.'MAT_TOT')           
 340 :                             CHVAR1 'RIGIDITE';                          
 341 :    'SINON';                                                             
 342 :       CHMAT = ETAB.'MAT_TOT';                                           
 343 :    'FINSI'; 
 344 :    ETAB.'CHMAT'=CHMAT;                                                          
 345 :                                                                         
 346 : *------------- Calcul de la matrice de conductivité ----------------    
 347 :                                                                         
 348 :    CHMAT1   = 'REDU' CHMAT ETAB.'MOD_THE';                              
 349 :    MAT_COND = 'COND' ETAB.'MOD_THE' CHMAT1;                             
 350 :                                                                         
 351 : *----------------- y-a-t-il des blocages ---------------------------    
 352 :                                                                         
 353 :    'SI' ('EGA'  ETAB.'BLOCAGES_THERMIQUES'   'INCONNU' ) ;              
 354 :       MAT_BLOC = 'EXTR' MAT_COND 'RIGI' 'MULT';                         
 355 :    'SINON';                                                             
 356 :       MAT_BLOC = ETAB.'BLOCAGES_THERMIQUES';                            
 357 :   'FINSI';                                                              
 358 :   'SI' ('NON' ('EXISTE' (ETAB.'CHARGEMENT') 'TIMP'));                   
 359 :       CH_TI = 'DEPI' MAT_BLOC 0.;                                       
 360 :   'SINON';                                                              
 361 :       CH_TI = 'TIRE' (ETAB.'CHARGEMENT') 'TIMP' TEM2 ;                  
 362 :       'SI' ICELS ;  CH_TI = CH_TI + TREF ;  'FINSI' ;                   
 363 :   'FINSI';                                                              
 364 :                                                                         
 365 : *----------------- Calcul de la matrice de capacite -----------------   
 366 :                                                                         
 367 :    'SI' ICAPA ;                                                         
 368 :         MAT_CAPA = 'CAPA' ETAB.'MOD_THE' CHMAT1;                        
 369 :    'FINSI' ;                                                            
 370 :                                                                         
 371 : ******************************************************************      
 372 : *            On génère les termes de rayonnement                 *      
 373 : ******************************************************************      
 374 :                                                                         
 375 :    'SI' (ETAB.'PROCEDURE_CHAR_THER'); 
 376 :       IAPPEL=1;                                  
 377 :       taat=CHARTHER PRECED temm  IAPPEL;                                        
 378 :       'SI'( 'EXIS' TAAT 'ADDI_SECOND');                                 
 379 :       Ch_TI=CH_TI 'ET' TAAT.'ADDI_SECOND';                              
 380 :       'FINSI';                                                          
 381 :       'SI' ('EXIS' TAAT 'ADDI_MATRICE');                                
 382 :       MAT_COND=MAT_COND 'ET' TAAT.'ADDI_MATRICE';                       
 383 :       'FINSI';                                                          
 384 :    'FINSI';                                                             
 385 :                                                                         
 386 : *******************************************************************     
 387 : *              On genere les termes de convection                 *     
 388 : *******************************************************************     
 389 :                                                                         
 390 :    'SI' ETAB.'CONVECTION';                                              
 391 :       CHMAT2   = 'REDU' CHMAT ETAB.'MOD_CON';                           
 392 : *      RIG_CON = 'COND' ETAB.'MOD_CON' CHMAT2       ;                    
 393 :       'SI' ( 'EXISTE' (ETAB.'CHARGEMENT') 'TECO' ) ;                    
 394 :       CHAL_TE = 'CONV' ETAB.'MOD_CON' CHMAT2 CH_TEC ;                   
 395 :       CH_TI  =CH_TI + CHAL_TE;                                          
 396 :       'FINSI' ;                                                         
 397 : *      MAT_COND = MAT_COND 'ET' RIG_CON;                                 
 398 :    'FINSI';                                                             
 399 :                                                                         
 400 : *---------------- Calcul de la matrice regularisee -----------------    
 401 :                                                                         
 402 :     SCA1 = 0.5 + LAMBDA          ;                                      
 403 :     SCA2 = ( 2. * LAMBDA ) - 0.5 ;                                      
 404 :     SCA3 = -1. * LAMBDA          ;                                      
 405 :     MAT_RIGI = MAT_COND * SCA1 ;                                        
 406 :     B1       = MAT_COND * SCA2 ;                                        
 407 :     B2       = MAT_COND * SCA3 ;                                        
 408 :     MAT_CHPO = B2 * U0 ;                                                
 409 :     'SI' ICAPA ;                                                        
 410 :        A1 = MAT_CAPA / T_PAS  ;                                         
 411 :        MAT_RIGI = A1 'ET' MAT_RIGI ;                                    
 412 :        B1 = A1 'ET' B1 ;                                                
 413 :     'FINSI' ;                                                           
 414 :     MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ;                                 
 415 :     MAT_CHPO = MAT_CHPO + (B1 * U1) ;                                   
 416 :    'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q   ');                          
 417 :        MAT_CHPO = MAT_CHPO + CH_FL ;                                    
 418 :     'FINSI' ;                                                           
 419 :     MAT_CHPO = MAT_CHPO + CH_TI ;                                       
 420 :                                                                         
 421 : *--------------------- Calcul d'un pas ----------------------------     
 422 :                                                                         
 423 :    U2 = 'RESOUDRE' MAT_RIGI MAT_CHPO ;                                  
 424 :    'DETR' MAT_RIGI;                                                     
 425 :                                                                         
 426 :    TH_COUR = U2 ;  'SI' ICELS ; TH_COUR = TH_COUR - TREF ; 'FINSI' ;    
 427 :    ETAB.'THER_COURANT' = TH_COUR ;                                      
 428 :                                                                         
 429 : *---------------- Appel a une procedure utilisateur -----------------   
 430 :                                                                         
 431 :      'SI' (ETAB.'PROCEDURE_PERSO2');                                    
 432 :         tab_z = 'INDEX' (PRECED.'TEMPERATURES') ;                       
 433 :         IND0 = tab_z. ('DIMENSION' tab_z) ;                             
 434 :         ETAB.'TEMI' =  PRECED.'TEMPERATURES' . IND0 ;                   
 435 :         PERSO2 PRECED ;                                                 
 436 :         ETAB = 'ENLEVER' ETAB 'TEMI' ;                                  
 437 :         'SI' ('EXIS' PRECED 'ARRET') ;                                  
 438 :           ETAB . 'ARRET' = PRECED . 'ARRET' ;                           
 439 :         'FINS' ;                                                        
 440 :      'FINSI';                                                           
 441 :                                                                         
 442 : *******************************************************************     
 443 : *      Reinitialisation des variables en vue du pas suivant       *     
 444 : *******************************************************************     
 445 :                                                                         
 446 :    'SI' ((ITE3 + 1 + INIT) '<EG' DCALC);                                
 447 :       TEM0 = TEM1;                                                      
 448 :       TEM1 = TEM2;                                                      
 449 :       TEM2 = 'EXTR' TE_CALC (ITE3 + 1 + INIT);                          
 450 :       T_PAS = TEM2 - TEM1;                                              
 451 :       U0 = U1;                                                          
 452 :       U1 = U2;                                                          
 453 :    'SINON';                                                             
 454 :       'QUITTER' BOUC_SO;                                                
 455 :    'FINSI';                                                             
 456 :                                                                         
 457 : *------------------------ On fait le menage -----------------------     
 458 :                                                                         
 459 :    'MENAGE' ;                                                           
 460 :                                                                         
 461 : 'FIN' BOUC_SO ;                                                         
 462 :                                                                         
 463 : 'SI' (A_SUPPR) ;                                                        
 464 :    ETAB = 'ENLE' ETAB 'RELAXATION_DUPONT' ;                             
 465 : 'FINSI' ;                                                               
 466 :                                                                         
 467 : STAB = 'TABLE' ;                                                        
 468 : STAB.'ERREUR' = ERR_VAL ;                                               
 469 : STAB.'RELAXATION_DUPONT' = LAMBDA ;                                     
 470 : 'SI' (ETAB.'RAYO') ;                                                    
 471 :    STAB.'RAYONNEMENT' = ETAB.'RAYONNEMENT' ;                            
 472 : 'FINSI' ;                                                               
 473 : STAB.'INITIAL(2)' = TH_COUR ;                                           
 474 :                                                                         
 475 : 'FIN' PROC ;                                                            
 476 :                                                                         
 477 : 'FINPROC' STAB ;                                                        
 478 : 
 479 :  
 480 :  
 481 :  
 482 :  
 483 :  

© Cast3M 2003 - All rights reserved.
Disclaimer