Download transnon.procedur

Back to the list

   1 : * TRANSNON  PROCEDUR  PASCAL    14/01/23    21:15:03     7913           
   2 : 'DEBPROC' TRANSNON  PRECED*'TABLE';                                     
   3 : *----------------------------------------------------------------------*
   4 : *                                                                      *
   5 : *                             T R A N S N O N                          *
   6 : *                             ---------------                          *
   7 : *                                                                      *
   8 : *     RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE NON-LINEAIRE   *
   9 : *     METHODE A UN PAS DE TEMPS ( THETA SCHEMA )                       *
  10 : *                                                                      *
  11 : *     ETAB, TABLE CONTENANT EN ENTREE :                                *
  12 : *                                                                      *
  13 : *     INDICE 'TET1'   CHAMP DE TEMPERATURE INITIAL AU PAS 0            *
  14 : *     INDICE 'RAYO'         LOGIQUE VALANT VRAI POUR UNE CONDITION     *
  15 : *                           DE RAYONNEMENT                             *
  16 : *     INDICE 'EMISSIVITE'   MCHAML DECRIVANT  LES FACTEURS D'EMISSIVITE*
  17 : *                           NOM DE LA COMPOSANTE : EMIS                *
  18 : *     INDICE 'CELSIUS'      LOGIQUE VALANT VRAI SI L'UNITE EST LE      *
  19 : *                           DEGRE CELSIUS (CAPITAL SI RAYONNEMENT)     *
  20 : *     INDICE 'MOD_THE'      OBJET MODELE THERMIQUE                     *
  21 : *     INDICE 'MOD_CON'      OBJET MODELE CONVECTION                    *
  22 : *     INDICE 'BLOCAGES_THERMIQUES'      MATRICE DE BLOCAGE             *
  23 : *     INDICE 'MAT_THE'      OBJET MATERIAU THERMIQUE.                  *
  24 : *                           CE CHAMP PEUT AVOIR DES COMPOSANTES DE     *
  25 : *                           TYPE FLOTTANT OU EVOLUTION (ABS-ORD).      *
  26 : *                           ABS : VARIABLE QUELCONQUE                  *
  27 : *                           ORD : VALEUR DE LA COMPOSANTE CONCERNE POUR*
  28 : *                           LA VALEUR ABS.                             *
  29 : *     INDICE 'MAT_CON'      OBJET MATERIAU CONVECTION                  * 
  30 : *     INDICE 'CHARGEMENT'   CHARGEMENT DECRIVANT LES                   *
  31 : *                           VALEURS DES VARIABLES EXTERNES (EX: TE,    *
  32 : *                           FLUX,TEMPERATURES IMPOSEES ,...)           *
  33 : *     INDICE 'PHASE'        LOGIQUE VALANT VRAI SI CHGT DE PHASE       *
  34 : *     INDICE 'TEMPS0'       TEMPS INITIAL (CORRESPOND A TET1)          *
  35 : *     INDICE 'TEM_CALC'     LISTREEL : TEMPS DES RESULTATS A CALCULER  *
  36 : *     INDICE 'RELAXATION_THETA'  VALEUR DU COEFFICIENT DE RELAXATION   *
  37 : *                           (VALEUR PAR DEFAUT 0.5)                    *
  38 : *     INDICE 'SOUS_RELAXATION'   VALEUR DU COEFF. DE SOUS-RELAXATION   *
  39 : *                           (VALEUR PAR DEFAUT 0.5)                    *
  40 : *     INDICE 'PRECISION'    VALEUR DU CRITERE DE CONVERGENCE           *
  41 : *                           (VALEUR PAR DEFAUT 1.E-4)                  *
  42 : *     INDICE 'MAXITERATION' NOMBRE MAXIMUM D'ITERATIONS AUTORISEES     *
  43 : *     INDICE PROJECTION     LOGIQUE VALANT VRAI SI COUPLAGE ET SI LE   *
  44 : *                           MAILLAGE DE LA MECANIQUE ET DE LA THERMIQUE*
  45 : *                           EST DIFFERENT                              *
  46 : *                                                                      *
  47 : *     ETAB CONTIENT EN SORTIE                                          *
  48 : *                                                                      *
  49 : *     INDICE INITIAL(2)     DERNIER CHAMP DE TEMPERATURE CALCULE       *
  50 : *                                                                      *
  51 : *     REMARQUE :  CERTAINES VARIABLES ONT DES NOMS IMPOSES.            *
  52 : *                 LE TEMPS                      : TEMPS                *
  53 : *                 LA TEMPERATURE                : T                    *
  54 : *                 LA TEMPERATURE EXTERIEURE     : TE                   *
  55 : *                 LES TEMPERATURES IMPOSEES     : TIMP                 *
  56 : *                 LES FLUX                      : Q                    *
  57 : *                                                                      *
  58 : *                 LE NOM DES AUTRES VARIABLES EST LAISSE AU CHOIX DE   *
  59 : *                 L'UTILISATEUR                                        *
  60 : *                                                                      *
  61 : ********************************************************************
  62 : *        Recuperation de l'information contenue dans ETAB          *
  63 : ******************************************************************** 
  64 : ERR_VAL = FAUX;STAB = TABLE ;  
  65 : ETAB=PRECED.'WTABLE';                                                   
  66 : *                                                                     *
  67 : LINCO1   = WTAB . 'INCO_TOT' ;
  68 : LDUAL1   = WTAB . 'DUAL_TOT' ;
  69 : LINCO2   = ('MOTS' 'TEMP') 'ET' LINCO1 ;
  70 : NBDUA1   = 'DIME' LDUAL1 ;
  71 : *                                          
  72 : *
  73 : MAIL_TOT = 'EXTR' ETAB.'MOD_TOT' 'MAIL';                                
  74 :                                                                         
  75 : IRIB = FAUX ;                                                           
  76 : 'SI' ('NEG' ETAB.'RIBLO_T' 'INCONNU');                                  
  77 :    IRIB      = VRAI ;                                                   
  78 :    RIBL_VAL = ETAB.'RIBLO_T' ;                                          
  79 :    LISE_VAL = ETAB.'LISEA_T' ;                                          
  80 : 'FINSI' ;                                                               
  81 : 
  82 : * Parallelisation automatique des calculs ?
  83 : IPARAL = 'EGA' ETAB.'PROCESSEURS' 'AUTOMATIQUE' ;
  84 : 
  85 : * -------------   pour le changement de phase -----------               
  86 : IPHASE=ETAB.'PHASE';                                                    
  87 : 'SI' IPHASE;                                                            
  88 :    BLOPHA=ETAB.'BLO_PHASE';                                             
  89 :    PRO_VAL=ETAB.'PROPPHAS' ;  
  90 :    MATPHA= ETAB.'MAT_PHA' ;MODPHA= ETAB.MOD_PHA;                  
  91 : 'FINSI';                                                                
  92 : * --------------  presence de l'advection conduction convection
  93 : IADVEC=ETAB.'ADVECTION'; 
  94 : 'SI' IADVEC; MATADV= ETAB.'MAT_ADV';MODADV=ETAB.'MOD_ADV'; 'FINSI'; 
  95 : ICONDU= ETAB.'CONDUCTION';
  96 : 'SI' ICONDU; MATCOND=ETAB.'MAT_COND';MODCOND=ETAB.'MOD_COND';'FINSI';
  97 : ICONVE= ETAB.'CONVECTION' ;  
  98 : 'SI' ICONVE;  MATCON=ETAB.'MAT_CON'; MODCON=ETAB.'MOD_CON'; 'FINSI'; 
  99 : IRADI = ETAB.'RAYO';
 100 : 'SI' IRADI ; MATRAY=ETAB.'MAT_RAY'; MODRTHM=ETAB.'MOD_RAY'; 'FINSI';
 101 : ITHM1=WTAB.'THM1';
 102 : 'SI'  ITHM1;MATTHM1=ETAB.'MAT_THM'; MODTHM= ETAB.'MOD_THM';'FINSI';
 103 : *--------------- Traitement special pour le rayonnement -----------  
 104 :                                               
 105 :    'SI'('EXISTE' ETAB 'CTE_STEFAN_BOLTZMANN') ;                         
 106 :       CTE_SB = ETAB.'CTE_STEFAN_BOLTZMANN' ;                            
 107 :    'SINON' ;                                                         
 108 :       CTE_SB = 5.673E-8 ; ETAB.'CTE_STEFAN_BOLTZMANN' =CTE_SB;          
 109 :       'MESS' 'ATTENTION ! Constante de Stefan-Boltzmann en unités SI' ; 
 110 :       'MESS' '            soit ' CTE_SB ;                               
 111 :    'FINSI' ;                                                            
 112 :                                                                         
 113 : *------- Initialisation de la liste des temps à calculer ---------      
 114 :                                                                         
 115 : TE_CALC = ETAB.'TEM_CALC' ;                                             
 116 : DCALC = 'DIME' TE_CALC;                                                 
 117 :                                                                         
 118 : *-------------- Calcul du premier pas de calcul -------------------     
 119 :                                                                         
 120 : TEM0 = ETAB.'TEMPS0' ;                                                  
 121 : TEM1 = 'EXTR' TE_CALC 1;                                                
 122 : T_PAS = TEM1 - TEM0;                                                    
 123 : *-------------- modif pour récuperer le temps du dernier pas de calcul  
 124 : TEM_VAL =  TEM1 ;                                                       
 125 : *-------------- fin de modif -----------------------------------------  
 126 : *---- Initialisation de la valeur du critère de fin d'itération ---     
 127 : 
 128 : ZPREC1   = ETAB . 'PRECISION' ;
 129 : 
 130 : *--------- Initialisation du nombre d'iterations autorisees -------     
 131 :                                                                         
 132 : 'SI' ('EXISTE' ETAB 'MAXITERATION');                                    
 133 :    MAX1 = ETAB.'MAXITERATION';                                          
 134 : 'SINON';                                                                
 135 :    MAX1 = 150;                                                          
 136 : 'FINSI';                                                                
 137 :                                                                         
 138 : *-------- Recherche des variables selon lesquelles varie ----------     
 139 : *---------------------- le champ de matériau ----------------------     
 140 :                                                                         
 141 : LVAREX = 'EXTR' ETAB.'MAT_TOT' 'DEVA';                                  
 142 : ILVA = 'DIME' LVAREX;                                                   
 143 : 'SI' ('NEG' ILVA 0);                                                    
 144 :    NONLIN1 = VRAI;                                                      
 145 :    'SI' (ETAB.'COUPLAGE');                                              
 146 :        CONTI=PRECED.'CONTINUATION';                                     
 147 : *--- Creation du MCHAML contenant tous les parametres mecaniques --     
 148 : *-------- Ces parametres sont determines au temps TEM0 ------------     
 149 : *----- Ces parametres sont projetes sur le maillage thermique -----     
 150 :       DEP1 = 'CHAN' 'CHAM' CONTI.'DEPLACEMENTS'                         
 151 :                            ETAB.'MO_TOT'  'NOEUD';                   
 152 :       CON1 = 'CHAN' 'NOEUD' CONTI.'CONTRAINTES'                         
 153 :                             ETAB.'MO_TOT' ;                          
 154 :       CHAR1_ME = DEP1 'ET' CON1;                                        
 155 : *      'SI' ('EXISTE' CONTI 'VITESSES');                                
 156 : *        VIT1 = 'CHAN' 'CHAM' CONTI.'VITESSES'                          
 157 : *                             ETAB.'MO_TOT'  'NOEUD';                 
 158 : *        CHAR1_ME = CHAR1_ME 'ET' VIT1;                                 
 159 : *      'FINSI';                                                         
 160 :       'SI' ('EXISTE' CONTI 'VARIABLES_INTERNES');                       
 161 :          VAR1 = 'CHAN'  'NOEUD'   CONTI.'VARIABLES_INTERNES'            
 162 :                                  ETAB.'MO_TOT' ;                     
 163 : *         DEF1 ='CHAN' 'NOEUD' (ETAB.'DEI_EST')                         
 164 : *                      ETAB.'MO_TOT' ;
 165 :           CHAR1_ME = CHAR1_ME 'ET' VAR1   ;  
 166 : *         CHAR1_ME = CHAR1_ME 'ET' VAR1 'ET' DEF1;                      
 167 :       'FINSI';                                                          
 168 :      'SI' ETAB.'PROJECTION';                                            
 169 :          CHAR_ME =  'CHAN' 'CHAM' ('PROI' MAIL_TOT CHAR1_ME)            
 170 :                 (ETAB.'MOD_TOT')  'RIGIDITE';                           
 171 :      'SINON';                                                           
 172 :          CHAR_ME =  'CHAN' 'CHAM' ('CHAN' 'CHPO' CHAR1_ME               
 173 :                 ETAB.'MO_TOT')  ETAB.'MO_TOT'  'RIGIDITE';        
 174 :      'FINSI';                                                         
 175 :    'FINSI';                                                               
 176 : 'SINON';                                                                
 177 :    NONLIN1 = FAUX;                                                      
 178 : 'FINSI';                                                                
 179 :                                                                         
 180 : *-----------recherche des composantes de materiau qui varient et initia 
 181 : * --------- des logiques de recalcul des matrices.-------------------   
 182 :                                                                         
 183 : IKDEP=FAUX;ICDEP=FAUX; IECDEP=FAUX;IKVITE=FAUX;
 184 : IKDDEP=FAUX;ICDDEP=FAUX;
 185 : LCOREX= 'EXTR' ETAB.'MAT_TOT' 'COVA';                                   
 186 : ILCOVA= 'DIME' LCOREX;                                                  
 187 : 'SI' ('NEG' ILCOVA 0);
 188 :   'REPETER' BOUVAR ILCOVA;
 189 :     ILO='EXTR' LCOREX &BOUVAR;
 190 :     'SI'('EGA' ILO 'VITE') ; IKVITE=VRAI; 'FINSI';
 191 :     'SI'('EGA' ILO 'K   ') ; IKDEP=VRAI ; 'FINSI' ;
 192 :     'SI'('EGA' ILO 'C   ') ; ICDEP=VRAI ; 'FINSI' ;
 193 :     'SI'('EGA' ILO 'H   ') ; IECDEP=VRAI ; 'FINSI' ;
 194 :     'SI'('EGA' ILO 'RHO ') ; ICDEP=VRAI ; 'FINSI';
 195 :     'SI'('EGA' ILO 'KD  ') ; IKDDEP=VRAI ; 'FINSI' ;
 196 :     'SI'('EGA' ILO 'CDIF') ; ICDDEP=VRAI ; 'FINSI' ;
 197 :   'FIN' BOUVAR;
 198 : 'FINS';
 199 : 'SI' ETAB.'THM1' ;
 200 :   IKDEP=VRAI;
 201 :   ICDEP=VRAI;
 202 : 'FINS' ;
 203 :                                                                         
 204 : *------- Cas particulier ou il n'y a pas de CAPACITE ------------------*
 205 : *- Ceci correspond au cas ou, au moins, une des 2 composantes 'C   '  -*
 206 : *- et/ou 'RHO ' n'est pas definie dans le materiau (facultatives).    -*
 207 :                                                                         
 208 : LCOMPM = 'EXTRAIRE' ETAB.'MAT_TOT' 'COMP' ;                             
 209 : ICAPATH = ('EXISTE' LCOMPM 'C   ') 'ET' ('EXISTE' LCOMPM 'RHO ') 'ET'
 210 :           ETAB.'FOR_THER' ;
 211 : ICAPADI = ('EXISTE' LCOMPM 'CDIF') 'ET' ETAB . 'FOR_DIFF' ;
 212 : ICAPA = ICAPATH 'OU' ICAPADI ;
 213 : 'SI' ('NON' ICAPATH) ;  ICDEP = FAUX ;   'FINSI' ;                      
 214 : 'SI' ('NON' ICAPADI) ;  ICDDEP = FAUX ;  'FINSI' ;                      
 215 :                                                                         
 216 : *---------- Initialisation de l'unité de température --------------     
 217 :                                                                         
 218 : 'SI' ('EXISTE' ETAB 'CELSIUS');                                         
 219 :    ICELS = ETAB.'CELSIUS' 'ET' ETAB.'FOR_THER' ;
 220 : 'SINON';                                                                
 221 :    ICELS = FAUX;                                                        
 222 : 'FINSI';                                                                
 223 :                                                                         
 224 : *---------- Initialisation de la temperature de reference----------     
 225 :                                                                         
 226 : 'SI' ICELS;                                                             
 227 :    TREF = 273.15 ;                                                      
 228 : 'SINON';                                                                
 229 :    TREF = 0. ;                                                          
 230 : 'FINSI';                                                                
 231 : ETAB.'TREF'=TREF;                                                       
 232 :                                                                         
 233 : *----------- Initialisation du champ de temperatures ------------       
 234 :                  
 235 : 'SI' ETAB.'FOR_THER' ;
 236 :   U0 = 'REDU' ('COPIER' ETAB.'TET1' 'GEOM') MAIL_TOT ;                    
 237 :   'SI' ICELS ;
 238 :     CHTREF = (0. * U0) + TREF ;
 239 :     U0 = U0 + CHTREF ;
 240 :   'FINSI' ;
 241 :   ETAB.'THER_COURANT' = ETAB.'TET1' ;
 242 :   'SI' ETAB . 'FOR_DIFF' ;
 243 :     U0       = U0 'ET' ETAB.'CO1' ;
 244 :     ETAB.'THER_COURANT' = ETAB.'THER_COURANT' 'ET' ETAB.'CO1' ;
 245 :   'FINS' ;
 246 : 'SINO' ;
 247 :   U0       = 'REDU' ('COPI' ETAB.'CO1' 'GEOM') MAIL_TOT ;
 248 :   ETAB.'THER_COURANT' = ETAB.'CO1' ;
 249 : 'FINS' ;
 250 : 
 251 : *---------- y-a-t-il definition des coefficients lambda ----------      
 252 :                                                                         
 253 : 'SI' ( 'EXISTE' ETAB 'RELAXATION_THETA' ) ;                             
 254 :   LAMBDA1   = ETAB.'RELAXATION_THETA'    ;                             
 255 : 'SINON' ;                                                               
 256 :    LAMBDA1=1.;
 257 :   ETAB.'RELAXATION_THETA' =LAMBDA1;
 258 : 'FINSI' ;                                                               
 259 : * En regime stationnaire (sans CAPACITE), on force LAMBDA1 a 1.
 260 : * Sinon on ne resout pas le bon probleme !
 261 : 'SI' ('NON' ICAPA) ;  LAMBDA1 = 1. ;  'FINSI' ;                         
 262 : 'SI' IADVEC;  LAMBDA1 = 1. ;  'FINSI' ;     
 263 : I_LAMBD1 = 0 ;
 264 : 'SI' ('<EG' ('ABS' (LAMBDA1 - 0.0)) 1.E-6) ; I_LAMBD1 = 1 ; 'FINSI' ;
 265 : 'SI' ('<EG' ('ABS' (LAMBDA1 - 0.5)) 1.E-6) ; I_LAMBD1 = 2 ; 'FINSI' ;
 266 : 'SI' ('<EG' ('ABS' (LAMBDA1 - 1.0)) 1.E-6) ; I_LAMBD1 = 3 ; 'FINSI' ;
 267 :                                                                         
 268 : *---- Si géométrie modifiée ou s'il n'existent pas,  --------------     
 269 : *------- on recalcule les facteurs de forme -----------------------     
 270 : 'SI'(ETAB.'PROCEDURE_CHAR_THER') ; 
 271 :   ETAB.'CHMAT'=ETAB.'MAT_TOT'; 
 272 :   IAPPEL=2;
 273 :   TAAT= CHARTHER PRECED tem1  IAPPEL;                                   
 274 : 'FINSI' ;                                                               
 275 :                                                                         
 276 : ********************************************************************    
 277 : *                 Rappel des donnees du probleme                   *    
 278 : ********************************************************************    
 279 :                                                                         
 280 : 'SI' ETAB.'MESSTHER' ;                                             
 281 :   ETAB.'MESSTHER' = FAUX ;
 282 : 'SI' ETAB.'THM1' ;
 283 :   'SI' ETAB.'FOR_DIFF' ;
 284 :     'MESS'
 285 : ' Calcul TRANSITOIRE NON-LINEAIRE de THERMOHYDRIQUE & DIFFUSION' ;
 286 :   'SINO' ;
 287 :     'MESS' ' Calcul TRANSITOIRE NON-LINEAIRE de THERMOHYDRIQUE' ;
 288 :   'FINS' ;
 289 : 'SINO' ;
 290 :   'SI' ETAB.'THE1' ;
 291 :     'SI' ETAB.'FOR_DIFF' ;
 292 :       'MESS'
 293 :         ' Calcul TRANSITOIRE NON-LINEAIRE de THERMIQUE & DIFFUSION' ;
 294 :     'SINO' ;
 295 :       'MESS' ' Calcul TRANSITOIRE NON-LINEAIRE de THERMIQUE' ;
 296 :     'FINS' ;
 297 :   'SINO' ;
 298 :     'SI' ETAB.'FOR_DIFF' ;
 299 :       'MESS' ' Calcul TRANSITOIRE NON-LINEAIRE de DIFFUSION' ;
 300 :     'FINS' ;
 301 :   'FINS' ;
 302 : 'FINS' ;
 303 : 'MESS' ' ' ;
 304 : 'SI' ('NON' ICAPA) ;                                                    
 305 :   'MESS'
 306 :        ' *** Probleme STATIONNAIRE' ;
 307 : 'FINSI' ;                                                               
 308 : 'SI' ('EGA' (ETAB.'PROCEDURE_THERMIQUE') 'NONLINEAIRE');                
 309 : 'MESS' ' *** Methodeaà un pas de temps (theta eéthode) ' ;
 310 : 'SINON';                                                                
 311 : 'MESS' ' *** Methode à deux pas de temps (DUPONT2) ' ;
 312 : 'MESS' '   > Calcul du premier pas par la theta-methode ' ;
 313 : 'FINSI';                                                                
 314 : 'MESS' ' *** Données utilisees du probleme :';
 315 : 'MESS' '   > Champ de temperatures a l instant : '  TEM0;                 
 316 : 'SI' NONLIN1;                                                           
 317 :   'MESS' '   > K,C ou H variables.';                                     
 318 : 'SINON';                                                                
 319 :   'MESS' '   > K,C et H constants.';                                     
 320 : 'FINSI';                                                                
 321 : 'SI'  ICELS;                                                            
 322 :   'MESS' '   > Unité de temperature utilisee : Celsius.';                
 323 : 'SINON';                                                                
 324 :   'MESS' '   > Unité de temperature utilisee : Kelvin.';                 
 325 : 'FINSI';                                                                
 326 : 'SI' ('EGA' (ETAB.'PROCEDURE_THERMIQUE') 'NONLINEAIRE');                
 327 :   'MESS' '   > Coefficient de relaxation : ' LAMBDA1;                       
 328 : 'SINON';                                                                
 329 :   'MESS'
 330 : '   > Coefficient de relaxation pour la theta-méthode : ' LAMBDA1 ;
 331 :   'MESS' '   > Coefficient de relaxation pour la méthode DUPONT2 : '
 332 :        ETAB.'RELAXATION_DUPONT' ;
 333 :   'MESS' '   > Coefficient de sous-relaxation : ' LAMBDA2;                   
 334 : 'FINSI';                                                                
 335 : 'SI' IPHASE;                                                            
 336 :   'MESS' '   > Changement de phase prevu.';                              
 337 : 'SINON';                                                                
 338 :   'MESS' '   > Pas de changement de phase prevu.';                       
 339 : 'FINSI';                                                                
 340 : 'SI' ('NEG' ETAB.'BLOCAGES_THERMIQUES' 'INCONNU');                      
 341 :   'MESS' '   > Presence de temperatures imposees.';                      
 342 : 'SINON';                                                                
 343 :   'MESS' '   > Pas de temperatures imposees.';                           
 344 : 'FINSI';                                                                
 345 : 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q   ');                             
 346 :   'MESS' '   > Présence de flux.';                                       
 347 : 'SINON';                                                                
 348 :   'MESS' '   > Pas de presence de flux.';                                
 349 : 'FINSI';  
 350 : 'SI' ICONDU;
 351 :   'MESS' '   > Presence de conduction';   
 352 : 'SINON';
 353 :   'MESS' '   > Pas de presence de conduction ';
 354 : 'FINSI';                                                           
 355 : 'SI' ICONVE;                                                 
 356 :   'MESS' '   > Presence de convection.';                                 
 357 : 'SINON';                                                                
 358 :   'MESS' '   > Pas de terme de convection.';                                 
 359 : 'FINSI';                                                                
 360 : 'SI' IRADI;                                                             
 361 :   'MESS' '   > Presence de rayonnement.';                                
 362 : 'SINON';                                                                
 363 :   'MESS' '   > Pas de presence de rayonnement.';                         
 364 : 'FINSI';    
 365 : 'SI' IADVEC;
 366 :   'MESS' '   > Presence d advection.'; 
 367 : 'SINON';                                                                
 368 :   'MESS' '   > Pas de presence d advection';
 369 : 'FINSI';                                                                   
 370 : 'MESS' ' ';                                                             
 371 : 'FINSI';                                                                
 372 :                                                                     
 373 : ********************************************************************    
 374 : *                  Boucle sur les pas de temps                     *    
 375 : ********************************************************************    
 376 : 'REPETER' BOUC_SO ;                                                     
 377 :    ITE3 = &BOUC_SO;                                                     
 378 : *  'SI' ('EGA' I_LAMBD1 0) ;
 379 :      TEMM = (LAMBDA1 * TEM1)  + ((1 - LAMBDA1) * TEM0);                 
 380 : *  'SINON' ;
 381 : *    'SI' ('EGA' I_LAMBD1 1) ;  TEMM = TEM0 ;               'FINSI' ;
 382 : *    'SI' ('EGA' I_LAMBD1 2) ;  TEMM = 0.5 * (TEM0+TEM1) ;  'FINSI' ;
 383 : *    'SI' ('EGA' I_LAMBD1 3) ;  TEMM = TEM1 ;               'FINSI' ;
 384 : *  'FINSI' ;
 385 :    U_BOU = U0 ;                                                         
 386 :    TH_COUR = U_BOU ;
 387 :    'SI' ICELS ;  TH_COUR =  U_BOU - CHTREF ;  'FINSI' ;
 388 :    ETAB.'THER_COURANT' = TH_COUR ;                                      
 389 :                                                                         
 390 :    'MESS' ' ';                                                          
 391 :    'MESS' '---- Calcul du champ de température au temps :'TEM1;         
 392 :    'MESS' ' ';                                                          
 393 : *----  initialisation du materiau                                       
 394 :   'SI' NONLIN1;                                                         
 395 :                                                                         
 396 : *-------------- Cas de la temperature et du temps ---------------       
 397 :         CHVAR = 'CHAN' 'CHAM' TH_COUR ETAB.'MOD_TOT' 'RIGIDITE' ;       
 398 :         CHVAR2 = 'MANU' 'CHML' ETAB.'MOD_TOT' 'TEMP' TEMM 'RIGIDITE' ;  
 399 :         CHVAR = CHVAR 'ET' CHVAR2 ;                                     
 400 : *-------------- Cas des variables mecaniques --------------------       
 401 : *---- si il y a couplage on les "rentre" toutes dans CHVAR ------       
 402 :         'SI' (ETAB.'COUPLAGE');                                         
 403 :            CHVAR = CHVAR 'ET' CHAR_ME;                                    
 404 :         'FINSI';                                                        
 405 : *-------------- Mise a jour des variables externes --------------       
 406 :         'SI' (ETAB.'PROCEDURE_PARA_THER') ;                             
 407 :            PARATHER PRECED TEMM ;                                       
 408 :         'FINSI' ;                                                       
 409 : *-------------- Cas des autres variables --------------------           
 410 :         'REPETER' BOU_NU2 ILVA;                                         
 411 :           ITE2 = &BOU_NU2;                                              
 412 :           MOTI = 'EXTR' LVAREX ITE2;                                    
 413 :           'SI' ('EXISTE' LINCO2 MOTI) ;
 414 :             'ITER' BOU_NU2 ;
 415 :           'FINS' ;
 416 :           'SI' (ETAB.'COUPLAGE');                                       
 417 :              'SI' ('EXISTE' CHAR_ME MOTI );                             
 418 :                 'SI' ('NEG' LAMBDA1 0.);                                
 419 :                     'MESS'                                              
 420 :            '*** Le materiau thermique depend de parametres mecaniques'; 
 421 :                   'ERRE' '*** Il faut initialiser SOUS-RELAXATION à 0.';
 422 :                 'FINSI';                                                
 423 :                 'ITERER' BOU_NU2;                                       
 424 :              'FINSI';                                                   
 425 :           'FINSI';                                                      
 426 :           'SI' ('EXISTE' (ETAB.'CHARGEMENT') MOTI);                     
 427 :              CH_1 = 'TIRE' (ETAB.'CHARGEMENT') MOTI TEMM;               
 428 :              TYP_1 = 'TYPE' CH_1;                                       
 429 :                                                                         
 430 : * on suppose que les chargements qui ne sont pas d'origine mecanique    
 431 : * sont appuyes sur le maillage thermique .                              
 432 :                                                                         
 433 :             'SI' ('EGA' TYP_1 'CHPOINT ');                              
 434 :                CHVAR2 = 'CHAN' 'CHAM' CH_1 ETAB.'MOD_TOT' 'RIGIDITE';   
 435 :             'SINON';                                                    
 436 :                CHVAR2 = 'CHAN' 'RIGIDITE' CH_1 ETAB.'MOD_TOT';          
 437 :             'FINSI';                                                    
 438 :             CHVAR = CHVAR + CHVAR2;                                     
 439 :           'SINON';                                                      
 440 :             'MESS' '*** Il manque une donnee du chargement ***';        
 441 :             'MESS' '*** Variable concernee : 'MOTI;                     
 442 :             'ERREUR' ' ';                                               
 443 :           'FINSI';                                                      
 444 :         'FIN' BOU_NU2;                                                  
 445 :   'FINSI';                                                              
 446 : *----------------- Calcul du champ de matériau a T= U_BOU---------------
 447 :   'SI' NONLIN1;
 448 :     CHVAR1 = 'REDU' CHVAR (ETAB.'MOD_TOT');
 449 :     CHMAT = 'VARI' 'NUAG' (ETAB.'MOD_TOT') (ETAB.'MAT_TOT') CHVAR1
 450 :       'RIGIDITE';
 451 :       ETAB.'CHMAT' = CHMAT;
 452 :     'SI' (ETAB . 'FOR_DIFF' 'OU' ETAB.'THE1') ;
 453 :       CHMAT1 = 'REDU' CHMAT ETAB.'MOD_THE' ;
 454 :       'SI' ETAB.'THM1' ;
 455 :         ma ff0 = @MATETHM ETAB.'MOD_THM' TH_COUR ;
 456 :         CHMAT1 = CHMAT1 'ET' ma ;
 457 :       'FINS' ;
 458 :     'SINO' ;
 459 :       'SI' ETAB.'THM1' ;
 460 :         CHMAT1 ff0 = @MATETHM ETAB.'MOD_THM' TH_COUR ;
 461 :       'FINS' ;
 462 :     'FINS' ;
 463 :   'SINON';
 464 :     CHMAT  = ETAB.'MAT_TOT';
 465 :     ETAB.'CHMAT' = CHMAT;
 466 :     'SI' (ETAB . 'FOR_DIFF' 'OU' ETAB.'THE1') ;
 467 :       CHMAT1 = 'REDU' CHMAT ETAB.'MOD_THE' ;
 468 :       'SI' ETAB.'THM1' ;
 469 :         ma ff0 = @MATETHM ETAB.'MOD_THM' TH_COUR ;
 470 :         CHMAT1 = CHMAT1 'ET' ma ;
 471 :       'FINS' ;
 472 :     'SINO' ;
 473 :       'SI' ETAB.'THM1' ;
 474 :         CHMAT1 ff0 = @MATETHM ETAB.'MOD_THM' TH_COUR ;
 475 :       'FINS' ;
 476 :     'FINS' ;
 477 :   'FINSI';
 478 :     'SI' ICONDU; MATCOND='REDU' CHMAT1  ETAB.'MOD_COND';'FINSI';
 479 :     'SI' ICONVE; MATCON='REDU' CHMAT1  ETAB.'MOD_CON'  ;'FINSI';
 480 :     'SI' IRADI ; MATRAD='REDU' CHMAT1 ETAB.'MOD_RAY'   ;'FINSI';
 481 :     'SI' IADVEC; MATADV='REDU' CHMAT1 ETAB.'MOD_ADV'   ;'FINSI';  
 482 :     'SI' ITHM1 ; MATTHM='REDU' CHMAT1 ETAB.'MOD_THM'   ;'FINSI'; 
 483 :     'SI' IPHASE; MATPHA='REDU' CHMAT1 ETAB.'MOD_PHA'   ;'FINSI'; 
 484 : *--- Partitionnement des modeles pour la parallelisation automatique ---
 485 :   'OPTION' 'PARA' IPARAL ;
 486 :   'SI' IPARAL ;
 487 :     'SI' ICONDU;  MODRCOND= 'PART' MODCOND ETAB.'NBPART' ;
 488 :                   MATRCOND= 'REDU' CHMAT1 MODRCOND;
 489 :     'FINSI';
 490 :     'SI' ICONVE;  MODRCON = 'PART' MODCON ETAB.'NBPART' ;
 491 :                   MATRCON = 'REDU' CHMAT1 MODRCON;
 492 :     'FINSI';             
 493 :     'SI' IADVEC;  MODRADV = 'PART' MODADV  ETAB.'NBPART' ;
 494 :                   MATRADV = 'REDU'CHMAT1  MODRADV;
 495 :     'FINSI' ;
 496 : *    'SI' IPHASE;  MODRPHA = 'PART' MODPHA ETAB.'NBPART' ;
 497 : *                  MATRPHA = 'REDU'CHMAT1  MODRPHA;
 498 : *    'FINSI';
 499 :     'SI' ETAB . 'FOR_DIFF' ;                                                    
 500 :       MODDRED = 'PART' ETAB.'MOD_DIF' ETAB.'NBPART' ;
 501 :       CHMDRED = 'REDU' CHMAT1 MODDRED ;
 502 :     'FINSI' ;
 503 :     'SI' ITHM1;   MODRTHM= 'PART' MODTHM  ETAB.'NBPART' ;
 504 :                   MATRTHM='REDU' CHMAT1 MODRTHM ;
 505 :     'FINSI' ;
 506 :   'SINON' ;
 507 :      'SI' ICONDU; MODRCOND=MODCOND; MATRCOND=MATCOND;'FINSI';
 508 :      'SI' ICONVE; MODRCON=MODCON; MATRCON=MATCON; 'FINSI';
 509 :      'SI' IADVEC; MODRADV=MODADV; MATRADV=MATADV; 'FINSI';
 510 :      'SI' ITHM1;  MODRTHM=MODTHM; MATRTHM=MATTHM; 'FINSI';
 511 : *     'SI' IPHASE; MODRPHA=MODPHA; MATRPHA=MATPHA; 'FINSI';
 512 :     'SI' ETAB . 'FOR_DIFF' ;                                                    
 513 :       MODDRED = ETAB.'MOD_DIF' ;
 514 :       CHMDRED = CHMAT1 ;
 515 :     'FINSI' ;
 516 :   'FINSI' ;
 517 : 
 518 : *--- Calcul des matrices d'iteration On les recalcule a cause de perso  
 519 :     IKDETO=FAUX;IBCONS=FAUX;
 520 :     'SI' ICONDU ; 
 521 :        KDETO= 'COND' MODRCOND MATRCOND;  
 522 :        IKDETO=VRAI;
 523 :     'FINSI';
 524 :     'SI' ITHM1;
 525 :        KDCC= 'COND' MODRTHM MATRTHM;
 526 :        'SI' IKDETO;
 527 :           KDETO=KDETO 'ET' KDCC;
 528 :        'SINON';
 529 :           KDETO=KDCC;IKDETO=VRAI;
 530 :        'FINSI';
 531 :     'FINSI';
 532 :     'SI' (('NON' IKDEP) 'ET' IKDETO);
 533 :        BCONS= KDETO;IBCONS=VRAI;
 534 :     'FINSI';
 535 :      'SI' ICONVE; 
 536 :        KDCCG= 'COND' MODRCON MATRCON;
 537 :        'SI' IKDETO;
 538 :           KDETO=KDETO 'ET' KDCCG;
 539 :        'SINON';
 540 :           KDETO=KDCCG;IKDETO=VRAI;
 541 :        'FINSI';
 542 :        'SI'  ('NON' IECDEP); 
 543 :          'SI' IBCONS ;
 544 :             BCONS=BCONS 'ET' KDCCG;
 545 :           'SINON';
 546 :             BCONS=KDCCG;IBCONS=VRAI;
 547 :          'FINSI';
 548 :        'FINSI';   
 549 :      'FINSI';           
 550 :      'SI' IADVEC; 
 551 : * la conduction de du model d'advection est deja calculer grace a icondu        
 552 :        'SI' ('NON'  IKVITE);       
 553 :          KDCC2= 'ADVE' MODRADV MATRADV;
 554 :         'SI' IKDETO;
 555 :             KDETO=KDETO 'ET' KDCC2;
 556 :          'SINON';
 557 :             KDETO= KDCC2 ;IKDETO=VRAI;
 558 :          'FINSI';
 559 :          'SI' IBCONS;
 560 :              BCONS = BCONS 'ET' KDCC2;
 561 :           'SINON';
 562 :              BCONS= KDCC2;IBCONS=VRAI;
 563 :           'FINSI';
 564 :        'FINSI';
 565 :      'FINSI';                                                     
 566 :      'SI' ETAB . 'FOR_DIFF' ;                                                  
 567 :        KDEDI = 'RIGI' MODDRED CHMDRED ;      
 568 :        'SI' IKDETO;
 569 :           KDETO=KDETO 'ET' KDEDI;
 570 :        'SINON';
 571 :           KDETO=KDEDI;IKDETO=VRAI;
 572 :        'FINSI'; 
 573 :        'SI' ('NON'  IKDDEP);
 574 :          'SI' IBCONS;
 575 :            BCONS=BCONS 'ET' KDEDI;
 576 :          'SINON';
 577 :            BCONS= KDEDI;IBCONS=VRAI;
 578 :          'FINSI';
 579 :        'FINSI';                                                                 
 580 :      'FINSI' ; 
 581 :                                                        
 582 : *   
 583 :     AA    = KDETO * LAMBDA1 ;                                        
 584 :     CCONS = AA ;                                                  
 585 :     BB    = KDETO ;  
 586 :     'SI'  ('NON' IBCONS) ;                                                   
 587 :          BCONS = EXTR  KDETO 'RIGI' 'MULT'; IBCONS=VRAI;                        
 588 :      'FINSI';                                                               
 589 : *
 590 : 
 591 :     'SI' ICAPA ;                                                     
 592 :       'SI' ICAPATH ;
 593 :         'SI' ICONDU; 
 594 :             CDET= ( 'CAPA' MODRCOND MATRCOND)/T_PAS;
 595 :             AA= CDET  'ET' AA ;
 596 :            'SI' ICDEP ;  CCONS = CDET 'ET' CCONS ;  'FINSI' ; 
 597 :         'FINSI'; 
 598 :         'SI' ITHM1;
 599 :             CDET=  ( 'CAPA' MODRTHM MATRTHM)/T_PAS;
 600 :             AA= CDET  'ET' AA ;     
 601 :             'SI'  ICDEP;CCONS = CDET 'ET' CCONS ;  'FINSI' ; 
 602 :         'FINSI';    
 603 :       'FINSI';                                                      
 604 :       'SI' ICAPADI ;
 605 :          CDET = ('CAPA' MODDRED CHMDRED) / T_PAS ;                      
 606 :          AA = CDET 'ET' AA ;                                            
 607 :          'SI'  ICDDEP ;  CCONS = CDET 'ET' CCONS ;  'FINSI' ;            
 608 :       'FINSI' ;                                                         
 609 :     'FINSI' ;                                                        
 610 : *                                                                   *
 611 :        'SI' IPHASE;                                                     
 612 :          T0SSLX = TH_COUR 'ENLEVER' 'LX  ' ;                            
 613 :          DEPPHA  ='PHAJ' ETAB.'MOD_PHA' ETAB.'MAT_PHA'                 
 614 :                          T0SSLX  BLOPHA;                                
 615 :          MODPHA=ETAB.'MOD_PHA';                                         
 616 :          MATPHA=   'REDU' CHMAT MODPHA;                                 
 617 :          AAQP ='EXCO' MATPHA 'QLAT' 'SCAL';                             
 618 :          AARH='EXCO'  MATPHA 'RHO' 'SCAL';                              
 619 :          AASO=AAQP * AARH;                                              
 620 :          QLAPHA=SOURCE ETAB.'MOD_PHA'  AASO 'ELEM';                     
 621 :          QLAPHA= QLAPHA / T_PAS ;                                       
 622 :       'FINSI';                                                          
 623 : *
 624 :   'OPTION' 'PARA' FAUX ;                   
 625 : *----------------- y-a-t-il des blocages ---------------------------    
 626 : * on le laisse ici car perso peut l'avoir modifie de memepour les autres
 627 : * matrices  
 628 :       IKBLOC=FAUX;         
 629 :       'SI' ETAB.'FOR_THER' ; 
 630 :          IKBLOC=VRAI;                                           
 631 :          MAT_BLOC = ETAB.'BLOCAGES_THERMIQUES' ;                        
 632 :          'SI' ('EGA' MAT_BLOC 'INCONNU') ;                              
 633 :             MAT_BLOC = 'EXTR' KDETO 'RIGI' 'MULT' ;                     
 634 :          'FINSI' ;                                                      
 635 :       'FINSI' ;                                                         
 636 :       'SI' ETAB . 'FOR_DIFF' ;                                                  
 637 :          MAT_BLDI = ETAB.'BLOCAGES_DIFFUSIONS' ;                        
 638 :          'SI' ('EGA' MAT_BLDI 'INCONNU') ;                              
 639 :             MAT_BLDI = 'EXTR' KDEDI 'RIGI' 'MULT' ;                     
 640 :          'FINSI' ; 
 641 :          'SI' IKBLOC;
 642 :            MAT_BLOC=MAT_BLOC 'ET'   MAT_BLDI;
 643 :          'SINON';
 644 :            MAT_BLOC =   MAT_BLDI;
 645 :          'FINSI';                                                
 646 :       'FINSI' ;                              
 647 :       ch_z = U0 'ENLEVER' 'LX' ;    
 648 :       SECON = MAT_BLOC * ch_z ;
 649 :       AA = AA 'ET'  MAT_BLOC;
 650 :       MAT_CHPO= MAT_BLOC * ch_z ;  
 651 : *------------------- y-a-t-il des temperatures imposees--------   
 652 : 
 653 :      ICHUIMP=FAUX;            
 654 :      'SI' ETAB.'FOR_THER' ;                
 655 :        'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'TIMP') ;    
 656 :          CH_UIMP = 'TIRE' (ETAB.'CHARGEMENT') 'TIMP' TEM1 ;   
 657 :          'SI' ICELS ;  CH_UIMP =  CH_UIMP + TREF ;  'FINSI' ; 
 658 :          ICHUIMP=VRAI;
 659 :        'FINSI'; 
 660 :      'FINSI';                                                     
 661 :      'SI' ETAB . 'FOR_DIFF' ;            
 662 :        'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'CIMP') ;              
 663 :          CH_CI = 'TIRE' (ETAB.'CHARGEMENT') 'CIMP' TEM1 ; 
 664 :          'SI' ICHUIMP;
 665 :            CH_UIMP= CH_UIMP 'ET' CH_CI;
 666 :          'SINON';
 667 :            CH_UIMP=CH_CI;
 668 :          'FINSI';
 669 :          ICHUIMP=VRAI;   
 670 :        'FINSI';
 671 :      'FINSI';   
 672 :      'SI' ('NON' ICHUIMP);
 673 :         CH_UIMP='DEPI'   MAT_BLOC 0.;                                           
 674 :      'FINSI';                                                                   
 675 :      MAT_CHPO = CH_UIMP - MAT_CHPO ;                                       
 676 :      SECON    = CH_UIMP - SECON ;                                       
 677 : *---------- Si convection  on cherche TE ------------    
 678 :                                                     
 679 :      'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'TECO' ) ;                      
 680 :         CH_TEC = 'TIRE' (ETAB.'CHARGEMENT') 'TECO' TEMM ;               
 681 :         'SI' ICELS ;  CH_TEC = CH_TEC + TREF ;  'FINSI' ;               
 682 :      'FINSI';                                                           
 683 :                                                                         
 684 : *----------calcul  convection  second membre  --------------   
 685 :                                                                         
 686 :       'SI' ICONVE;                                           
 687 :          CHMAT2   = 'REDU' CHMAT ETAB.'MOD_CON';                                
 688 :         'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'TECO' ) ; 
 689 :            CHAL_TEI = 'CONV' ETAB.'MOD_CON' CHMAT2 CH_TEC ;                     
 690 :            MAT_CHPO = MAT_CHPO + CHAL_TEI;                                   
 691 :         'FINSI';                                                                
 692 :          'SI' ('NON' IECDEP) ;                                                  
 693 :           'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'TECO' ) ;                 
 694 :             SECON = SECON + CHAL_TEI;                                   
 695 :           'FINSI' ;                                                     
 696 :          'FINSI';                                                       
 697 :       'FINSI';                                                          
 698 :                                                                         
 699 : *--------- SI terme de flux -------------------------------             
 700 :                                                                         
 701 :    'SI' ETAB.'THM1' ;
 702 :      ma FTGC = @MATETHM ETAB.'MOD_THM' TH_COUR ;
 703 :      MAT_CHPO = MAT_CHPO-FTGC;
 704 :      SECON = SECON -FTGC;
 705 :    'FINSI';
 706 :    'REPE' Boucle NBDUA1 ;
 707 :       MOTCOMP  = 'EXTR' LDUAL1 &Boucle ;
 708 :       'SI' ('EXIS' (ETAB.'CHARGEMENT') MOTCOMP) ;
 709 :         CH_DUA   = 'TIRE' (ETAB.'CHARGEMENT') MOTCOMP TEMM ;
 710 :         MAT_CHPO = MAT_CHPO + CH_DUA ;
 711 :         SECON    = SECON    + CH_DUA ;
 712 :       'FINS' ;
 713 :    'FIN' Boucle ;
 714 : *-------------  calcul des termes rayonnement- et des autres----------- 
 715 :                                                                         
 716 :    'SI' (etab.'PROCEDURE_CHAR_THER');
 717 :       IAPPEL=3;
 718 :       TAAT=CHARTHER preced temm  IAPPEL;
 719 :       'SI'('EXIS' TAAT 'ADDI_MATRICE'); 
 720 :       mat_z = lambda1 * taat.'ADDI_MATRICE' ;
 721 :       ccons = mat_z 'ET' ccons ;
 722 :       aa    = mat_z 'ET' aa ;
 723 :       bb=taat.'ADDI_MATRICE' 'ET' bb;
 724 :       'FINSI';
 725 :       'SI' ('EXIS' TAAT 'ADDI_SECOND' );
 726 :       MAT_CHPO= MAT_CHPO et taat.'ADDI_SECOND';
 727 :       'FINSI';
 728 :       'SI' ('EXIS' TAAT  'RAYO_VALEUR');
 729 :      
 730 :        STAB.'RAYONNEMENT'=TAAT.'RAYO_VALEUR';
 731 :       'FINSI';
 732 :   'FINSI';                                                              
 733 : *------------- si phase insertion des blocages et des jeux ---------    
 734 :                                                                         
 735 :    'SI' IPHASE;                                                         
 736 :         AA = AA 'ET' BLOPHA;                                            
 737 :         SECON = SECON 'ET' DEPPHA;                                      
 738 :         MAT_CHPO = MAT_CHPO 'ET' DEPPHA;                                
 739 :   'FINSI';                                                              
 740 : *--------------- Calcul du premier résidu --------------------------    
 741 :                                                                     
 742 :       B3 = BB * U0 ;                                                    
 743 :       MAT_CHPO =  MAT_CHPO - B3 ;                                               
 744 : ********************************************************************    
 745 : *                 Boucle sur les iterations                        *    
 746 : ********************************************************************    
 747 : *     on peut mettre n'importe quoi c'est pour                          
 748 : *     ne pas faire de tests dans la boucle                              
 749 : ZCLIM = MAT_BLOC;                                                       
 750 : ZNACCE =2;ZITAC= 0 ;IT= 0 ;ITDEP=3;'SI' IPHASE; ITDEP=5;'FINSI';        
 751 : ITACC = 0;                                                              
 752 : ACFP1  =  'COPIER' MAT_CHPO * 0.;  ACFP2  = ACFP1 ; MAT_CHPP=ACFP1 ;    
 753 : ACFP3  = ACFP1 ;  ACFEP1 = ACFP1;                                       
 754 : ACFEP2 = ACFP1 ;  CORREC=0.;                                            
 755 : DU0 = 0. * U0;                                                          
 756 : U00 = 'ENLEVER' U0 'LX';                                                
 757 : 'SI' IPHASE ;                                                           
 758 :   U00MTREF = U00 ; 'SI' ICELS ; U00MTREF = U00 - CHTREF ; 'FINSI' ;     
 759 : 'FINSI' ;                                                               
 760 : U1=U00;                                                                 
 761 :    'REPETER' BOU_IT1;                                                   
 762 : *IT est le compteur de ETIQ, ITACC doit etre =< 0 pour qu'on accelere   
 763 : IT= IT + 1 ;                                                            
 764 : ITACC = ITACC - 1;                                                      
 765 : ZITAC = ZITAC + 1 ;                                                     
 766 :       ITE_IT = &BOU_IT1;                                                
 767 :       AUTORISA=VRAI;                                                    
 768 :       BB= BCONS;CC=CCONS;  
 769 :                                                  
 770 : *                                                                       
 771 : * selection des fluxmax pour le changement de phase                     
 772 : *                                                                       
 773 :       'SI' IPHASE;                                                      
 774 :         'SI' (ITE_IT > 1) ;                                             
 775 :             U1TRE = U1 'ENLEVER' 'LX' ;                                 
 776 :             'SI' ICELS ; U1TRE = U1TRE - CHTREF ;  'FINSI' ;            
 777 :             U1TRE = U1TRE + (U1 'EXCO' 'LX' 'NOID' 'LX') ;              
 778 :         'SINON' ;                                                       
 779 :             U1TRE = U1 ;  'SI' ICELS ; U1TRE = U1 - CHTREF ;  'FINSI' ; 
 780 :             AUTORISA = FAUX ;                                           
 781 :         'FINSI';                                                        
 782 :             CHPPHA = 'EXCP'  MODPHA MATPHA PRO_VAL                      
 783 :                       QLAPHA U00MTREF U1TRE  BLOPHA;                          
 784 :       'FINSI';                                                          
 785 : * nombre max d'iteration autorisé est-il dépassé?                       
 786 :      'SI' (ITE_IT '>' MAX1);                                            
 787 :           'MESS' '*** LE CALCUL N A PAS CONVERGE ***';                  
 788 :           ETAB.'ERREUR' = VRAI;                                         
 789 :           'QUITTER' TRANSNON;                                           
 790 :       'FINSI';                                                          
 791 : *                                                                       
 792 : *---------------------------------------------------------------------  
 793 : *           La force motrice de l'iteration est fixee: RESIDU           
 794 : *           on va calculer un nouveau champ de deplacement              
 795 : *                                                                       
 796 : *   calcul de l'increment de l'increment de deplacement zdep1           
 797 : *   par resolution lineaire                                             
 798 : *                                                                       
 799 : *                                                                       
 800 : *  acceleration de convergence                                          
 801 : *  
 802 :                                                                    
 803 : CORRECP = CORREC;                                                       
 804 : CORREC = 0;                                                             
 805 : ACFP0 = (MAT_CHPO - MAT_CHPP)  'ENLE' FLX ;                             
 806 : ACFEP0 = ACFP0;                                                         
 807 : ACFEP0 = ACFEP0 - CORRECP ;                                             
 808 : 'SI' ('MULT' IT ZNACCE)   ;                                             
 809 :            'SI' (IT > ITDEP);                                           
 810 :                CORREC = 'ACT3' ACFEP2  ACFEP1 ACFEP0                    
 811 :                         ACFP3 ACFP2 ACFP1  ACFP0 ;                      
 812 :                 MAT_CHPO = MAT_CHPO - CORREC;                           
 813 :            'FINSI';                                                     
 814 : 'FINSI';                                                                
 815 :                                                                         
 816 : SI (IT > 3);                                                            
 817 : 'DETR' ACFP3;                                                           
 818 : 'DETR' ACFEP2;                                                          
 819 : 'FINSI';                                                                
 820 : ACFP3  = ACFP2  ; ACFP2  = ACFP1  ; ACFP1  = ACFP0 ;                    
 821 : ACFEP2 = ACFEP1 ; ACFEP1 = ACFEP0 ;                                     
 822 :                                                                         
 823 :       MENAGE;                                                           
 824 : 
 825 : 'SI' (IRIB);                                                            
 826 :       'SI' IPHASE;                                                      
 827 :          DU1 BID BID BID BID  = 'RESOU' AA MAT_CHPO 'INIB'              
 828 :                        RIBL_VAL     LISE_VAL  CHPPHA;                   
 829 :       'SINON';                                                          
 830 :          DU1 BID BID BID  = 'RESOU' AA MAT_CHPO 'INIB'                  
 831 :                        RIBL_VAL     LISE_VAL ;                          
 832 :       'FINSI';                                                          
 833 : 'SINON';                                                                
 834 :       'SI' IPHASE;                                     
 835 :           DU1 = 'RESOUDRE' AA MAT_CHPO CHPPHA;                     
 836 :       'SINON';                                                          
 837 :           DU1 = 'RESOUDRE' AA  MAT_CHPO ; 
 838 : *      mess ' ITeration ' it;
 839 : *    aaa= extr aa rigi mult ; mess ' aaa ' ; list   aaa; 
 840 : *    mess ' mat_chpo' ; list   mat_chpo;
 841 : *     mess   ' du1 ' ; list   du1;               
 842 :       'FINSI';                                                          
 843 : 'FINSI';                                        
 844 : ZRAID_T = 'EXTR' AA 'CONT';                                             
 845 : 'SI' ('EXIS' ZRAID_T 'NITER');                                          
 846 :         RIBL_VAL = ZRAID_T.7;                                           
 847 :         LISE_VAL = ZRAID_T.6; 
 848 :         IRIB=VRAI;                                          
 849 : 'FINSI';                                                                
 850 :                                                  
 851 :       U1 = U00 + DU1;
 852 :                                                                         
 853 : XXX1= ZCLIM * U1;                                                       
 854 : MAT_CHPP=  MAT_CHPO 'ENLEVER' 'FLX';                                    
 855 :                                                                         
 856 :    'SI' ('EGA' I_LAMBD1 0) ;
 857 :      U_BOU1 = (LAMBDA1 * U1)  + ((1 - LAMBDA1) * U0);                  
 858 :    'SINON' ;
 859 :      'SI' ('EGA' I_LAMBD1 1) ;  U_BOU1 = U0 ;               'FINSI' ;
 860 :      'SI' ('EGA' I_LAMBD1 2) ;  U_BOU1 = 0.5 * (U0 + U1) ;  'FINSI' ;
 861 :      'SI' ('EGA' I_LAMBD1 3) ;  U_BOU1 = U1 ;               'FINSI' ;
 862 :    'FINSI' ;
 863 : 
 864 :       TH_COUR = U_BOU1 ; 'SI' ICELS; TH_COUR = U_BOU1 - CHTREF; 'FINSI';
 865 :       ETAB.'THER_COURANT' = TH_COUR ;                                   
 866 :                                                                         
 867 : *-------- Calcul du critère de fin d'itération -------------------      
 868 :                                                                         
 869 :       DUABS2   = 'ABS' (DU1 - DU0) ;
 870 :       ZPREC2   = 0. ;
 871 :       'REPE' BINCO1 NBDUA1 ;
 872 :         LINCOI1  = 'MOTS' ('EXTR' LINCO1 &BINCO1) ;
 873 :         MDUABSI1 = 'MAXI' DUABS2 'AVEC' LINCOI1 ;
 874 :         NORMI1   = 'MAXI' 'ABS' U1 'AVEC' LINCOI1 ;
 875 :         'SI' (NORMI1 '<EG' (1.E-14 * MDUABSI1)) ;
 876 :           NORMI1   = 1. ;
 877 :         'FINS' ;
 878 :         ZPRECI2  = MDUABSI1 / NORMI1 ;
 879 :         'SI' (ZPRECI2 '>' ZPREC2) ;
 880 :           ZPREC2   = ZPRECI2 ;
 881 :         'FINS' ;
 882 :       'FIN' BINCO1 ;
 883 :       DU0 = DU1;
 884 :       'MESS' '    Itération numéro : 'ITE_IT 
 885 :              '    Valeur du critère : 'ZPREC2 ;
 886 :       'SI' ((ZPREC2 '<EG' ZPREC1) 'ET' AUTORISA);
 887 :          'QUITTER' BOU_IT1;                                             
 888 :       'FINSI';                                                          
 889 :                                                                         
 890 : *****************************************************************       
 891 : *      CALCUL DU NOUVEAU RESIDU                                 *       
 892 : *****************************************************************               
 893 :       MAT_CHPO = SECON   ;                                      
 894 : *               Gestion des variables externes                  *       
 895 : *****************************************************************       
 896 :                                                                         
 897 :      'SI' NONLIN1;                                                      
 898 :                                                                         
 899 : *-------------- Cas de la temperature et du temps ---------------       
 900 :                                                                         
 901 :                                                                         
 902 :         CHVAR = 'CHAN' 'CHAM' TH_COUR ETAB.'MOD_TOT' 'RIGIDITE' ;       
 903 :         CHVAR2 = 'MANU' 'CHML' ETAB.'MOD_TOT' 'TEMP' TEMM 'RIGIDITE' ;  
 904 :         CHVAR = CHVAR 'ET' CHVAR2 ;                                     
 905 :                                                                         
 906 : *-------------- Cas des variables mecaniques --------------------       
 907 : *---- si il y a couplage on les "rentre" toutes dans CHVAR ------       
 908 :                                                                         
 909 :         'SI' (ETAB.'COUPLAGE');                                         
 910 :            CHVAR = CHVAR 'ET' CHAR_ME;                                    
 911 :         'FINSI';                                                        
 912 : 
 913 : *-------------- Mise a jour des variables externes --------------       
 914 :         'SI' (ETAB.'PROCEDURE_PARA_THER') ;                             
 915 :            PARATHER PRECED TEMM ;                                       
 916 :         'FINSI' ;                                                       
 917 :                                                                         
 918 : *-------------- Cas des autres variables --------------------           
 919 :                                                                         
 920 :         'REPETER' BOU_NU2 ILVA;                                         
 921 :           ITE2 = &BOU_NU2;                                              
 922 :           MOTI = 'EXTR' LVAREX ITE2;                                    
 923 :           'SI' ('EXISTE' LINCO2 MOTI) ;
 924 :             'ITER' BOU_NU2 ;
 925 :           'FINS' ;
 926 :           'SI' (ETAB.'COUPLAGE');                                       
 927 :              'SI' ('EXISTE' CHAR_ME MOTI );                             
 928 :                 'SI' ('NEG' LAMBDA1 0.);                                
 929 :                     'MESS'                                              
 930 :            '*** Le materiau thermique depend de parametres mecaniques'; 
 931 :                   'ERRE' '*** Il faut initialiser SOUS-RELAXATION à 0.';
 932 :                 'FINSI';                                                
 933 :                 'ITERER' BOU_NU2;                                       
 934 :              'FINSI';                                                   
 935 :           'FINSI';                                                      
 936 :           'SI' ('EXISTE' (ETAB.'CHARGEMENT') MOTI);                     
 937 :              CH_1 = 'TIRE' (ETAB.'CHARGEMENT') MOTI TEMM;               
 938 :              TYP_1 = 'TYPE' CH_1;                                       
 939 :                                                                         
 940 : * on suppose que les chargements qui ne sont pas d'origine mecanique    
 941 : * sont appuyes sur le maillage thermique .                              
 942 :                                                                         
 943 :             'SI' ('EGA' TYP_1 'CHPOINT ');                              
 944 :                CHVAR2 = 'CHAN' 'CHAM' CH_1 ETAB.'MOD_TOT' 'RIGIDITE';   
 945 :             'SINON';                                                    
 946 :                CHVAR2 = 'CHAN' 'RIGIDITE' CH_1 ETAB.'MOD_TOT';          
 947 :             'FINSI';                                                    
 948 :             CHVAR = CHVAR + CHVAR2;                                     
 949 :           'SINON';                                                      
 950 :             'MESS' '*** Il manque une donnee du chargement ***';        
 951 :             'MESS' '*** Variable concernee : 'MOTI;                     
 952 :             'ERREUR' ' ';                                               
 953 :           'FINSI';                                                      
 954 :         'FIN' BOU_NU2;                                                  
 955 :      'FINSI';                                                           
 956 :                                                                         
 957 : *----------------- Calcul du champ de matériau a T= U_BOU1--------------
 958 :   'SI' NONLIN1;
 959 :     CHVAR1 = 'REDU' CHVAR (ETAB.'MOD_TOT');
 960 :     CHMAT = 'VARI' 'NUAG' (ETAB.'MOD_TOT') (ETAB.'MAT_TOT') CHVAR1
 961 :       'RIGIDITE';
 962 :     ETAB.'CHMAT'=CHMAT;
 963 :     'SI' (ETAB . 'FOR_DIFF' 'OU' ETAB.'THE1') ;
 964 :       CHMAT1 = 'REDU' CHMAT ETAB.'MOD_THE' ;
 965 :       'SI' ETAB.'THM1' ;
 966 :         ma ff0 = @MATETHM ETAB.'MOD_THM' TH_COUR ;
 967 :         CHMAT1 = CHMAT1 'ET' ma ;
 968 :       'FINS' ;
 969 :     'SINO' ;
 970 :       'SI' ETAB.'THM1' ;
 971 :         CHMAT1 ff0 = @MATETHM ETAB.'MOD_THM' TH_COUR ;
 972 :       'FINS' ;
 973 :     'FINS' ;
 974 :   'SINON';
 975 :     ETAB.'CHMAT' = ETAB.'MAT_TOT';
 976 :     'SI' (ETAB . 'FOR_DIFF' 'OU' ETAB.'THE1') ;
 977 :       CHMAT  = ETAB.'MAT_TOT';
 978 :       CHMAT1 = 'REDU' CHMAT ETAB.'MOD_THE' ;
 979 :       'SI' ETAB.'THM1' ;
 980 :         ma ff0 = @MATETHM ETAB.'MOD_THM' TH_COUR ;
 981 :         CHMAT1=CHMAT1 'ET' ma ;
 982 :       'FINS' ;
 983 :     'SINO' ;
 984 :       'SI' ETAB.'THM1' ;
 985 :         CHMAT1 ff0 = @MATETHM ETAB.'MOD_THM' TH_COUR ;
 986 :       'FINS' ;
 987 :     'FINS' ;
 988 :   'FINSI';
 989 : *
 990 :   'OPTION' 'PARA' IPARAL ;
 991 :   CHMTRED = CHMAT1 ;
 992 :   CHMDRED = CHMAT1 ; 
 993 :     'SI' (IKDEP 'OU' ICDEP) ;
 994 :           'SI' ICONDU; MATRCOND= 'REDU' CHMAT1 MODRCOND; 'FINSI';  
 995 :           'SI' ICONVE; MATRCON= 'REDU' CHMAT1 MODRCON;'FINSI'; 
 996 :           'SI' IADVEC; MATRADV= 'REDU' CHMAT1  MODRADV;'FINSI' ; 
 997 :           'SI' ITHM1;  MATRTHM= 'REDU'  CHMAT1  MODRTHM;'FINSI' ;          
 998 :     'FINSI' ;
 999 :     'SI' (IKDDEP 'OU' ICDDEP) ;   
