Download unilater.procedur

Back to the list

   1 : * UNILATER  PROCEDUR  PV        13/09/30    21:15:04     7829           
   2 : *  MODIF JUILLET 1987 POUR PERMETTRE DES JEUX DANS LES LES 2 DIRECTIONS         
   3 : *                                                                               
   4 : *  CETTE PROCEDURE EST APPELER PAR RESOU                                        
   5 : *  LES ARGUMENTS SONT : MATAB TABLE CONTENANT LES INFORMATIONS UTILES           
   6 : *                         C'EST A DIRE RRR BBB STAT SUP RITOU ET LISEA          
   7 : *                       FFF   FORCE A METTRE AU SECOND MEMBRE                   
   8 : *                                                                               
   9 : *           RRR   MATRICE DE RIGIDITE SANS LES APPUIS                           
  10 : *           BBB   MATRICE DE RIGIDITE DES APPUIS                                
  11 : *           STAT  LOGIQUE INDIQUANT SI C'EST LE PREMIER PASSAGE                 
  12 : *           SUP   SUPER ELEMENT EQUIVALENT                                      
  13 : *           RITOU DERNIERE RAIDEUR UTILISEE DANS LA RESOLUTION                  
  14 : *           LISEA DESCRIPTEUR DES APPUIS COURAMMENT ACTIFS                      
  15 : *                                                                               
  16 :   DEBPROCEDURE  UNILATER                                                       
  17 :   MATAB*'TABLE'     FFF*'CHPOINT'   MCLE/'MOT' FL/'CHPOINT';
  18 : *
  19 : * si il y a lieu,nbnegs est le nombre de multiplicateurs de lagrange contenus da
  20 : nbnegs = 0; nbnegt = 0;
  21 : 'SI' ('EGA' 'INIB' MCLE);
  22 :    'ARGU' TEMP*'RIGIDITE';  MATAB.7 = TEMP;
  23 :    'ARGU' TEMP*'LISTENTI';  MATAB.6 = TEMP;
  24 :    MATAB.'OK' = VRAI ;
  25 : 'FINSI';
  26 : *                                                                               
  27 : *RRR =  MATAB.1    ;                                                            
  28 :  BBB =  MATAB.2    ;                                                            
  29 : *
  30 : 'SI' ('EGA' ('TYPE' FL) 'CHPOINT ');
  31 :      chp_z = BBB * FL ;  FFF = FFF + chp_z ;
  32 :      'DETR' chp_z ;
  33 : 'FINSI';
  34 : *                                                                               
  35 :  STAT = MATAB.3    ;                                                            
  36 : *                                                                               
  37 : 'SI'  STAT ; 
  38 :     'SI' MATAB.'VRAISUP';                                                       
  39 :         SUP = MATAB.4 ;  
  40 :     'SINON';
  41 :        RISUP= MATAB.4 ;
  42 :     'FINSI';                                        
  43 : 'SINON'    ;                                                                   
  44 : *                                                                               
  45 : *   CALCUL DU SUPER ELEMENT  SI BESOIN                                          
  46 : *  
  47 :     MMM = 'EXTR' MATAB.1 'MAILLAGE';MMB=  'EXTR' BBB 'MAILLAGE';
  48 :     MMU = MMM 'ELEM' 'APPU' 'LARG' MMB;
  49 :     NTOT= 'NBEL' MMM ;
  50 :     NAPP='NBEL' MMU;
  51 : *   MESS ' unilater ntot napp ' NTOT NAPP ;
  52 :     'SI' (((NAPP * 2)  > NTOT ) 'OU' MATAB.'NSYM' );
  53 : * mess ' unilater pas de super element' napp ntot;
  54 :        RISUP= MATAB.1 ;
  55 :        MATAB.4=MATAB.1 ;
  56 :        MATAB.'VRAISUP'=FAUX;
  57 :    'SINON';                                                                     
  58 : * mess ' on calcule le super element';
  59 :    SUP = 'SUPER' 'RIGI' MATAB.1  BBB ;                                       
  60 :       MATAB.4  =  SUP ;                                                         
  61 :       MATAB.'VRAISUP'=VRAI;     
  62 :    'FINSI';                                            
  63 : 'FINSI' ;
  64 : *                                                                               
  65 : ISUP=MATAB.'VRAISUP'  ;    
  66 : MATAB.3=VRAI;                                                                   
  67 : * 
  68 : * AU CAS OU IL N'Y AURAIT PAS DE DEPIMP 
  69 : *                                                                               
  70 : FFF0= 'DEPIMP' BBB 0.; FA = FFF + FFF0;  
  71 : DEPTOT = FA  'EXCO' 'FLX'  'FLX' ;  
  72 : 'SI' ISUP ;  
  73 :     RISUP=  ('EXTRAI' SUP 'RIGI') ;
  74 : **  list resu risup;
  75 : **  risup = cano risup;
  76 : **  list resu risup;
  77 :     MASUP= 'EXTRAI' RISUP 'MAIL' ;
  78 :     DEPTOT = DEPTOT - (DEPTOT REDU MASUP);
  79 :    F =   'SUPER'  'CHAR' SUP  FA ;
  80 :    f_lx = f 'EXCO' 'FLX' 'NOID';
  81 :      f_lx_m = f_lx 'EXTR' 'MAIL';
  82 :    'SI' ('NEG' ('TYPE' F_LX_m) 'ENTIER');
  83 :      nbnegs = f_lx_m  nbno;
  84 :     'FINSI';
  85 : 'SINON';
  86 :   RISUP = MATAB.1 * 1;
  87 :   F=FA 'ENLE' 'FLX';
  88 : 'FINSI';                                            
  89 : 'SI' ('NON' matab.'VRAISUP');
  90 :      nbnegs = 0;
  91 : 'FINSI';
  92 :   FDEPTO=F + DEPTOT ;                
  93 : 'DETR' FFF0   ;                                                                 
  94 : *
  95 : *    INITIALISATION
  96 : *                                                                               
  97 :     'SI' ('NON' STAT); MATAB.'OK' = VRAI; 'FINSI';
  98 :     'SI' (STAT 'ET' MATAB.'OK') ;
  99 :       RITOU  = MATAB.5   ;                                                      
 100 :       LISEA  = MATAB.6   ;                                                      
 101 : ***   BLOINI = BBB ;
 102 :       FDEPTOT=FDEPTO;                                                           
 103 :     'SINON'   ;                                                                 
 104 :      'SI' ('EXISTE' MATAB 7) ;
 105 :       BLOINI = MATAB.7;
 106 :       RITOU = RISUP 'ET' MATAB.7 ;
 107 :       LISEA  = MATAB.6 'ET' ('LECT' ) ;
 108 :       FDEPTOT=FDEPTO;                                                           
 109 :      'SINON';
 110 :       BLOINI = BBB ;
 111 :       RITOU = RISUP * 1.;
 112 : **    RITOU = RISUP 'ET' BLOINI ;
 113 : *     INITIALISER LISEA A UNE VALEUR IMPOSSIBLE
 114 :       LISEA = 'LECT' -1 ;                                                       
 115 :       FDEPTOT=F ;                                                               
 116 :      'FINSI';
 117 : **    'MESS' 'on est bien la ';
 118 : **    RITOU = RISUP 'ET' BLOINI ;
 119 : **    RITOU = RISUP * 1.        ;
 120 :     'FINSI'   ;                                                                 
 121 : *                                                                               
 122 : MATAB.'OK' = VRAI; matab.5 = 1 ; matab.6 = 1 ;
 123 : 
 124 :       LITOT = 'LECT' ;
 125 :      BLOTOT = BBB ;
 126 : *                                                                               
 127 : *   RECHERCHE DES BLOQUAGES ACTIFS                                              
 128 :     OPTION = 'MOT' 'RAPIDE';
 129 :     'SI' ('EXISTE' FL) ;
 130 :       OPTIO2='MOT' 'INIT';
 131 :     'SINON';
 132 :       OPTIO2='MOT' 'CONT';
 133 :     'FINSI';
 134 : *                                                                               
 135 :    I = 0    ; NCONV= VRAI ;                                                     
 136 : *                                                                               
 137 : 'REPETER'   BOUCL1 ;
 138 :    I = I + 1 ;
 139 :     MAFREIN*'MAILLAGE'  NBE*'ENTIER' DE =
 140 :         'RESOU' 'NOID' 'ENSE' 'NOUNIL' RITOU FDEPTOT;
 141 : **  nbnegt = 'MAXI' ('LECT' nbnegt ('DIAG' ritou));
 142 :     nbnegt = 'DIAG' ritou;
 143 : 'SI' ('EGA' ('TYPE' FL) 'CHPOINT ');
 144 :   BLOTO LISEN LOG = BLOTOT  'EXCITER' DEPTOT  DE MAFREIN OPTION FL;
 145 : 'SINON';
 146 :   BLOTO LISEN LOG = BLOTOT  'EXCITER' DEPTOT  DE MAFREIN OPTION ;
 147 : 'FINSI';
 148 : *list lisen;
 149 : 'SI' ((I 'EGA' 5) 'ET' ('EGA' OPTION 'RAPIDE')); 
 150 :     OPTION= 'MOT' 'MOYEN';
 151 : 'FINSI';
 152 : 'SI' (('NEG' 'INIB' MCLE) 'OU' (I 'NEG' 1));         
 153 : 'SI' ((LISEN 'EGA' LISEA) 'OU' LOG) ;                                           
 154 :     'SI' (I 'NEG' 1) ; 
 155 :     'SI' ((NBE 'EGA' 0) 'OU' ('EGA' OPTION 'RAPIDE'));
 156 :      NCONV=  FAUX ;
 157 :      'QUITTER' BOUCL1;
 158 :     'SINON';
 159 :      M1 = 'EXTR' (RISUP ET BLOTO) 'MAIL';
 160 :      M2 = 'EXTR' RITOU  'MAIL';
 161 :      M3 = M1 'DIFF' M2;
 162 :      'SI' (('NBEL' M3) 'EGA' 0) ;
 163 :       NCONV=  FAUX ;
 164 :       'QUITTER' BOUCL1;
 165 :       'FINSI';
 166 :      'FINSI';
 167 :     'FINSI';
 168 :    'FINSI';
 169 :    'SI' (LISEN 'DANS' LITOT) ;
 170 :      'SI' ('EGA' OPTION 'LENT');
 171 :       'SI' ('EGA' OPTIO2 'CONT');
 172 :        OPTIO2= 'MOT' 'INIT';
 173 :        OPTION= 'MOT' 'RAPIDE';
 174 :        BLOTO=BBB;
 175 : 
 176 :        LITOT= 'LECT' ;
 177 :        LISEN=LISEN * -1;
 178 :    'MESS' ' *** UNILATER stratégie alternative à la ' I 'ème itération';
 179 :        I=0;
 180 :       'SINON';
 181 :       'QUITTER' BOUCL1;
 182 :       'FINSI';
 183 :      'SINON';
 184 :       OPTION = 'MOT' 'LENT';
 185 :       LITOT = 'LECT';
 186 :       'MESS' ' *** UNILATER stratégie lente à la ' I 'ème itération';
 187 :      'FINSI';
 188 :    'FINSI';
 189 : 'FINSI';
 190 :    LITAN=LITOT;
 191 :    LITOT=LITOT 'ET' LISEN;
 192 :  'DETRUIRE' LITAN;  'DETRUIRE' LISEA;  'DETRUIRE' DE  ;                 
 193 : * 'SI' ('EXISTE' MATAB 5);
 194 : *   'SI' ('NEG' RITOU  (MATAB.5)); 'DETRUIRE' RITOU; 'FINSI';
 195 : * 'SINON';
 196 :    'DETRUIRE' RITOU;
 197 : * 'FINSI';  
 198 : *    'SI' (I 'NEG' 1);GEO='EXTRAI' BLOT 'MAIL';'DETR' GEO 'TOUT';
 199 : *    'DETR' BLOT 'ELEM'  ;'FINSI';
 200 :      RITOU = RISUP 'ET' BLOTO ;                                                 
 201 :      BLOT = BLOTO;                                                              
 202 :      LISEA=LISEN;                                                               
 203 :      FDEPTOT=FDEPTO;                                                            
 204 : 'FIN' BOUCL1;    
 205 : *
 206 : * CFBUG = 'CHAINE' ' *** UNILATER convergence à l''''itération ';
 207 : * 'MESS'   CFBUG I;
 208 : 'SI' (NBE 'NEG' 0) ; MATAB.'OK' = FAUX; 'FINSI';
 209 : *                                                                               
 210 :       MATAB.5 =  RITOU ;                                                        
 211 :       MATAB.6 =  LISEA ;                                                        
 212 :       MATAB.7 = BLOTO;                                                          
 213 :       MATAB.13 = nbnegt - nbnegs;
 214 : 
 215 : *                                                                               
 216 :    'SI'  NCONV  ;                                                               
 217 :      NCONV=FAUX;
 218 :      MATAB.'OK'=FAUX;
 219 :    'FINSI';
 220 : 
 221 :    'SI'  NCONV  ;                                                               
 222 :      'MESS'  ' *** UNILATER il n y a pas de solution au système ';
 223 :       RITOU = RISUP 'ET' BBB ;                                                  
 224 :       LISEA = 'LECT' 0;                                                         
 225 :       MATAB.5 =  RITOU ;                                                        
 226 :       MATAB.6 =  LISEA ;                                                        
 227 :       MATAB.7 = BLOTO;                                                          
 228 :    'SINON';                                                                     
 229 : *                                                                               
 230 : **CFBUG = 'CHAINE' ' *** UNILATER convergence à l''''itération ';
 231 : 'SI' ('NON' MATAB.'OK');
 232 : CFBUG = 'CHAINE' ' *** UNILATER non convergence à l''''itération ';
 233 : 'MESS'   CFBUG I nbe;
 234 :  MATAB.13 = 1234 ;
 235 : 'FINSI';
 236 : MATAB.'NITER' = I;                       
 237 : *                                                                               
 238 : *  CALCUL SUR TOUTE LA STRUCTURE                                                
 239 : * 
 240 : 'SI' ISUP;
 241 :     DE1=  'SUPER' 'DEPL'   SUP   DE    FFF; 
 242 :     DE2 = DE1 'ET' (DE 'ENLE' 'LX');
 243 :     'DETRUIRE' DE1;  'DETR' DE; 'DETR' FA ;       
 244 : 'SINON';
 245 :     DE2= DE;
 246 : 'FINSI' ;
 247 : 'SI' ('EGA' ('TYPE' FL) 'CHPOINT ');
 248 :    FL = FL REDU (BBB EXTR 'MAIL' 'MULT');
 249 :    DE3 = DE2 - FL ; 'DETR' DE2;DE2 = DE3;
 250 : 'FINSI';
 251 : *                                                                               
 252 :   'FINSI' ;                                                                     
 253 : *                                                                               
 254 : 'DETR' F  ;'DETR' DEPTOT ;'DETR' FDEPTOT ;                                      
 255 : *   
 256 : 'SI' ( 'EXISTE' MATAB 8 ) ;
 257 :    rrrr = MATAB.8 ;
 258 :   DE3 = 'MREM'  DE2  rrrr matab.9 bloto matab.12 matab.10 MATAB.11;
 259 :   matab.10=0; matab.11=0;
 260 : * mess ' dans unilater de3 ';list de3;
 261 :   'DETR' DE2 ;'RESPRO' DE3;
 262 : 'SINON' ;                                                                     
 263 : * mess ' dans unilater de2 ';list de2;
 264 :   'RESPRO'  DE2  ;
 265 : 'FINSI' ;
 266 : *
 267 : 'SI' ('EGA' 'INIB' MCLE); 
 268 :   'SI' ('EGA' ('TYPE' FL) 'CHPOINT ');
 269 :     'RESPRO' 'bid' 'bid' 'bid' 'bid';
 270 :   'SINON';
 271 :     'RESPRO' 'bid' 'bid' 'bid'; 
 272 :   'FINSI';
 273 : 'FINSI';
 274 : 'FINPRO'  ;
 275 : 
 276 :  
 277 :  
 278 :  
 279 :  
 280 :  
 281 :  
 282 :  

© Cast3M 2003 - All rights reserved.
Disclaimer