Download pasapas.procedur

Back to the list

   1 : * PASAPAS   PROCEDUR  AM        14/02/06    21:15:02     7944           
   2 :      
   3 : 'DEBPROC' PASAPAS  PRECED*'TABLE';                                      
   4 : 'SAUTER' 1 'LIGNE';                                                     
   5 : 'MESS'                                                                  
   6 : '------------------ DEBUT DE LA PROCEDURE PASAPAS --------------------';
   7 : ************************************************************************
   8 : *                                                                      *
   9 : *                                                                      *
  10 : *** PRECED      objet de type TABLE                                    *
  11 : *               C'est une table donnant , les arguments d'entrées, les *
  12 : *               options, puis les  resultats des pas precedents        *
  13 : *                                                                      *
  14 : ****************   I PARTIE   ******************************************
  15 : ********************************************************
  16 : 
  17 : *---------- attribution des valeurs par defaut et verifs elementaires
  18 : PASFINAL=0;
  19 : MOCA = 'MOTS' 'VECT' 'VX' 'VY' 'VZ' 'VXF' 'VYF' 'VZF';
  20 : PAS_DEFA PRECED;      WTAB=PRECED.'WTABLE';
  21 : *--------  initialisation du pas precedent si besoin 
  22 : *--------  et création des tables de sorties.
  23 : PAS_INIT  PRECED ;
  24 : conti=PRECED.'CONTINUATION';   estim = PRECED.'ESTIMATION';
  25 :  GE0_DEB=WTAB.'FOR0';
  26 : 'SI' ( 'EXIS' conti 'DEPLACEMENTS');
  27 :   'SI'( WTAB.'GRANDS_DEPLACEMENTS' 'OU'  WTAB.'FEFP_FORMULATION');
  28 :     Ge0_deb= 'FORME' conti . 'DEPLACEMENTS';
  29 :   'FINSI';
  30 : 'FINSI';
  31 : 'FORM' WTAB.'FOR0';   
  32 : *--------- quel est le delta-temps du dernier pas calcule ? --------- 
  33 :                                                                   
  34 : 'SI' ('EGA' WTAB.'DT' 'INCONNU' );                                     
  35 :    DELTAN = 0.D0 ;                                                      
  36 :    WTAB.'DT' = DELTAN ;                                               
  37 : 'SINON';                                                                
  38 :    DELTAN= WTAB.'DT';                                                 
  39 : 'FINSI';  
  40 : *---------   initialisation materiau a la temperature_reference 
  41 : *---------   qui est celle du temps temps0 donc uniquement 
  42 : *---------   en tout debut de calcul
  43 : 'SI' ('NON'('EXIS' WTAB 'ETAT0'));
  44 : *mess ' wtab etat0 nexiste pas';
  45 : * mess ' wtab char_the ' ; list wtab.'CHAR_THE';
  46 : * mess  ' wtab forther' ; list wtab . 'FOR_THER';
  47 : * mess ' wtab.MODAL'; list wtab . 'MODAL';
  48 : * mess ' wtab.matvar'; list wtab.'MATVAR'; 
  49 :    'SI'(WTAB.'CHAR_THE' 'OU' WTAB.'FOR_THER' 'OU' WTAB.'MODAL');
  50 :      'SI' (WTAB.'FOR_MECA' 'OU' WTAB.'MODAL');
  51 :         WTAB.'ETAT0' = 'ADET' 'NOUV' wtab.'MO_TOT'  wtab.'CHARGEMENT' 
  52 :                   WTAB.'TEMPS0'   conti    'TEMP'  WTAB.'TEMPS0';
  53 :         PAS_VERM PRECED WTAB.'ETAT0';  
  54 :        'SI' (WTAB.'MATVAR' 'OU' WTAB.'MODAL') ;           
  55 :            WTAB.'MAT0'   = PAS_MATE PRECED WTAB.'ETAT0';
  56 :        'SINON' ;
  57 : *       mess ' initialisation de mat0';
  58 :            WTAB.'MAT0'   =WTAB.'CARACTERISTIQUES';
  59 :        'FINSI'; 
  60 :        WTAB.'ETAT0'= 0; 
  61 :      'FINSI';
  62 :      'SI' ( WTAB.'FOR_THER' 'ET' ( 'NON' WTAB.'FOR_MECA'));
  63 :         WTAB.'MAT0'= WTAB.'CARACTERISTIQUES';
  64 :      'FINSI';
  65 :      WTAB.'MAT1'=WTAB.'MAT0';
  66 :      'SI' WTAB.'FOR_MECA';
  67 :         'SI'(WTAB.'CHAR_THE' 'OU'  WTAB.'FOR_THER');
  68 : *        mess ' pasapas wtab.matà'; list wtab.'MAT0';
  69 :            PAS_EPTH PRECED;
  70 :            WTAB.'ETHER1'=WTAB.'ETHER2';
  71 :           'SI' WTAB.'POR1'; WTAB.'MSRTHER1'=WTAB.'MSRTHER2';'FINSI';
  72 :        'FINSI';
  73 :      'FINSI';
  74 :    'FINSI';               
  75 : 'FINSI';                         
  76 : *--------- création du mchaml contenant l'état initial de tout
  77 :  WTAB.'ETAT1' = 'ADET' 'NOUV' wtab.'MO_TOTAL'  wtab.'CHARGEMENT'
  78 :          WTAB.'TEMPS0'   conti    'TEMP'  WTAB.'TEMPS0';
  79 : *---------- verification sur la présence des variables dont les    
  80 : *----------matériaux dépendent et des parametres externes
  81 : 
  82 : PAS_VERM PRECED WTAB.'ETAT1';     
  83 :                                                                 
  84 : *------------Appel a une procedure utilisateur PERSO1                   
  85 :  'SI' WTAB.'PROCEDURE_PERSO1';       
  86 :     PRECED.'PERSO1_APPEL' = 1 ;
  87 :     PERSO1 PRECED ;                                                   
  88 :     'SI' ('EXIS' PRECED 'ARRET') ;
  89 :       WTAB . 'ARRET' = PRECED . 'ARRET' ;
  90 :     'FINSI' ;
  91 :  'FINSI';                                                             
  92 : * ------------Appel a une procedure utilisateur REACTU MECA 
  93 :                                                            
  94 :  'SI' WTAB.'PROCEDURE_REAC_MECA' ;         
  95 :      REEV_MEC PRECED 0      ;                                        
  96 :  'FINSI' ; 
  97 : **************************   II PARTIE  *************************      
  98 : ******************************************************************      
  99 : ******************* boucle sur les pas de temps  *****************      
 100 : ******************************************************************      
 101 : 
 102 : * ------------quelques initialisations de l'algorithme    
 103 : IPAS = 0;                                                      
 104 : ICHG=0;ICHGMA=0;                                           
 105 : IAUTO=1;IREREDU=VRAI; TEMP0=  WTAB.'TEMPS0';   
 106 : ISAUV=VRAI;DTV= ( 'EXTR' wtab.'TEMPS_CALCULES' 1) - TEMP0;             
 107 :  'SI' (DTV '<' 1.e-15 );                                                  
 108 :   'SI' WTAB . 'FREQUENTIEL' ;
 109 :      DTV = 1.e-14 ;
 110 :   'SINON' ;                                              
 111 : DTV=('EXTR' WTAB.'TEMPS_CALCULES' 2)-TEMP0;                           
 112 :   'FINSI';                                                            
 113 :  'FINSI';                                                            
 114 : WTAB.'ARRET'=FAUX; WTAB.'AUTODEUX'=FAUX;                            
 115 : WTAB.'CONV'=VRAI;DT_AVANT=DTV;                                        
 116 : WTAB.'NOMBRE_ITERATIONS'=12; 
 117 : RFROT=0;
 118 : 
 119 : *---------- debut boucle sur pas de temps             
 120 : 'REPETER' BEXTERN  ; 
 121 :                                                            
 122 : *---recherche du temps a calculer TI
 123 :     NPAS='DIME' WTAB.'TEMPS_CALCULES';                                
 124 :     ICHG=ICHG + 1;  WTAB.'ICHG'= ICHG;                                          
 125 :     'SI' ( ICHG '>' NPAS) ; 'QUITTER' BEXTERN; 'FINSI';                  
 126 :     TI = 'EXTRAIRE'  WTAB.'TEMPS_CALCULES' ICHG ;           
 127 :     TIV=TI;                          
 128 :     'SI' (WTAB.'FREQUENTIEL') ;
 129 :        'SI'  (TI '<' TEMP0 ) ;  'ITERER'  BEXTERN ; 'FINSI' ;
 130 :     'SINON' ;                        
 131 :     'SI'  ((TI '<' TEMP0 ) 'OU' (TI 'EGA' PRECED.'TEMPS'. 0));            
 132 :         'ITERER'  BEXTERN ;                                            
 133 :     'FINSI'; 'FINSI'; 
 134 : 
 135 : *---ajustement du pas en fonction du nombre d iteration du pas précédent
 136 :     PASFINAL=PASFINAL+1;                     
 137 :     'SI' WTAB.'PAS_AJUSTE';                                          
 138 :        DTV=DT_AVANT;                                                            
 139 :        'SI' WTAB.'CONV';                                         
 140 :            'SI' (WTAB.'NOMBRE_ITERATIONS' > 20);                
 141 :                DTV=DTV/1.4142136;                               
 142 :            'FINSI';                                               
 143 :            'SI' (WTAB.'NOMBRE_ITERATIONS' <  7);                
 144 :               'SI' IREREDU;                                       
 145 :                   DTV=DTV* 1.4142136;                              
 146 :               'FINSI';                                            
 147 :            'FINSI';                                               
 148 :            DT_AVANT= DTV;                                         
 149 :            IREREDU=VRAI;                                          
 150 :        'SINON';                                                     
 151 :            DTV=0.0000000001D0* DT_AVANT;                          
 152 :            DT_AVANT= DT_AVANT /2.;                                
 153 :            IREREDU=FAUX;                                          
 154 :        'FINSI';                                                                 
 155 :        TTI = DTV* 1.0000000001 + TEMP0;                               
 156 :        'SI' ( TTI '<EG' TIV ); TI=TTI;PASFINAL=0; 'FINSI';                    
 157 :     'FINSI'; 
 158 :      PRECED.'ESTIMATION'.'TEMPS'=TI;
 159 :     'SI' (PASFINAL '>EG' 1.5) ; DT_AVANT= TI-TEMP0; 'FINSI';  
 160 :     WTAB.'T_FINAL'= TI;               
 161 :     WTAB.'DT_INIT' = TI-TEMP0; 
 162 :     'SI'((WTAB.'CONSOLIDATION' 'OU' WTAB.'DYNAMIQUE') 
 163 :          'ET' (WTAB.'DT_INIT' 'EGA' 0.));
 164 :            'ITERER' BEXTERN; 
 165 :     'FINSI';
 166 :     WTAB.'DT'= WTAB.'DT_INIT';         
 167 : 
 168 : *---compteur IPAS des pas de temps calcules 
 169 :     IPAS = IPAS + 1;                                                            
 170 :     WTAB.'PAS'=IPAS;
 171 : 
 172 : *---on se place dans la configuration déformée 
 173 :    'SI'( WTAB.'GRANDS_DEPLACEMENTS' 'OU'  WTAB.'FEFP_FORMULATION');
 174 :       'SI' (WTAB.'RECALCUL');
 175 :         'SI' ('EGA'  ( 'TYPE' GE0_DEB)  'CONFIGUR');
 176 :           'FORM'  GE0_DEB;
 177 :         'FINSI';
 178 :       'FINSI';
 179 :     'FINSI';      
 180 : 
 181 : *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
 182 : *++++++++++++++++++ BOUCLE interne de bouclage mec_ther ++++++++++++++
 183 : *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 184 :      I_BOTH = 0 ;                                                       
 185 :      'REPETER' BO_BOTH WTAB.'BOU_METH' ;      
 186 :         I_BOTH = I_BOTH + 1 ; 
 187 : *
 188 : *  re-initialisation de WTAB.'CHARGEMENT' en tete de boucle mec-ther
 189 : *
 190 :        'SI' WTAB.'CONVERGENCE_MEC_THE' ;
 191 :           WTAB.'CHARGEMENT' = WTAB . 'CHARGEMENT_I' ;
 192 :        'FINSI';  
 193 :  
 194 : *######CALCUL D'UN PAS SI IL Y A DE LA THERMIQUE ####################  
 195 : 
 196 :        'SI' (WTAB.'FOR_THER' 'OU' WTAB.'FOR_DIFF') ;      
 197 :          'SI' WTAB.'FOR_MECA' ;
 198 : *---------- en cas de convergence mecanique thermique  
 199 :             'SI' (I_BOTH > 1) ;               
 200 : *---------- reprise de la configuration meca de la derniere estimation 
 201 : *           du pas present si coherence mecanique/thermique
 202 :                'SI' ( 'EXISTE' estim 'FOR' ) ;
 203 :                   WTAB . 'RECARI' = VRAI ;                              
 204 :                   WTAB . 'RECADET' = VRAI;                                  
 205 :                   WTAB.'REA_GEOM' = VRAI ;                       
 206 :                   'FORM' estim.'FOR' ;
 207 :                'FINSI';     
 208 :             'FINSI' ;                      
 209 :          'FINSI' ; 
 210 :           
 211 :          'SI' (TI 'NEG' TEMP0);                                         
 212 :            'SI' ('NON' ('EXISTE' PRECED 'PAS_MAX'));                      
 213 :              WTAB.'TEM_CALC' = 'PROG' TI;                                
 214 :            'SINON';                                                       
 215 :              'SI' ((TEMP0 + PRECED.'PAS_MAX') '>EG' TI);                 
 216 :                 WTAB.'TEM_CALC' = 'PROG' TI;                             
 217 :              'SINON';                                                    
 218 :                 WTAB.'TEM_CALC' = 'PROG' TEMP0                           
 219 :                                    'PAS'  PRECED.'PAS_MAX'  TI;         
 220 :                 WTAB.'TEM_CALC' = 'ENLE'  WTAB.'TEM_CALC' 1;       
 221 :              'FINSI';                                         
 222 :            'FINSI';                      
 223 : *----- Appel a la procedure thermique (lineaire ou nonlineaire) ----
 224 :            'SI' ('NON' WTAB.'COUPLAGE'); 'MENAGE'; 'FINSI';              
 225 :            'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'NONLINEAIRE');      
 226 :               CHTER = TRANSNON PRECED;           
 227 :            'FINSI';                                             
 228 :            'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'LINEAIRE');    
 229 :              CHTER = TRANSLIN PRECED;                          
 230 :            'FINSI';                                             
 231 :            'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'DUPONT');  
 232 :               WTAB.'NOUV_PAS' = ('EXTR' WTAB.'TEM_CALC' 1) - TEMP0;  
 233 :               CHTER = DUPONT2 PRECED;        
 234 :            'FINSI';                           
 235 :            'SI' CHTER.'ERREUR';  
 236 :               'ERREUR' ' ';                                       
 237 :            'FINSI';
 238 :            'SI' WTAB.'FOR_THER' ;
 239 :              WTAB.'TET2'=CHTER.'INITIAL(2)' 'ENLE' 'LX';  
 240 : *            mess ' temperatures ' ; list resu      WTAB.'TET2';  
 241 :            'FINSI' ;
 242 :            'SI' WTAB.'FOR_DIFF' ;
 243 :              WTAB.'CO2'=CHTER.'CO2';        
 244 :            'FINSI' ;
 245 :          'FINSI';  
 246 :          'SI' WTAB.'FOR_THER' ;
 247 :            estim.'TEMPERATURES'=WTAB.'TET2';
 248 :          'FINSI' ;
 249 :          'SI' WTAB.'PHASE';
 250 :            estim.'PROPORTIONS_PHASES'= WTAB.'PROPPHAS';  
 251 :          'FINSI';                            
 252 :          'SI' WTAB.'FOR_DIFF' ;
 253 :            estim.'CONCENTRATIONS'=WTAB.'CO2';        
 254 :          'FINSI' ;
 255 : 
 256 : *** Reevaluation des données du calcul dépendant de la température    
 257 :          'SI' WTAB.'PROCEDURE_REAC_THER' ;     
 258 :             REEV_THE PRECED  1 ;                                 
 259 :          'FINSI' ;                                                        
 260 :      
 261 : *-----convergence mecanique thermiqUe : reprise configuration  ------   
 262 : *---------- du pas precedent pour refaire la mécanique  -------------  
 263 :            FORM GE0_DEB;
 264 :          'FINSI' ;
 265 : 
 266 : *################## fin du calcul d'un pas thermique #################   
 267 : 
 268 : *#################### calcul d'un pas si mecanique ###################  
 269 :       'SI' WTAB.'FOR_MECA' ;
 270 :          'MESSAGE' ' Numero du pas : ' IPAS                  
 271 : '  Indice d evolution : ' ICHG ' -> temps :' TI;
 272 : 
 273 : *--------------------- calcul de la temperature ---------------------
 274 :          'SI' WTAB.'FOR_THER';
 275 :                  THTA1='TABLE';THTA2='TABLE';
 276 :                  THTA1.1=TEMP0;THTA1.2=TI;
 277 :                  THTA2.1= conti.'TEMPERATURES' 'ENLE' 'LX';
 278 :                  THTA2.2= estim.'TEMPERATURES' 'ENLE' 'LX' ;
 279 :                  CHTH='CHAR' 'T' THTA1 THTA2;
 280 :                  CHASANST= WTAB.'CHARGEMENT' 'ENLE' 'T';
 281 :                  WTAB.'CHARGEMENT'= CHASANST 'ET' CHTH;
 282 :          'FINSI';
 283 :          'SI' (WTAB.'CHAR_THE' );
 284 :              WTAB.'TET2' = 'TIRE' (WTAB.'CHARGEMENT') 'T   ' TI;
 285 :          'FINSI';
 286 : *----------------------- nouveau chargement ----------------------   
 287 :  
 288 :          'SI' ('EXISTE' (WTAB.'CHARGEMENT') 'MECA');                  
 289 :             F2 = 'TIRE' (WTAB.'CHARGEMENT') 'MECA' TI;                
 290 :             TYP_2 = 'TYPE' F2;                                          
 291 :             'SI' ('NEG' TYP_2 'CHPOINT ');                              
 292 :  'MESS' '*** Erreur dans la definition du chargement ( MECA ) ***';     
 293 :  'ERRE' '*** Le type du champ n est pas CHPOINT ***';                   
 294 :             'FINSI';
 295 :          'SINON';
 296 :             F2= ('ZERO' WTAB.'MO_TOT' 'FORCES' )
 297 :                  'CHAN' WTAB.'MO_TOT' 'CHPO';      
 298 :          'FINSI';                                
 299 : 
 300 :            'SI' ('EXISTE' (WTAB.'CHARGEMENT') 'FORC');
 301 :             F2_FOR = 'TIRE' (WTAB.'CHARGEMENT') 'FORC' TI;                
 302 :             TYP_2 = 'TYPE' F2_FOR;                                          
 303 :             'SI' ('NEG' TYP_2 'CHPOINT ');                              
 304 :  'MESS' '*** Erreur dans la definition du chargement ( FORC ) ***';     
 305 :  'ERRE' '*** Le type du champ n est pas CHPOINT ***';                   
 306 :             'FINSI';
 307 :             F2 = F2 + F2_FOR ;
 308 :           'FINSI';
 309 : 
 310 : *----------- Calcul du champ de materiau a la fin du pas -------
 311 :       'SI' WTAB.'MATVAR' ;
 312 : *      mess 'tctc on passe dans matvar';
 313 :           MCHC= PAS_ETAT PRECED  TI;  
 314 :           MMMM= PAS_MATE PRECED  MCHC;
 315 :       'SINON';
 316 : *      mess 'tctc on passe pas dans matvar';
 317 :           MMMM= WTAB.'CARACTERISTIQUES';                                        
 318 :       'FINSI'; 
 319 :       'SI' WTAB.'MODAL';
 320 :            'SI' ('EXISTE' WTAB.'MAT0' 'MAIB') ;
 321 :                 LMOMOST = 'MOTS' 'RICR' 'MAIA' 'MAIB' 'MACR' 'AMCR' ;
 322 :                 MMMM = MMMM 'ET'  ('EXCO' WTAB.'MAT0' LMOMOST 'NOID');
 323 :            'FINSI' ;
 324 :       'FINSI' ; 
 325 :        WTAB.'MAT1'=MMMM;  
 326 :       'SI' ('EGA' WTAB.'MAT0' 'INCONNU'); WTAB.'MAT0'=MMMM; 'FINSI';            
 327 : *----- Caracteristiques initiales en cas de grands deplacements ----- 
 328 :       'SI' WTAB.'ITCAR'; 
 329 :             'SI'  ('EGA' WTAB.'CARA'  'INCONNU');
 330 :                   WTAB.'CARA' = WTAB.'MAT0';
 331 :            'FINSI';                                 
 332 :             MECAR1 = 'EXCO' MOCA MMMM 'NOID';                           
 333 :             MECAR1 = 'CHAN' 'TYPE' MECAR1 'CARACTERISTIQUES';           
 334 :             MECAR2 = 'EXCO' MOCA WTAB.'CARA' 'NOID';                
 335 :             MECAR2 = 'CHAN' 'TYPE' MECAR2 'CARACTERISTIQUES';           
 336 :             MMMM = MMMM - MECAR1 + MECAR2;                              
 337 :       'FINSI';                                                                  
 338 : *--------------- Si il existe des deplacements imposes --------------   
 339 :          'SI' ('EXISTE' (WTAB.'CHARGEMENT') 'DIMP');                  
 340 :              F2_DEP = 'TIRE' (WTAB.'CHARGEMENT') 'DIMP' TI;                     
 341 :              F2 = F2 + F2_DEP;                                           
 342 :          'FINSI';                                                              
 343 : *---------------- si chargement deformation actualisation DEFO1 ------  
 344 :          'SI' WTAB.'CHAR_DEFI' ;           
 345 :              WTAB.'DEFOR2' = 'TIRE' WTAB.'CHARGEMENT' 'DEFI' TI;    
 346 :          'FINSI';                                
 347 :                                                                                 
 348 : *--------- consolidation  : preparation du second membre -------------          
 349 :         'SI' ( WTAB.'CONSOLIDATION' );                                
 350 :             FF = BSIGMA WTAB.'MOD_POR' 
 351 :                  ('REDU' WTAB.'MOD_POR' conti.'CONTRAINTES');                
 352 :             FF4 = 'EXCO'  WTAB.'MOT_POR' FF
 353 :                     WTAB.'MOT_POR' 'NOID' 'NATURE' 'DISCRET' ;
 354 :             WTAB.'FREA1' =  FF4   ; 'DETR' FF ;                   
 355 :             F2 = F2 + FF4  ;    
 356 : *          ---- traitement des flux si besoin ----                    
 357 :            'SI' ( 'EXIS' WTAB.'CHARGEMENT' 'FLUX' ) ;               
 358 :                FLUXT0= 'TIRE' WTAB.'CHARGEMENT' 'FLUX' TEMP0;       
 359 :                FLUXTI= 'TIRE' WTAB.'CHARGEMENT' 'FLUX' TI  ;        
 360 :                FLUXT = ((1 - WTAB.'TETA')*FLUXT0 ) +                  
 361 :                             (WTAB.'TETA' *FLUXTI ) ;                  
 362 :                FACFLU =  -1. * WTAB.'DT'; 
 363 :                F2 = F2 + ( FACFLU * FLUXT) ; 
 364 :                'DETR' FLUXT ; 'DETR' FLUXT0; 'DETR' FLUXTI;             
 365 :            'FINSI' ;                                                    
 366 :         'FINSI';                                                                
 367 :          PRECED.'ZFEXT2'=F2;                                                    
 368 : 
 369 :                                                                       
 370 : ************************************************************************
 371 : ****************    APPEL A UNPAS       ********************************
 372 : ************************************************************************
 373 :          'MENA' ;      
 374 :            TT = UNPAS  PRECED;  
 375 :                                                 
 376 : *---------- retour à la configuration initiale -------------------
 377 :          'SI'   WTAB.'GRANDS_DEPLACEMENTS' ;                          
 378 :             'FORM'  WTAB.'FOR0';                                      
 379 :          'FINSI';                 
 380 :          'SI' WTAB.'FEFP_FORMULATION' ;                                 
 381 :             'FORM'  WTAB.'FOR0';                                        
 382 :          'FINSI';                                                         
 383 :                                                                         
 384 : *--------  test si on a convergé 
 385 :           WTAB.'CONV' = TT.'CONV';                                    
 386 :      'SI' ('NON' TT.'CONV' 'ET' ('NON' WTAB.'CONVERGENCE_FORCEE'));   
 387 : * en dynamique et en poreux on garde le PRECED.FREA1 du dernier pas     
 388 : * converge (dans le cas ou on voudrait continuer le calcul)             
 389 : *       'SI' WTAB.'DYNAMIQUE' ; WTAB.'FREA1' = F1 ; 'FINSI';        
 390 : *       'SI' WTAB.'CONSOLIDATION' ;WTAB.'FREA1' = FF1 ; 'FINSI';
 391 :          'ERREUR' 997 ;                                                 
 392 :      'FINSI';                                                           
 393 : 
 394 : * Remplissage de la table ESTIMATION : champs en fin de pas
 395 :      DEP0= conti.'DEPLACEMENTS';                                     
 396 : *     DEP = ENLEVER DEP0 'LX';                                 
 397 :      estim.'DEPLACEMENTS' = TT.'ZU1' ;
 398 : *     'DETRUIRE' DEP;
 399 :      estim.'CONTRAINTES' = TT.'SIGF';
 400 :      estim.'DFGRAD'=TT.'DFGRAD';
 401 :      'SI' WTAB.'IPLAVI' ;                   
 402 :        estim.'VARIABLES_INTERNES'        = TT.'VARF';
 403 :        estim.'DEFORMATIONS_INELASTIQUES' = TT.'DFPF';
 404 :        estim.'DEFORMATIONS'              = TT.'DEFF';
 405 :      'FINSI' ;
 406 :      'SI' WTAB.'GRANDS_DEPLACEMENTS' ;
 407 :        estim.'FOR' = TT.'FOR' ;
 408 :      'FINSI' ;
 409 :      'SI'  WTAB . 'DYNAMIQUE' ;                    
 410 :         estim.'VITESSES'      = TT.'VITI' ;
 411 :         estim.'ACCELERATIONS' = TT.'ACCEI' ;
 412 :      'FINSI';
 413 :      'SI'  WTAB .'ITCAR';
 414 :          estim.'CARA_ACTU' = TT.'CARA' ;
 415 :      'FINSI';           
 416 : *** Reevaluation des données du calcul dépendant de la mecanique  
 417 :      'SI' WTAB.'PROCEDURE_REAC_MECA' ;                       
 418 :            REEV_MEC PRECED   1     ;
 419 :       'FINSI' ;     
 420 : 
 421 :    'FINSI';           
 422 :          
 423 : *################### fin du calcul d'un pas mecanique ################
 424 : *                                        
 425 : ***                                                                     
 426 : *** Test de la convergence mecanique thermique                          
 427 : ***                   
 428 :     'SI' WTAB.'CONVERGENCE_MEC_THE' ;                               
 429 : *      je cherche la convergence thermo-mecanique : je dois au moins
 430 : *      calculer deux fois mon probleme
 431 :       'SI' (I_BOTH > 1) ;                                              
 432 : *       Test sur toutes les composantes (notamment, si DIFFUSION)
 433 :         CHT1     = WTAB . 'THER_COURANT' ;
 434 :         DUABS2   = 'ABS' (WTAB . 'THER_COURANTP' - CHT1) ;
 435 :         CRICOH1  = 0. ;
 436 :         NBINCO1  = 'DIME' WTAB . 'INCO_TOT' ;
 437 :         'REPE' BINCO1 NBINCO1 ;
 438 :           LINCOI1  = 'MOTS' ('EXTR' WTAB . 'INCO_TOT' &BINCO1) ;
 439 :           MDUABSI1 = 'MAXI' DUABS2 'AVEC' LINCOI1 ;
 440 :           NORMI1   = 'MAXI' 'ABS' CHT1 'AVEC' LINCOI1 ;
 441 :           'SI' (NORMI1 '<EG' (1.E-14 * MDUABSI1)) ;
 442 :             NORMI1   = 1. ;
 443 :           'FINS' ;
 444 :           CRICOHI1 = MDUABSI1 / NORMI1 ;
 445 :           'SI' (CRICOHI1 '>' CRICOH1) ;
 446 :             CRICOH1  = CRICOHI1 ;
 447 :          'FINS' ;
 448 :         'FIN' BINCO1 ;
 449 :         WTAB.'CONV_THMEC' = CRICOH1 '<' (WTAB . 'CRITERE_COHERENCE') ;
 450 : *       Fin de boucle Si ne converge Pas
 451 :         'SI'('NON' WTAB.'CONV_THMEC') ;   
 452 :           'SI' (I_BOTH >EG WTAB.'BOU_METH'); 
 453 :             'MESS' 'PAS DE COHERENCE TROUVEE MECANIQUE THERMIQUE' ; 
 454 :             'ERREUR' 999;                                         
 455 :           'FINSI' ;                                                  
 456 :         'FINSI' ;                                                     
 457 :       'SINON' ;                                                        
 458 : *       je suis sur la premiere boucle de convergence thermomecanique 
 459 :         WTAB.'CONV_THMEC' = FAUX ;                                    
 460 :       'FINSI' ;                                                        
 461 : *     THER_COURANTPrecedent dans WTAB pour test CONVERGENCE_MEC_THE
 462 :        WTAB . 'THER_COURANTP' = WTAB . 'THER_COURANT' ;
 463 :     'SINON' ;                                                           
 464 : *     ici je ne cherche pas la convergence thermomecanique             
 465 :       WTAB.'CONV_THMEC' = VRAI ;                                       
 466 :     'FINSI' ;                                                           
 467 : 
 468 :     'SI' (WTAB.'CONV_THMEC') ;                                          
 469 :        'QUITTER' BO_BOTH ;                                              
 470 :     'FINSI' ;                                                           
 471 :                                                                         
 472 :     'SI' ('NEG' ('TYPE'  GE0_DEB) 'MOT') ;                                
 473 :       FORME GE0_DEB;                                                    
 474 :     'FINSI' ;                                                           
 475 :                                                                         
 476 :   'FIN' BO_BOTH ;                                                         
 477 :                                                                         
 478 : *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 479 : *++++++++++++++++ fin de boucle interne de convergence mec_ther ++++++++
 480 : *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 481 : 
 482 : *--------------- Préparation du pas suivant ------------------------    
 483 : *----------------  pour la thermique -------------------------------    
 484 :       'SI' WTAB.'FOR_THER';                                                 
 485 : *Avant   WTAB.'TET2' = CHTER.'INITIAL(2)' ;                             
 486 :          WTAB.'TET2' = estim.'TEMPERATURES' ;                           
 487 :          WTAB.'TET1'=WTAB.'TET2';                                               
 488 :          'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'NONLINEAIRE');         
 489 :             'SI' WTAB.'RAYO' ;                                          
 490 :                WTAB.'RAYONNEMENT' = CHTER.'RAYONNEMENT' ;               
 491 :             'FINSI'              ;                                      
 492 :             'SI' ('NEG' WTAB.'RIBLO_T' 'INCONNU');                      
 493 :                WTAB.'RIBLO_T'       = CHTER.'RIBLO_T'       ;         
 494 :                WTAB.'LISEA_T'       = CHTER.'LISEA_T'       ;         
 495 :             'FINSI' ;                                                   
 496 :             'SI' WTAB.'PHASE' ;                                     
 497 :                WTAB.'PROPPHAS'    = CHTER.'PROPPHAS'    ;             
 498 :             'FINSI' ;                                                   
 499 :          'FINSI' ;               
 500 :          'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'DUPONT');            
 501 :             WTAB.'TET0' = WTAB.'TET1';                  
 502 :             WTAB.'VIEUXPAS'   = WTAB.'NOUV_PAS';  
 503 :             WTAB.'RELAXATION_DUPONT' = CHTER.'RELAXATION_DUPONT';     
 504 :             'SI' WTAB.'RAYO' ;                                      
 505 :                WTAB.'RAYONNEMENT' = CHTER.'RAYONNEMENT' ;             
 506 :             'FINSI' ;                           
 507 :             'SI' ('EXISTE' CHTER  'INITIAL(1)') ;                         
 508 :                WTAB.'TET1' = CHTER.'INITIAL(1)';               
 509 :             'FINSI' ;       
 510 :          'FINSI';         
 511 :       'FINSI' ;                                                         
 512 :                                                                         
 513 : * SP DIFF :
 514 : *------------- preparation pas suivant pour la diffusion -------------*
 515 :       'SI' WTAB.'FOR_DIFF';
 516 :         WTAB.'CO2' = estim.'CONCENTRATIONS' ;
 517 :       'FINSI' ;
 518 :                                                                         
 519 : *------------ préparation pas suivant pour la  mecanique -------------*
 520 :       'SI' WTAB.'FOR_MECA' ;
 521 :          'SI' ('EXISTE' TT 'SECOND_MEMBRE');                              
 522 :            WTAB . 'SECOND_MEMBRE' = TT . 'SECOND_MEMBRE' ;            
 523 :          'FINSI' ;                                                              
 524 :          'SI' ('EXISTE' TT 'SUCCES');                                     
 525 :            WTAB . 'SUCCES' = TT . 'SUCCES' ;                          
 526 :          'FINSI' ;                                                              
 527 :          'SI' ('EXISTE' TT 'AUTOCOEF');                                   
 528 :            WTAB . 'AUTOCOEF' = TT . 'AUTOCOEF' ;                      
 529 :          'FINSI' ;                                                      
 530 :          'SI' ('EXISTE' TT 'AUTOREDU');                                   
 531 :            WTAB . 'AUTOREDU' = TT . 'AUTOREDU' ;                      
 532 :          'FINSI' ;                                                      
 533 :          'SI' ('EXISTE' TT 'AUTORED1');                                   
 534 :            WTAB . 'AUTORED1' = TT . 'AUTORED1' ;                      
 535 :          'FINSI' ;                                                        
 536 :          'SI' ('EXISTE' TT 'RIBLO_M');                                    
 537 :            WTAB . 'RIBLO_M' = TT . 'RIBLO_M' ;                        
 538 :            WTAB . 'LISEA_M' = TT . 'LISEA_M' ;                        
 539 :          'FINSI' ;                                                        
 540 :          'SI' ('EXISTE' TT 'INCREMENT');                                  
 541 :            WTAB . 'INCREMENT' = TT . 'INCREMENT' ;                    
 542 :          'FINSI' ;                                                        
 543 :          'SI' ('EXISTE' TT 'INITEMPS');                                   
 544 :            WTAB . 'INITEMPS' = TT . 'INITEMPS' ;                      
 545 :          'FINSI' ;                                                        
 546 :          'SI' ('EXISTE' TT 'DT');                                         
 547 :            WTAB . 'DT' = TT . 'DT' ;                                  
 548 :          'FINSI' ;                                                        
 549 :          'SI' ('EXISTE' TT 'NBPLAS');                                     
 550 :            WTAB . 'NBPLAS' = TT . 'NBPLAS' ;                          
 551 :          'FINSI' ;                                                        
 552 :          'SI' ('EXISTE' TT 'NOMBRE_ITERATIONS');                          
 553 :            WTAB . 'NOMBRE_ITERATIONS' = TT . 'NOMBRE_ITERATIONS' ;    
 554 :          'FINSI' ;                                                        
 555 :          'SI' ('EXISTE' TT 'FFROT');                                      
 556 :            WTAB . 'FFROT' = TT . 'FFROT' ;                            
 557 :          'FINSI' ;                                                        
 558 :          'SI' ('EXISTE' TT 'RESIDU');                                     
 559 :            WTAB . 'RESIDU' = TT . 'RESIDU' ;                          
 560 :          'FINSI' ;                                                        
 561 :          'SI' ('EXISTE' TT 'FNONL');                                      
 562 :            WTAB . 'FNONL' = TT . 'FNONL' ;                            
 563 :          'FINSI' ;                                                        
 564 :          'SI' ('EXISTE' TT 'DTPREC');                                     
 565 :            WTAB . 'DTPREC' = TT . 'DTPREC' ;                          
 566 :          'FINSI' ;                                                        
 567 : *  Modification de WTAB.'TET2' suite a appel a UNPAS (?)
 568 :          'SI' ('EXISTE' TT 'TET2');                                       
 569 :            WTAB . 'TET2' = TT . 'TET2' ;                              
 570 :          'FINSI' ;                                                        
 571 :          'SI' ('EXISTE' TT 'XDENO');                                      
 572 :            WTAB . 'XDENO'  = TT . 'XDENO'  ;                          
 573 :          'FINSI' ;                                                        
 574 :          'SI' ('EXISTE' TT 'XDENOM');                                     
 575 :            WTAB . 'XDENOM' = TT . 'XDENOM' ;                          
 576 :          'FINSI' ;                                                        
 577 :          'SI' ('EXISTE' TT 'LASTKTAN');                                   
 578 :            WTAB . 'LASTKTAN' = TT . 'LASTKTAN' ;                      
 579 :          'FINSI' ; 
 580 :          'SI' ('EXISTE' TT 'DFGRAD');  
 581 :            WTAB . 'DFGRAD'=  TT .'DFGRAD';
 582 :          'FINSI' ; 
 583 :          'SI' ('EXIS' TT 'ETHER2');
 584 :             WTAB.'ETHER1'= TT.'ETHER2';
 585 :             WTAB.'ETHER2'= TT.'ETHER2';
 586 :          'FINSI';
 587 :          'SI' ('EXIS' TT 'MSRTHER2');
 588 :             WTAB.'MSRTHER1'= TT.'MSRTHER2';
 589 :             WTAB.'MSRTHER2'= TT.'MSRTHER2';
 590 :          'FINSI';
 591 :          'SI' ('EXIS' TT 'DEFOR2');
 592 :             WTAB.'DEFOR1'= TT.'DEFOR2';
 593 :             WTAB.'DEFOR2'= TT.'DEFOR2';
 594 :          'FINSI';
 595 :          'SI'('EXIS' TT 'ETAT2');
 596 :             WTAB.'ETAT1'= TT.'ETAT2';
 597 :          'FINSI';
 598 :          'SI'('EXIS' TT 'MAT2');
 599 :             WTAB.'MAT1'=TT.'MAT2';
 600 :             WTAB.'MAT2'=TT.'MAT2';
 601 :          'FINSI';
 602 :                                                                 
 603 : * fin des reactualisations.                                                     
 604 : *--------------------------- deplacement ------------------------------ 
 605 :          TT.'DEPTOT' = estim.'DEPLACEMENTS' ;                              
 606 : *-------------------- forces de reaction ------------------------------         
 607 :          TT.'REAC'= 'REAC' TT.'DEPTOT' WTAB.'CLIM';             
 608 :          estim.'REACTIONS' = TT.'REAC' ;
 609 : *------------------ deformation d'origine thermique ------------------          
 610 :          'SI' WTAB.'CHAR_THE';                                        
 611 :             WTAB.'ETHER2' = TT.'ETHER2';                              
 612 :             'SI' WTAB.'POR1' ;                                                 
 613 :                 WTAB.'MSRTHER2' = TT.'MSRTHER2';                      
 614 :             'FINSI';                                                    
 615 :          'FINSI';                                                               
 616 : *------- en dynamique : vitesse, forces de reactions, operateur ------- 
 617 :                                                                         
 618 :          'SI' WTAB . 'DYNAMIQUE' ;                                    
 619 :             'SI' WTAB . 'LIAISON_PERSISTANTE' ;                       
 620 : * corection des vitesses pour avoir des vitesses relatives nulles       
 621 : * aux points qui sont en contact                                        
 622 :                 TT.'VITI' =  TT.'VITI' +  TT.'VAUX' ;                   
 623 :             'SINON' ;                                                   
 624 : * forces d'acceleration et d'amortissement à la fin du pas    *         
 625 :              WTAB.'FREA1'  = TT.'FOPL' - TT.'REAC';                             
 626 : *     en cas d'appuis unilateraux avec choc elastique essai de corriger 
 627 : *     les vitesses fournies par le schéma    
 628 :                                        
 629 :             TT.'VITI'= VITEUNIL TT.'ZRAIDV' WTAB.'MASSE' TT.'VITI'            
 630 :          tt.'DEPT'   DEP0 WTAB.'DT'  WTAB.'SECOND_MEMBRE' WTAB;           
 631 :            'SI' ( 'EXIS' WTAB 'RATE_VITEUNIL');                       
 632 :            'ERREUR' 'Probleme dans VITEUNIL' ; 'FINSI';                         
 633 :             'FINSI' ;                                                   
 634 :             'SI' ( 'NEG' WTAB.'REAPREC' 'INCONNU');                          
 635 :              'SI' ('EGA' ('TYPE' (EXTR TT.'REAC' 'MAIL')) 'MAILLAGE');          
 636 :                reacdif='REDU' WTAB.'REAPREC' (EXTR TT.'REAC' 'MAIL');     
 637 :                TT.'REAC'=  TT.'REAC' - REACDIF;                            
 638 :              'FINSI' ;                            
 639 :               WTAB.'REAPREC'=TT.'REAC';                                
 640 :             'SINON';                                                    
 641 :                WTAB . 'REAPREC'= TT.'REAC';                            
 642 :             'FINSI';                                                            
 643 :             estim.'VITESSES'  = TT.'VITI' ;
 644 :             estim.'REACTIONS' = TT.'REAC' ;
 645 :          'FINSI';                                                       
 646 :                                                                         
 647 : *---------- en consolidation : operateur ------------------------------ 
 648 :                                                                         
 649 :          'SI' WTAB . 'CONSOLIDATION' ;                                
 650 :              WTAB.'OPERATEUR'  = ROP;                                 
 651 :          'FINSI';                                                       
 652 :                                                                         
 653 : *-------------------------- configuration ----------------------------- 
 654 :                                                                         
 655 :          'SI'   WTAB.'GRANDS_DEPLACEMENTS' ;                                    
 656 :             WTAB.'RECALCUL'=VRAI;GE0_DEB = TT.'FOR' ;                           
 657 :             'SI' WTAB.'ITCAR' ;                                                
 658 :                WTAB.'CARA' = TT.'CARA' ;                              
 659 :             'FINSI' ;                                                   
 660 :          'FINSI'; 
 661 :          'FORM' WTAB.'FOR0';                                                  
 662 :                                                                            
 663 : ***********************************************************************
 664 :          'SI' ('ET' (WTAB.'FEFP_FORMULATION')                             
 665 :                 (WTAB.'UPDATE_LAGRANGIAN')) ;                         
 666 : * tc            'SI' ( 'NEG' WTAB.'FOR'  'INCONNU'); DETR GEOM1; 'FINSI';
 667 :             GE0_DEB = TT.'FOR' ; WTAB.'RECALCUL'=VRAI;                       
 668 :          'FINSI';                                                
 669 : ************************************************************************
 670 :                                                                         
 671 : *--------------------- destruction de l operateur ---------------------- 
 672 :                                                                         
 673 :          'SI' (WTAB . 'RECADET') ;                                              
 674 : *           'DETR' RH 'ELEM';                                           
 675 :             'OUBLIER'   ROP;                                            
 676 :          'FINSI';                                                       
 677 :                                                          
 678 : *----------------------------- temps initial -------------------------- 
 679 :               DT2 =( TI - TEMP0)/10000.;                                
 680 :          'SI' (WTAB . 'AUTOMATIQUE' 'OU' ('NON' WTAB.CONV));
 681 :               TEMP0 = ( TI - TEMP0) *  WTAB.'AUTOCOEF' + TEMP0;       
 682 :        'MESS' ' Temps effectivement calcule et non convergé : ' TEMP0;
 683 :               WTAB.'TEMPS0' = TEMP0;                                  
 684 :          'SINON';                                                       
 685 :               TEMP0=TI;                                                 
 686 :               WTAB.'TEMPS0' = TEMP0;                                  
 687 :          'FINSI';
 688 : 
 689 : *----------------- Appel a une procedure personnelle -------------------
 690 :                                                                          
 691 :          'SI' (WTAB.'PROCEDURE_PERSO1');              
 692 :             PRECED.'PERSO1_APPEL' = 2 ;
 693 :             PERSO1 PRECED;                                              
 694 :             'SI' ('EXIS' PRECED 'ARRET') ;
 695 :               WTAB . 'ARRET' = PRECED . 'ARRET' ;
 696 :             'FINSI' ;
 697 :             TEMP0 =  WTAB.'TEMPS0' ;                                  
 698 :          'FINSI';                                         
 699 : *----------------- On redéfinit WTAB.'CHARGEMENT_I' ------------------
 700 :          'SI'   WTAB.'CONVERGENCE_MEC_THE' ;                                    
 701 :            WTAB.'CHARGEMENT_I' = WTAB.'CHARGEMENT' ;
 702 :          'FINSI';  
 703 :       'FINSI';
 704 :                                                              
 705 : *++++++++++++++++++ fin preparation pas suivant mecanique +++++  
 706 : *##################  Sauvegarde ###############################
 707 :       'SI' ('NON' WTAB.'FOR_MECA') ;
 708 :          DT2 =( TI - TEMP0)/10000.;                                     
 709 :          TEMP0=TI;                                         
 710 :          WTAB.'TEMPS0' = TEMP0;
 711 :          TT = 'TABLE' ;
 712 :       'FINSI'; 
 713 : * pour ne pas sauvegarder la matrice de raideur si on doit la recalculer
 714 : 'SI' ('EXIS' WTAB 'RRRR') ;
 715 : 'SI'  WTAB.'RECARI';
 716 :    WTAB2= 'ENLEVER' WTAB 'RRRR';     
 717 :    PRECED .'WTABLE'= WTAB2; 
 718 :    WTAB=WTAB2; 
 719 :    'SI' ( 'EXIS' estim 'FOR') ;
 720 :    estim2= 'ENLEVER' estim 'FOR';
 721 :    estim= estim2;  PRECED.'ESTIMATION'=estim;
 722 :    'FINSI';
 723 : 'FINSI'; 'FINSI';
 724 : *-- remplissage de la table de continuation et des tables de resultats  
 725 : *-- s'il faut garder les résultats, sauvegarde incrementale et 
 726 : *-- fantomisation si économique
 727 :     ISAUV = PAS_RESU  TEMP0  iauto  PRECED  TT ;
 728 : *******************************************                             
 729 : *****   cas du pilotage automatique *******                             
 730 : *******************************************                             
 731 :                                                                         
 732 :          'SI' WTAB . 'AUTOMATIQUE'; IAUTO=IAUTO+1;                    
 733 :             'SI' ((WTAB . 'AUTOCOEF'   EGA  0.9999999D0) 'OU'         
 734 :                   (TEMP0 '>EG' TI)) ;                                   
 735 :                   TEMP0=TI;                                             
 736 :                 'MESS' ' Objectif atteint ';                              
 737 :                 'MESS' ' ';                                               
 738 :                 WTAB.'AUTODEUX' = FAUX ;                              
 739 :                 WTAB.AUTORED1 = 0 ;                                   
 740 :                 WTAB.AUTOREDU = 1. ;                                  
 741 :                 IAUTO=1;                                                
 742 :             'SINON';                                                    
 743 :                 'MESS' ' Objectif non atteint: On recommence';            
 744 :                 'MESS' '  ';                                              
 745 :                 'SI' ( IAUTO >EG WTAB.'AUTOPAS'); 
 746 :                  'ERREUR' 1000;                    
 747 : *                'MESS' 'Pilotage non convergé  après ' IAUTO ' pas.';          
 748 :                 'FINSI';                                                
 749 :                 WTAB.'AUTODEUX'=VRAI;ICHG=ICHG - 1;                   
 750 :             'FINSI';                                                    
 751 :          'FINSI';  
 752 : *         
 753 : 'SI'(WTAB.'CHAR_THE' 'OU' WTAB.'FOR_THER');
 754 :        WTAB.'TET1'=WTAB.'TET2';
 755 :       'SI' WTAB.'FOR_MECA';WTAB.'ETHER1'=WTAB.'ETHER2';'FINSI';
 756 :       'SI' WTAB.'POR1'; WTAB.'MSRTHER1'=WTAB.'MSRTHER2';'FINSI';
 757 : 'FINSI';
 758 : 'SI' WTAB.'CHAR_DEFI' ;  WTAB.'DEFOR1'=WTAB.'DEFOR2';'FINSI';
 759 : 'SI' WTAB.'FOR_DIFF' ; WTAB.'CO1'=WTAB.'CO2'; 'FINSI' ;                         
 760 : ************************************************************************
 761 : ******  cas de la convergence forcee                                    
 762 : ************************************************************************
 763 : 'SI' WTAB.'PAS_AJUSTE';                                               
 764 :  'SI' ((TI < TIV) 'OU' ('NON' WTAB.'CONV')); ICHG=ICHG-1;'FINSI';               
 765 : 'FINSI';                                                                
 766 : 'SI'  WTAB.'ARRET';                                                   
 767 :    'QUITTER' BEXTERN;                                                   
 768 : 'FINSI';                                                                
 769 : ************************************************************************
 770 : *************** FIN DE LA BOUCLE SUR LES PAS DE TEMPS ******************
 771 : ************************************************************************
 772 : 'FIN'  BEXTERN;                                                         
 773 : ************************************************************************
 774 :                                                          
 775 :  'SI' ('NEG' WTAB.'AMORTISSEMENT' 'INCONNU');                               
 776 :      WTAB.'AMORTISSEMENT' = TOTO ;                                    
 777 :  'FINSI';                                                               
 778 :                                                                         
 779 :  'SI' ('NEG' ('TYPE'  GE0_DEB) 'MOT') ;                                   
 780 :      'DETR' GE0_DEB;                                                    
 781 :  'FINSI' ;                                                              
 782 :                                                                         
 783 : * on tue WTAB.MAT1 s'il existe car il peut etre tres gourmand en place
 784 :  WTAB.'MAT1' = 'MOT' 'INCONNU';    
 785 :  'MESS' ' ';                                                            
 786 :  'MESS'                                                                 
 787 : '------------------- FIN DE LA PROCEDURE PASAPAS ---------------------';
 788 : 'SAUTER' 1 'LIGNE';                                                     
 789 : *                                                                       
 790 : ************************************************************************
 791 : * 
 792 : 'SI' ('EXIS' WTAB 'RRRR') ; 
 793 : * pou forcer le calcul de la rigidite si on  rappele  pasapas 
 794 :    WTAB1= 'ENLEVER' WTAB 'RRRR';  
 795 :     PRECED .'WTABLE'= WTAB1;   
 796 : 'FINSI';                                                            
 797 : 'FINPROC' PRECED ;  
 798 :  
 799 :  
 800 :  
 801 :  
 802 :  
 803 :  
 804 :  
 805 :  
 806 :  

© Cast3M 2003 - All rights reserved.
Disclaimer