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