* @ANA_LIM PROCEDUR KK2000 00/12/18 21:15:33 4049 *VERSION 04/96 * *******************initialisation et recapitulation des donnees * * 'MESSAGE' LIG; 'MESSAGE' 'PROCEDURE ANALYSE LIMITE'; 'MESSAGE' LIG; * PRECED.'TESTURG'=FAUX; * ***critere de plasticite? * 'SI'( 'NON' ('EXISTE' PRECED 'CRITERE')); PRECED.'CRITERE'=VONMISES; 'FINSI'; 'MESSAGE' 'critere de plasticite ' PRECED.'CRITERE'; * ***limite d'ecoulement? * 'SI'( 'NON' ('EXISTE' PRECED 'SIGLIM')); PRECED.'SIGLIM'=1.; 'FINSI'; * ***precision? * 'SI'( 'NON' ('EXISTE' PRECED 'PRECISION')); PRECED.'PRECISION'=1E-3; 'FINSI'; 'MESSAGE' 'precision' PRECED.'PRECISION'; * ****nombre d'iterations maximum? * 'SI'( 'NON' ('EXISTE' PRECED 'MAXITERATION')); PRECED.'MAXITERATION'=50; 'FINSI'; 'MESSAGE' 'maxiterations' PRECED.'MAXITERATION'; * ****pas d"affichage des resultats? * 'SI'( 'NON' ('EXISTE' PRECED 'PAS')); PRECED.'PAS'=1; 'FINSI'; * ****est ce un calcul coque? * 'SI' ('NON' ('EXISTE' PRECED 'CALCUL_COQUE')); 'COQ3' 'COQ4' 'COQ6' 'COQ8' 'DKT' 'DST'); 'MESSAGE' LIG; 'MESSAGE' 'Il manque les caracteristiques de la coque'; 'FINSI'; 'SINON'; 'MESSAGE' 'calcul coque'; 'FINSI'; * * ****procedure personnelle? * 'SI'( 'NON' ('EXISTE' PRECED 'PROCEDURE_PERSO1')); PRECED.'PROCEDURE_PERSO1'=FAUX; 'FINSI'; * * ****reprise? 'SI'( 'NON' ('EXISTE' PRECED 'REPRISE')); PRECED.'ITER'=0; PRECED.'YOUNG'=2.e5; PRECED.'RESCL'=1.; 'SINON'; 'MESSAGE' 'reprise'; 'FINSI'; 'MESSAGE' LIG; * ****definition de l'element si calcul coque pour calcul de ENER * TSET1=FAUX; TSET1=VRAI; 'FINSI'; ******************************** **********resolution ******************************** * 'REPETER' BOUC1 PRECED.'MAXITERATION'; * *****************test d'iteration * PRECED.'ITER'= ((PRECED.'ITER') + 1); * *****************definition du materiau * * ***************cas d'une coque * 'SI'('EXISTE' PRECED 'CALCUL_COQUE'); MA2 = MA1 '*' PRECED.'CALCUL_COQUE' ; MA = MA '+' MA2 ; 'SINON'; 'MESSAGE' 'Les carac. de la coque doivent etre YOUN NU EPAI ALFA' ; 'FINSI'; 'FINSI'; *****************calcul de la matrice de rigidite * * *****************resolution * * ******************calcul des contraintes et des contraintes equivalentes * PRECED.'CONTRAINTES'='SIGMA' PRECED.'MODELE' MA PRECED.'DEPLA'; 'SI'( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE')); 'SI' ('EGA' PRECED.'CRITERE' VONMISES); PRECED.'CONTRAINTES') SCALAIRE; 'FINSI'; 'SI'('EGA' PRECED.'CRITERE' TRSCA); PRECED.'CONTRAINTES') SCALAIRE; 'FINSI'; 'SINON'; 'SI' ('EGA' PRECED.'CRITERE' VONMISES); PRECED.'CONTRAINTES' PRECED.'CALCUL_COQUE') SCALAIRE; 'FINSI'; 'SI'('EGA' PRECED.'CRITERE' TRSCA); PRECED.'CONTRAINTES' PRECED.'CALCUL_COQUE') SCALAIRE; 'FINSI'; 'FINSI'; * *******************mise en place du retour et adimensionnement avec * chargement elastique * 'SI' ( (PRECED.'ITER') 'EGA' 1); PRECED.'CONTINI'=PRECED.'CONTRAINTES'; PRECED.'CELAS'=(PRECED.'SIGLIM')/SMAX1; 'SINON'; 'FINSI'; 'MESSAGE' ' '; 'MESSAGE'' ratio elastique:' PRECED.'CELAS'; 'MESSAGE' ' '; 'MESSAGE' ' iter critere charge limite baro'; 'FINSI'; * * *****************adaptation des modules d'young * PRECED.'YOUNG'=((PRECED.'SIGLIM')* ((PRECED.'MECARUINE')**(-1.)))*PRECED.'YOUNG'; *ajout version anterieur: pbs si Ymax/Ymin trop grand *Ymax/Ymin bride a 1.e4. A voir ... 'SI' ( (PRECED.'ITER') '>EG' 3); YTEST=YMAX/YMIN; 'SI' ( (YTEST) '>EG' 1E4); PRECED.'BRIDE'=YMIN*1E4; 'FINSI'; 'SI'('EXISTE' PRECED 'BRIDE'); MASQSUP=PRECED.'YOUNG' 'MASQUE' 'SUPERIEUR' PRECED.'BRIDE'; MASQINF= PRECED.'YOUNG' 'MASQUE' 'EGINF' PRECED.'BRIDE'; PRECED.'YOUNG'=(((PRECED.'YOUNG')*MASQINF) + (((PRECED.'BRIDE')*MASQSUP))); 'FINSI'; 'FINSI'; * *******calcul du numerateur * 'SI'( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE')); 'SINON'; 'FINSI'; EPS=(PRECED.'SIGLIM'*( ('ENER' PRECED.'MODELE' PRECED.'CONTRAINTES' EPS1)*((PRECED.'MECARUINE')**(-1.)))); 'SI' ( (TSET1) 'OU' ( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE'))); 'SINON'; 'FINSI'; * *******calcul du denominateur * 'SI' ( PRECED.'ITER' 'EGA' 1 ); 'SI'( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE')); 'SINON'; PRECED.'REA1'='BSIG' PRECED.'MODELE' PRECED.'CONTINI' PRECED.'CALCUL_COQUE'; 'FINSI'; 'FINSI'; * ******charge limite * CL=(NUM/DENO); * ******criteres de convergence * BAROM=((SMAX1 - (PRECED.'SIGLIM'))/(PRECED.'SIGLIM')); 'SINON'; BAROM1=((PRECED.'MECARUINE') + ((-1.)*(PRECED.'SIGLIM'))); BAROM1=(BAROM1*((PRECED.'SIGLIM')**(-1.))); 'FINSI'; * CRITERE=ABS(CL - PRECED.'RESCL')/cl; * *******************sortie des donnees * 'SI' ((((PRECED.'ITER') + 1)/(1+((PRECED.'ITER')/PRECED.'PAS'))) 'EGA' (PRECED.'PAS')); 'MESSAGE' PRECED.'ITER' CRITERE CL BAROM; 'FINSI'; * 'SI' ( PRECED.'ITER' > 3 ); PRECED.'RUINE'=PRECED.'MECARUINE' ELEM COMPRIS PRECED.'SIGLIM' SMAX1; 'MESSAGE' ' nb d"elements ruines' nbruine; 'FINSI'; * *******************evolution de la charge * 'SI' (( PRECED.'ITER' > 0 ) 'ET' ( PRECED.'ITER' < 2 )); 'FINSI'; 'SI' ('NON' (( PRECED.'ITER' > 0 ) 'ET' ( PRECED.'ITER' < 2 ))); 'FINSI'; * *******************test de comportement de l'algorithme * 'SI' (((PRECED.'ITER' '>EG' 2) 'ET' (SMAX1 < 1.)) 'ET' (SMAX1 > 0.)); 'MESSAGE' ' '; 'MESSAGE' ' ***avert1: SIGEQMAX < SIGY***'; 'MESSAGE' '***verifiez la bonne convergence***'; 'MESSAGE' ' '; 'FINSI'; * BOOL4= PRECED.'ITER' > 1; BOOL6= (PRECED.RESCL < CL); 'SI' (BOOL4 ET (BOOL6 ET ('NON' (PRECED.'TESTURG')))); 'MESSAGE' ' '; 'MESSAGE' '***avert2: parametre de charge croissant***'; 'MESSAGE' '***verifiez la bonne convergence***'; 'MESSAGE' ' '; 'FINSI'; * 'SI' ((PRECED.'ITER' 'EGA' (PRECED.'MAXITERATION')) ET ('NON' (PRECED.'TESTURG'))); 'MESSAGE' '****************************************************'; 'MESSAGE' '***AVERT3: AUGMENTER LE NB D"ITERATIONS***'; 'MESSAGE' ' ***CONVERGENCE NON ATTEINTE***'; 'MESSAGE' ' iter critere charge limite barometre'; 'MESSAGE' PRECED.'ITER' CRITERE CL BAROM; 'MESSAGE' '****************************************************'; PRECED.'TESTURG'=VRAI; 'FINSI'; PRECED.RESCL=CL; * * ********************procedures perso * 'SI'( PRECED.'PROCEDURE_PERSO1' ); 'MESSAGE' ' '; 'MESSAGE' '---debut de la procedure PERSO1---'; 'MESSAGE' ' '; PERSO1 PRECED; 'MESSAGE' ' '; 'MESSAGE' '---fin de la procedure PERSO1---'; 'MESSAGE' ' '; 'FINSI'; * * ********************verification de la convergence * BOOLERR1= CRITERE '<EG' PRECED.PRECISION; 'SI' (BOOLERR1 ET ('NON' (PRECED.'TESTURG'))); 'MESSAGE' '****************************************************'; 'MESSAGE' '***CONVERGENCE ATTEINTE***'; 'MESSAGE' ' iter critere charge limite barometre'; 'MESSAGE' PRECED.'ITER' CRITERE CL BAROM; 'MESSAGE' '****************************************************'; PRECED.'TESTURG'=VRAI; 'FINSI'; * *********************destruction * MENAGE; * ********************test d'arrets d'urgence du programme * 'SI' (PRECED.'TESTURG'); 'QUITTER' BOUC1; 'FINSI'; * 'FIN' BOUC1; * *********sortie de resultats * MOT1 PRECED.LISTCL; PRECED.'CADIM'=(PRECED.RESCL)/(PRECED.CELAS); 'MESSAGE' 'J"AI TERMINE - A.PONTER/D.PLANCQ'; 'MESSAGE' 'VERSION 04/96 DER/SERA'; 'MESSAGE' 'RENSEIGNEMENTS 42.25.74.92'; * 'FINPROC' PRECED;
© Cast3M 2003 - Tous droits réservés.
Mentions légales