Download @ana_lim.procedur

Back to the list

   1 : * @ANA_LIM  PROCEDUR  KK2000    00/12/18    21:15:33     4049           
   2 : 'DEBPROC' @ANA_LIM PRECED*'TABLE';
   3 : *VERSION 04/96
   4 : *
   5 : *******************initialisation et recapitulation des donnees
   6 : *
   7 : *
   8 : LIG='MOT'  '************************';
   9 : 'MESSAGE' LIG;
  10 : 'MESSAGE' 'PROCEDURE ANALYSE LIMITE';
  11 : 'MESSAGE' LIG;
  12 : *
  13 : PRECED.'TESTURG'=FAUX;
  14 : *
  15 : ***critere de plasticite?
  16 : *
  17 : 'SI'( 'NON' ('EXISTE' PRECED 'CRITERE'));
  18 :       PRECED.'CRITERE'=VONMISES;
  19 : 'FINSI';
  20 : 'MESSAGE' 'critere de plasticite   ' PRECED.'CRITERE'; 
  21 : *
  22 : ***limite d'ecoulement?
  23 : *
  24 : 'SI'( 'NON' ('EXISTE' PRECED 'SIGLIM'));
  25 :       PRECED.'SIGLIM'=1.;
  26 : 'FINSI';
  27 : *
  28 : ***precision?
  29 : *
  30 : 'SI'( 'NON' ('EXISTE' PRECED 'PRECISION'));
  31 :     PRECED.'PRECISION'=1E-3;
  32 : 'FINSI';
  33 : 'MESSAGE' 'precision' PRECED.'PRECISION';
  34 : *
  35 : ****nombre d'iterations maximum?
  36 : *
  37 : 'SI'( 'NON' ('EXISTE' PRECED 'MAXITERATION'));
  38 :     PRECED.'MAXITERATION'=50;
  39 : 'FINSI';
  40 : 'MESSAGE' 'maxiterations' PRECED.'MAXITERATION';
  41 : *
  42 : ****pas d"affichage des resultats?
  43 : *
  44 : 'SI'( 'NON' ('EXISTE' PRECED 'PAS'));
  45 :    PRECED.'PAS'=1; 
  46 : 'FINSI';
  47 : *
  48 : ****est ce un calcul coque?
  49 : *
  50 : 'SI' ('NON' ('EXISTE' PRECED 'CALCUL_COQUE'));
  51 :  'SI' ('EXISTE' (PRECED.'MODELE') 'ELEM' 'COQ2'
  52 :   'COQ3' 'COQ4' 'COQ6' 'COQ8' 'DKT' 'DST');
  53 :   'MESSAGE' LIG;
  54 :   'MESSAGE' 'Il manque les caracteristiques de la coque';
  55 :   'QUITTER' @ANA_LIM;
  56 : 'FINSI';
  57 : 'SINON';
  58 :   'MESSAGE' 'calcul coque'; 
  59 : 'FINSI';
  60 : *
  61 : *
  62 : ****procedure personnelle?
  63 : *
  64 : 'SI'( 'NON' ('EXISTE' PRECED 'PROCEDURE_PERSO1'));
  65 :    PRECED.'PROCEDURE_PERSO1'=FAUX;
  66 : 'FINSI';
  67 : *
  68 : *
  69 : ****reprise?
  70 : 'SI'( 'NON' ('EXISTE' PRECED 'REPRISE'));
  71 : PRECED.'ITER'=0;
  72 : PRECED.'YOUNG'=2.e5;
  73 : PRECED.'RESCL'=1.;
  74 : 'SINON';
  75 : 'MESSAGE' 'reprise';
  76 : 'FINSI';
  77 : 'MESSAGE' LIG;
  78 : *
  79 : ****definition de l'element si calcul coque pour calcul de ENER 
  80 : *
  81 : TSET1=FAUX;
  82 : 'SI' ( 'EXISTE' ('EXTR' PRECED.'MODELE' GEOM)   'ALFA');
  83 : TSET1=VRAI;
  84 : 'FINSI';
  85 : ********************************
  86 : **********resolution 
  87 : ********************************
  88 : *
  89 : 'REPETER' BOUC1 PRECED.'MAXITERATION';
  90 : *
  91 : *****************test d'iteration
  92 : *
  93 : PRECED.'ITER'= ((PRECED.'ITER') + 1);
  94 : *
  95 : *****************definition du materiau
  96 : * 
  97 : MA = 'MATE' PRECED.'MODELE' 'YOUN' PRECED.'YOUNG' 'NU' .49 ;
  98 : *
  99 : ***************cas d'une coque
 100 : *
 101 : 'SI'('EXISTE' PRECED 'CALCUL_COQUE');
 102 : 
 103 : 'SI'( ('DIME' ('EXTRAIRE' PRECED.'CALCUL_COQUE' COMP) 'EGA' 4)  
 104 : 'ET'  (EXISTE ('EXTRAIRE' PRECED.'CALCUL_COQUE' COMP) EPAI)
 105 : 'ET'  (EXISTE ('EXTRAIRE' PRECED.'CALCUL_COQUE' COMP) ALFA) );
 106 : 
 107 : MA1 = 'MATE' PRECED.'MODELE' 'YOUN' 0. 'NU' 0. 'EPAI' 1. 'ALFA' 1.;
 108 : MA2 = MA1 '*'  PRECED.'CALCUL_COQUE' ;
 109 : MA  = MA '+' MA2 ;
 110 : 
 111 : 'SINON';
 112 : 'MESSAGE' 'Les carac. de la coque doivent etre YOUN NU EPAI ALFA' ;
 113 : 'QUITTER' @ANA_LIM;
 114 : 
 115 : 'FINSI';
 116 : 'FINSI';
 117 : 
 118 : *****************calcul de la matrice de rigidite         
 119 : *                                                                               
 120 : RIGI1 = (('RIGI' PRECED.'MODELE' MA) ET PRECED.'BLOCAGES_MECANIQUES');
 121 : *                                                                               
 122 : *****************resolution          
 123 : *                                                                               
 124 : PRECED.'DEPLA' = 'RESO' RIGI1 (PRECED.'RESCL'*PRECED.'CHARGEMENT');
 125 : *
 126 : ******************calcul des contraintes et des contraintes equivalentes
 127 : *
 128 : PRECED.'CONTRAINTES'='SIGMA' PRECED.'MODELE' MA 
 129 : PRECED.'DEPLA';
 130 : 'SI'( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE'));
 131 :   'SI' ('EGA' PRECED.'CRITERE' VONMISES);
 132 :     PRECED.'MECARUINE'='CHAN' TYPE ('VMISE' PRECED.'MODELE' 
 133 :     PRECED.'CONTRAINTES') SCALAIRE;
 134 :   'FINSI';
 135 :   'SI'('EGA' PRECED.'CRITERE' TRSCA);
 136 :     PRECED.'MECARUINE'='CHAN' TYPE ('TRESCA' PRECED.'MODELE' 
 137 :     PRECED.'CONTRAINTES') SCALAIRE;
 138 :   'FINSI';  
 139 : 'SINON';
 140 :   'SI' ('EGA' PRECED.'CRITERE' VONMISES);
 141 : PRECED.'MECARUINE'='CHAN' TYPE ('VMISE' PRECED.'MODELE' 
 142 : PRECED.'CONTRAINTES' PRECED.'CALCUL_COQUE') SCALAIRE;
 143 :   'FINSI';
 144 :   'SI'('EGA' PRECED.'CRITERE' TRSCA);
 145 : PRECED.'MECARUINE'='CHAN' TYPE ('TRESCA' PRECED.'MODELE' 
 146 : PRECED.'CONTRAINTES' PRECED.'CALCUL_COQUE')
 147 :  SCALAIRE;
 148 :   'FINSI';
 149 : 'FINSI';
 150 : SMAX1='MAXI' PRECED.'MECARUINE';
 151 : *
 152 : *******************mise en place du retour et adimensionnement avec 
 153 : *                               chargement elastique
 154 : *
 155 : 'SI' ( (PRECED.'ITER') 'EGA' 1);
 156 :   PRECED.'CONTINI'=PRECED.'CONTRAINTES';
 157 : 'SI' ( 'EGA' ('TYPE' (PRECED.'SIGLIM'))  FLOTTANT);  
 158 :   PRECED.'CELAS'=(PRECED.'SIGLIM')/SMAX1;
 159 : 'SINON';
 160 :   PRECED.'CELAS'=('MAXI' (PRECED.'SIGLIM'))/SMAX1;
 161 : 'FINSI';
 162 :   'MESSAGE' '   ';
 163 :   'MESSAGE''    ratio elastique:' PRECED.'CELAS';
 164 :   'MESSAGE' '   ';
 165 :   'MESSAGE' '   iter    critere    charge limite      baro';
 166 : 'FINSI';
 167 : *
 168 : *
 169 : *****************adaptation des modules d'young
 170 : *
 171 : PRECED.'YOUNG'=((PRECED.'SIGLIM')*
 172 : ((PRECED.'MECARUINE')**(-1.)))*PRECED.'YOUNG';
 173 : *ajout version anterieur: pbs si Ymax/Ymin trop grand
 174 : *Ymax/Ymin bride a 1.e4. A voir ...
 175 : 'SI' ( (PRECED.'ITER') '>EG' 3);
 176 :  YMAX='MAXI' PRECED.'YOUNG';
 177 :  YMIN='MINI' PRECED.'YOUNG';
 178 :  YTEST=YMAX/YMIN;
 179 : 'SI' ( (YTEST) '>EG' 1E4);
 180 : PRECED.'BRIDE'=YMIN*1E4;
 181 : 'FINSI';
 182 : 'SI'('EXISTE' PRECED 'BRIDE'); 
 183 : MASQSUP=PRECED.'YOUNG' 'MASQUE' 'SUPERIEUR' PRECED.'BRIDE';
 184 : MASQINF= PRECED.'YOUNG' 'MASQUE' 'EGINF' PRECED.'BRIDE';
 185 : PRECED.'YOUNG'=(((PRECED.'YOUNG')*MASQINF) +
 186 : (((PRECED.'BRIDE')*MASQSUP)));
 187 : 'FINSI';
 188 : 'FINSI';
 189 : *
 190 : *******calcul du numerateur
 191 : *
 192 : 'SI'( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE'));
 193 :    EPS1='EPSI' PRECED.'MODELE' PRECED.'DEPLA';
 194 : 'SINON';
 195 :    EPS1='EPSI' PRECED.'MODELE' PRECED.'DEPLA' PRECED.'CALCUL_COQUE';
 196 : 'FINSI';
 197 : EPS=(PRECED.'SIGLIM'*(
 198 : ('ENER' PRECED.'MODELE' PRECED.'CONTRAINTES'
 199 :  EPS1)*((PRECED.'MECARUINE')**(-1.))));
 200 : 'SI' ( (TSET1) 'OU' ( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE')));
 201 : NUM='INTG' PRECED.'MODELE' EPS;
 202 : 'SINON';
 203 : NUM='INTG' PRECED.'MODELE' EPS PRECED.'CALCUL_COQUE';
 204 : 'FINSI';
 205 : *
 206 : *******calcul du denominateur
 207 : *
 208 : MLPRIM = 'MOTS' 'UX' 'UY' 'UZ' 'RX' 'RY' 'RZ' 'UR' 'UT' 'LX';
 209 : MLDUAL = 'MOTS' 'FX' 'FY' 'FZ' 'MX' 'MY' 'MZ' 'FR' 'FT' 'FLX';
 210 : 'SI' ( PRECED.'ITER' 'EGA' 1 );
 211 : 'SI'( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE'));
 212 :   PRECED.'REA1'='BSIG' PRECED.'MODELE' PRECED.'CONTINI';
 213 :  'SINON';
 214 :   PRECED.'REA1'='BSIG' PRECED.'MODELE' PRECED.'CONTINI'
 215 :    PRECED.'CALCUL_COQUE';
 216 :  'FINSI';
 217 : 'FINSI';
 218 : DENO='XTY' PRECED.'REA1' PRECED.'DEPLA' MLDUAL MLPRIM;
 219 : *
 220 : ******charge limite
 221 : *
 222 : CL=(NUM/DENO);
 223 : *
 224 : ******criteres de convergence
 225 : *
 226 : 'SI' ( 'EGA' ('TYPE' (PRECED.'SIGLIM'))  FLOTTANT);
 227 :      BAROM=((SMAX1 - (PRECED.'SIGLIM'))/(PRECED.'SIGLIM'));
 228 : 'SINON';
 229 :      BAROM1=((PRECED.'MECARUINE') + ((-1.)*(PRECED.'SIGLIM')));
 230 :      BAROM1=(BAROM1*((PRECED.'SIGLIM')**(-1.)));
 231 :      BAROM='MAXI' BAROM1;
 232 : 'FINSI';
 233 : *
 234 : CRITERE=ABS(CL - PRECED.'RESCL')/cl;
 235 : *
 236 : *******************sortie des donnees
 237 : *
 238 : 'SI' ((((PRECED.'ITER') + 1)/(1+((PRECED.'ITER')/PRECED.'PAS')))
 239 :  'EGA' (PRECED.'PAS'));
 240 :  'MESSAGE' PRECED.'ITER' CRITERE CL BAROM;
 241 : 'FINSI';
 242 : *
 243 : 'SI' ( PRECED.'ITER' > 3 );
 244 :  PRECED.'RUINE'=PRECED.'MECARUINE' ELEM
 245 :  COMPRIS PRECED.'SIGLIM' SMAX1;
 246 :  NBRUINE='NBEL' PRECED.RUINE;
 247 :  'MESSAGE' '    nb d"elements ruines' nbruine;
 248 : 'FINSI';
 249 : 
 250 : *
 251 : *******************evolution de la charge
 252 : *
 253 : 'SI' (( PRECED.'ITER' > 0 ) 'ET' ( PRECED.'ITER' < 2 ));
 254 :    PRECED.'LISTCL'='PROG' (CL);
 255 : 'FINSI';
 256 : 'SI' ('NON' (( PRECED.'ITER' > 0 ) 'ET' ( PRECED.'ITER' < 2 )));
 257 :     PRECED.'LISTCL'=(PRECED.'LISTCL' 'ET' ('PROG' (CL)));
 258 : 'FINSI';
 259 : *
 260 : *******************test de comportement de l'algorithme
 261 : *
 262 : 'SI' (((PRECED.'ITER' '>EG' 2) 'ET' (SMAX1 < 1.)) 'ET' (SMAX1 > 0.));
 263 :     'MESSAGE' '           ';
 264 :     'MESSAGE' ' ***avert1: SIGEQMAX < SIGY***';
 265 :     'MESSAGE' '***verifiez la bonne convergence***';
 266 :     'MESSAGE' '           ';
 267 : 'FINSI';
 268 : *
 269 : BOOL4= PRECED.'ITER' > 1;
 270 : BOOL6= (PRECED.RESCL < CL);
 271 : 'SI' (BOOL4 ET (BOOL6 ET ('NON' (PRECED.'TESTURG'))));
 272 :     'MESSAGE' '           ';
 273 :     'MESSAGE' '***avert2: parametre de charge croissant***';
 274 :     'MESSAGE' '***verifiez la bonne convergence***';
 275 :     'MESSAGE' '           ';
 276 : 'FINSI';
 277 : *
 278 : 'SI' ((PRECED.'ITER' 'EGA' (PRECED.'MAXITERATION'))
 279 :  ET ('NON' (PRECED.'TESTURG')));
 280 :  'MESSAGE' '****************************************************';
 281 :     'MESSAGE' '***AVERT3: AUGMENTER LE NB D"ITERATIONS***';
 282 :     'MESSAGE' '     ***CONVERGENCE NON ATTEINTE***';
 283 : 'MESSAGE' '   iter    critere    charge limite      barometre';
 284 :     'MESSAGE' PRECED.'ITER' CRITERE CL BAROM;
 285 :  'MESSAGE' '****************************************************';
 286 :      PRECED.'TESTURG'=VRAI;
 287 : 'FINSI';
 288 : PRECED.RESCL=CL;
 289 : *
 290 : *
 291 : ********************procedures perso
 292 : *
 293 : 'SI'( PRECED.'PROCEDURE_PERSO1' );
 294 : 'MESSAGE' '           ';
 295 : 'MESSAGE' '---debut de la procedure PERSO1---';
 296 : 'MESSAGE' '           ';
 297 : PERSO1 PRECED;
 298 : 'MESSAGE' '           ';
 299 : 'MESSAGE' '---fin de la procedure PERSO1---';
 300 : 'MESSAGE' '           ';
 301 : 'FINSI';
 302 : *
 303 : *
 304 : ********************verification de la convergence
 305 : *
 306 : BOOLERR1= CRITERE '<EG' PRECED.PRECISION;
 307 : 'SI' (BOOLERR1 ET ('NON' (PRECED.'TESTURG')));
 308 :  'MESSAGE' '****************************************************';
 309 :         'MESSAGE' '***CONVERGENCE ATTEINTE***';
 310 : 'MESSAGE' '   iter    critere    charge limite      barometre';
 311 :         'MESSAGE' PRECED.'ITER' CRITERE CL BAROM;
 312 :  'MESSAGE' '****************************************************';
 313 :         PRECED.'TESTURG'=VRAI;
 314 : 'FINSI';
 315 : *
 316 : *********************destruction  
 317 : *
 318 : MENAGE;
 319 : *
 320 : ********************test d'arrets d'urgence du programme
 321 : *
 322 : 'SI' (PRECED.'TESTURG');
 323 :    'QUITTER' BOUC1;
 324 : 'FINSI';
 325 : *
 326 : 'FIN' BOUC1;
 327 : *
 328 : *********sortie de resultats
 329 : *
 330 : PRECED.'LISTITER'='PROG' 1 'PAS' 1 PRECED.'ITER' ;
 331 : MOT1 = 'MOT' 'CHARGE LIMITE';
 332 : PRECED.'EVOLCL'='EVOL' TURQUOISE MANU ITERATIONS PRECED.LISTITER
 333 :  MOT1 PRECED.LISTCL;
 334 : PRECED.'CADIM'=(PRECED.RESCL)/(PRECED.CELAS);
 335 : 'MESSAGE' 'J"AI TERMINE - A.PONTER/D.PLANCQ';
 336 : 'MESSAGE' 'VERSION 04/96 DER/SERA';
 337 : 'MESSAGE' 'RENSEIGNEMENTS 42.25.74.92';
 338 : *
 339 : 'FINPROC' PRECED;
 340 :  
 341 :  

© Cast3M 2003 - All rights reserved.
Disclaimer