* POSTDDI PROCEDUR CHAT 96/08/05 21:25:23 2238 periode*FLOTTANT nperi*ENTIER idebu*ENTIER; * **************************************************************** * * * Calcul du mombre de cycles à rupture sur un ou plusieurs * * cycles stabilises * * * * Entrées : * * --------- * * tab : TABLE en sortie de PASAPAS * * tabmat : Parametres des lois d'endommagement * * geo : Partie du maillage sur laquelle on effectue le * * calcul * * periode: Periode du chargement * * nperi : Nombre de periodes sur lesquelles on calcule le * * nombre de cycles à rupture * * idebu : Numero de la premiere periode de calcul * * * * Sorties : * * --------- * * nf : table indicee par les numeros de periodes * * contenant les nombres de cycles à rupture en * * fatigue seule (champs par element) * * nc : table indicee par les numeros de periodes * * contenant les nombres de cycles à rupture en * * fluage seule (champs par element) * * nr : table (par periode) des nombres de cycles a * * rupture (entiers) * * dfin : table indicee par les numeros de periodes * * contenant les dommages finaux (champs par * * element) * **************************************************************** * t0 = tab .'TEMPS' ; sig0 = tab.'CONTRAINTES'; var0 = tab.'VARIABLES_INTERNES'; nf = TABLE; nc = TABLE; nr = TABLE; dfin = TABLE; * * Donnees materiau * ---------------- petita = tabmat.'PETITA'; b = tabmat.'B'; c = tabmat.'C'; sigu = tabmat.'SIGU'; sigl = tabmat.'SIGL'; m = tabmat.'M'; alpha = tabmat.'ALPHA'; beta = tabmat.'BETA'; granda = tabmat.'GRANDA'; k = tabmat.'K'; r = tabmat.'R'; * * MCHAML constants * ---------------- * * Reperage des indices * -------------------- ideb1=idebu-1; tabdime=TABLE ; i0=1; * 'REPETER' bloc0 (nperi+ideb1); dimperi = 0; iperi=&bloc0; 'REPETER' bloc1 nbtemps; t1=t0.i0; 'SI' (t1 '>' (iperi*periode)); 'QUIT' bloc1; 'FINSI'; dimperi=dimperi+1; i0=i0+1; 'SI' (i0 '>' nbtemps); 'QUIT' bloc1; 'FINSI'; 'FIN' bloc1; tabdime.iperi=dimperi; 'FIN' bloc0; * indicini=1; 'REPETER' bloc01 ideb1; indicini=indicini+(tabdime.(&bloc01)); 'FIN' bloc01; * * Calcul des grandeurs caracteristiques du cycle en fatigue * --------------------------------------------------------- sigb=TABLE; deltasig=TABLE; i0 = indicini; 'REPETER' bloc2 nperi; dimperi=tabdime.((&bloc2)+ideb1); 'REPETER' bloc3 dimperi; sumsig=sumsig+sig1; sigmax=( ('ABS' (sigmax-j2)) + ('ABS' (sigmax+j2)) )/2.; i0=i0+1; 'FIN' bloc3; sumsig=sumsig/dimperi; sigb.(&bloc2)=j2; deltasig.(&bloc2)=sigmax-j2; 'FIN' bloc2; t1 = t0.indicini; dc1 = (chi/granda)**r; i0 = indicini+1; 'REPETER' bloc4 nperi; * * Dommage de fatigue * ------------------ iperi = (&bloc4); m0 = m*(chun-(c*(sigb.iperi))); alph1 = petita*(sigfat+(abs(sigfat)))/2.; alph1 = alph1+(msqalph*1.e-8); tmp = (deltasig.iperi)*(m0**(-1)); df = alph1*(beta+1)*(tmp**beta); df=df+msqfat; nf.iperi = df**(-1); * * Dommage de fluage * ----------------- dimperi = tabdime.(iperi+ideb1); 'REPETER' bloc5 dimperi; var1 = var0.i0; dc2 = (chi/granda)**r; t2 = t0.i0; dt = t2 - t1; integ1 = integ1 + ( (dc1+dc2)*dt/2.); dc1 = dc2; t1 = t2; i0 = i0+1; 'SI' (i0 '>' nbtemps); 'QUIT' bloc5; 'FINSI'; 'FIN' bloc5; dc = (k+1)*integ1; dc=dc+(msqflu*1.e-12); nc.iperi = dc**(-1); * * Cumul * ----- d0 = chun; d1 = chun; d2 = chun; nsim = 0; 'REPETER' bloc6; *d1 = ( d0**(k+1.) - dc )**(1./(k+1)); **** NB: d1 = 1 - D1, d2= 1 - D2 *tmp = 'EXP' ( alph1 * ('LOG' ( (chun - (d1**(beta+1)) ) ) ) ); *tmp2 = 'EXP' ( (alph1**(-1.)) * ('LOG' (df + tmp) ) ); *d2 = (chun - tmp2) ** (1./(beta+1.)) ; *d2 = msqalph*d1+((chun-msqalph)*d2); 'QUIT' bloc6; 'FINSI'; nsim = nsim+1; d0 = d2; 'FIN' bloc6; nr . (iperi) = nsim; dfin.(iperi) = chun-d2; 'FIN' bloc4; 'FINPROC' nf nc nr dfin;
© Cast3M 2003 - Tous droits réservés.
Mentions légales