1000 :       'SI' IPARAL;  CHMDRED = 'REDU' CHMAT1 MODDRED ;'FINSI';
1001 :     'FINSI' ;
1002 : *
1003 : *---------------CALCUL matrice de conductivite si besoin --------------
1004 :                                                       
1005 :     'SI' IKDEP ; 
1006 :        'SI' ICONDU;  BB =  ('COND' MODRCOND MATRCOND) 'ET' BB;'FINSI'; 
1007 :        'SI' ITHM1 ;  BB =  ('COND' MODRTHM MATRTHM) 'ET' BB;'FINSI';
1008 :        
1009 :     'FINSI' ; 
1010 :     'SI' IECDEP;
1011 :        'SI' ICONVE; BB =  ('COND' MODRCON MATRCON) 'ET' BB;'FINSI';       
1012 :     'FINSI';
1013 :     'SI' IKVITE; 
1014 :         BB= ('ADVE'  MODRADV MATRADV)  'ET' BB;'FINSI';          
1015 :     'SI' IKDDEP ;                                         
1016 :       BB = ('RIGI' MODDRED CHMDRED) 'ET' BB ;      
1017 :     'FINSI' ;                                                                   
1018 : *-------------- calcul matrice de capacite si besoin------------------  
1019 :                                                                         
1020 :     'SI' ICDEP ; 
1021 :        XDIV=(-1.d0 * T_PAS) ;
1022 :        'SI' ICONDU;CC=(('CAPA' MODRCOND MATRCOND)/XDIV) 'ET' CC;'FINSI';
1023 :        'SI' ITHM1  ; CC=(('CAPA' MODRTHM MATRTHM)/XDIV) 'ET' CC;'FINSI';        
1024 :     'FINSI';                      
1025 :     'SI' ICDDEP ;                   
1026 :        CDET = 'CAPA' MODDRED CHMDRED ;                                  
1027 :        CC = CDET / (-1.d0 * T_PAS) 'ET' CC;       
1028 :     'FINSI';                                                            
1029 :                                                                         
1030 : *----------------calcul des temres de convections si besoin ---------   
1031 :        'SI' IECDEP;                                                     
1032 :         'SI' ICONVE;                                         
1033 :            'SI' ('EXIS' (ETAB.'CHARGEMENT' ) 'TECO');              
1034 :            CHAL_TE = 'CONV' MODCON CHMAT2 CH_TEC ;  
1035 :            MAT_CHPO = MAT_CHPO + CHAL_TE ; 
1036 :            'FINSI';       
1037 :         'FINSI';                                                        
1038 :       'FINSI';                                                          
1039 :                                                                         
1040 :   'OPTION' 'PARA' FAUX ;
1041 : *
1042 : ******************************************************************      
1043 : *            On génère les termes de rayonnement et autres        *     
1044 : ******************************************************************      
1045 :        'SI'(ETAB.'PROCEDURE_CHAR_THER') ;
1046 :            IAPPEL=3; 
1047 :            TAAT=CHARTHER preced tem1 IAPPEL; 
1048 :            'SI' ('EXIS' TAAT 'ADDI_MATRICE'); 
1049 :            bb = bb et taat.'ADDI_MATRICE'; 
1050 :            'FINSI';
1051 :            'SI' ( 'EXIS' TAAT 'ADDI_SECOND' );
1052 :            MAT_CHPO= MAT_CHPO  et taat.'ADDI_SECOND' ;
1053 :            'FINSI'; 
1054 :           'SI' ('EXIS' TAAT 'RAYO_VALEUR');
1055 :           STAB.'RAYONNEMENT'=TAAT.'RAYO_VALEUR';
1056 :          'FINSI';                                            
1057 :        'FINSI' ;                                                        
1058 :                                                                         
1059 : *---------------    calcul K* u1  et (lambda1*k + C/DT) * DDU1          
1060 :                                                                         
1061 :      'SI' ('EGA' I_LAMBD1 1) ;
1062 :        DS = BB * U00 ; 
1063 :      'SINON' ;
1064 :        chp_z = DU1 ;
1065 :        'SI' ('NEG' I_LAMBD1 3) ;  chp_z = LAMBDA1 * DU1 ;  'FINSI' ;    
1066 :        DS = BB * ( chp_z + U00 ) ;                                      
1067 :      'FINSI' ;
1068 :      DS2 = CC * DU1;                                     
1069 :      MAT_CHPO = MAT_CHPO + DS2 - DS ;                                
1070 :      'SI' ETAB.'THM1' ;
1071 :        ma FTGC = @MATETHM ETAB.'MOD_THM' TH_COUR ;
1072 :        MAT_CHPO = MAT_CHPO - FTGC ;   
1073 :      'FINSI';
1074 :      U_BOU = U1 ;                                                       
1075 :    'FIN' BOU_IT1;                                                       
1076 : *                                                                       
1077 : *  si changement de phase mise a jour des nouvelles proportions         
1078 : *                                                                       
1079 : 'SI' IPHASE;                                                            
1080 :    QPH = 'REAC' BLOPHA DU1;                                             
1081 :    PRO_VAL= 'PROPHA' PRO_VAL QLAPHA QPH;                                
1082 : 'FINSI';                                                                
1083 :                                                                         
1084 :      TH_COUR = U1 ;  'SI' ICELS ; TH_COUR = U1 - CHTREF ; 'FINSI' ;
1085 :      ETAB.'THER_COURANT' = TH_COUR ;                                    
1086 :                                                                         
1087 : *---------------- Appel a une procedure utilisateur -----------------   
1088 :                                                                         
1089 :      'SI' (ETAB.'PROCEDURE_PERSO2');                                    
1090 :         tab_z = 'INDEX' (PRECED.'TEMPERATURES') ;                       
1091 :         IND0 = tab_z. ('DIMENSION' tab_z) ;                             
1092 :         ETAB.'TEMI' =  PRECED.'TEMPERATURES' . IND0 ;                   
1093 :         PERSO2 PRECED ;                                                 
1094 :         ETAB = 'ENLEVER' ETAB 'TEMI' ;                                  
1095 :         'SI' ('EXIS' PRECED 'ARRET') ;                                  
1096 :           ETAB . 'ARRET' = PRECED . 'ARRET' ;                           
1097 :         'FINS' ;                                                        
1098 :      'FINSI';                                                           
1099 : *******************************************************************     
1100 : *      Reinitialisation des variables en vue du pas suivant       *     
1101 : *******************************************************************     
1102 :    'SI' ((ITE3+1) '<EG' DCALC);                                         
1103 :       TEM0 = TEM1;                                                      
1104 :       TEM1 = 'EXTR' TE_CALC (ITE3 + 1);                                 
1105 :       T_PAS = TEM1 - TEM0;                                              
1106 :       U0  = U1  ;                                                       
1107 :    'SINON';                                                             
1108 :       'QUITTER' BOUC_SO;                                                
1109 :    'FINSI';                                                             
1110 :                                                                         
1111 : *------------------------ On fait le menage -----------------------     
1112 :                                                                         
1113 :    'MENAGE' ;                                                           
1114 :                                                                         
1115 : 'FIN' BOUC_SO ;                                                         
1116 :                                                                         
1117 : 'SAUT' 1 'LIGN' ;                                                       
1118 :                                                                         
1119 : STAB.'ERREUR'      =  ERR_VAL   ;                                       
1120 : 'SI' ETAB.'FOR_THER' ;
1121 :    STAB.'INITIAL(2)'  = TH_COUR;
1122 : 'FINS' ;
1123 : 'SI' ETAB . 'FOR_DIFF' ;
1124 :    STAB.'CO2'         =  TH_COUR;
1125 : 'FINS' ;
1126 :  
1127 :                                                                       
1128 : 'SI' IRIB ;                                                             
1129 :    STAB.'RIBLO_T'  = RIBL_VAL ;                                
1130 :    STAB.'LISEA_T'  = LISE_VAL ;                                
1131 : 'FINSI' ;                                                               
1132 : *                                                                       
1133 : 'SI' IPHASE ;                                                           
1134 :    STAB.'PROPPHAS'    =  PRO_VAL    ;                                   
1135 : 'FINSI' ;                                                               
1136 : 'FINPROC' STAB ;                                                        
1137 :  
1138 :  
1139 :  
1140 :  
1141 :  

© Cast3M 2003 - All rights reserved.
Disclaimer