$$$$ POSTDDI * POSTDDI PROCEDUR CHAT 96/08/05 21:25:23 2238 'DEBPROC' POSTDDI tab*TABLE tabmat*TABLE geo*MAILLAGE 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) * **************************************************************** * mat0 = 'REDU' (tab .'CARACTERISTIQUES') geo ; mod0 = 'REDU' (tab .'MODELE') geo ; 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 * ---------------- chun = 'MANU' 'CHML' mod0 'SCAL' 1. 'STRESSES' TYPE 'SCALAIRE'; chsigl = 'MANU' 'CHML' mod0 'SCAL' sigl 'STRESSES' TYPE 'SCALAIRE'; chsigu = 'MANU' 'CHML' mod0 'SCAL' sigu 'STRESSES' TYPE 'SCALAIRE'; * * Reperage des indices * -------------------- ideb1=idebu-1; nbtemps=(dime t0) - 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; sigm=TABLE; deltasig=TABLE; i0 = indicini; 'REPETER' bloc2 nperi; dimperi=tabdime.((&bloc2)+ideb1); sumsig = 'ZERO' mod0 'CONTRAIN'; sigmax = 'ZERO' mod0 'STRESSES'; 'REPETER' bloc3 dimperi; sig1='REDU' (sig0.i0) geo; sumsig=sumsig+sig1; j2 = 'VMIS' mod0 sig1; sigmax=( ('ABS' (sigmax-j2)) + ('ABS' (sigmax+j2)) )/2.; i0=i0+1; 'FIN' bloc3; sumsig=sumsig/dimperi; j2 = 'VMIS' mod0 sumsig; sigb.(&bloc2)=j2; sigm.(&bloc2)=sigmax; deltasig.(&bloc2)=sigmax-j2; 'FIN' bloc2; t1 = t0.indicini; chi = postddi1 (var0.indicini) alpha mod0; dc1 = (chi/granda)**r; i0 = indicini+1; 'REPETER' bloc4 nperi; * * Dommage de fatigue * ------------------ iperi = (&bloc4); m0 = m*(chun-(c*(sigb.iperi))); sigfat = (sigm.iperi - chsigl)*((chsigu-sigm.iperi)**(-1)); alph1 = petita*(sigfat+(abs(sigfat)))/2.; msqalph = alph1 masq 'EGINFE' 1.E-8; alph1 = alph1+(msqalph*1.e-8); tmp = (deltasig.iperi)*(m0**(-1)); df = alph1*(beta+1)*(tmp**beta); msqfat = (df 'MASQ' 'EGINFE' 1.E-12)*1.e-12; df=df+msqfat; nf.iperi = df**(-1); * * Dommage de fluage * ----------------- dimperi = tabdime.(iperi+ideb1); integ1 = 'ZERO' mod0 'STRESSES'; 'REPETER' bloc5 dimperi; var1 = var0.i0; chi = postddi1 var1 alpha mod0; 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; msqflu = dc 'MASQ' 'EGINFE' 1.E-12; dc=dc+(msqflu*1.e-12); nc.iperi = dc**(-1); * * Cumul * ----- d0 = chun; d1 = chun; d2 = chun; nsim = 0; 'REPETER' bloc6; A = d0**(k+1.); B = A -dc; detr A; d1=B **(1./(k+1));detr B; *d1 = ( d0**(k+1.) - dc )**(1./(k+1)); **** NB: d1 = 1 - D1, d2= 1 - D2 A = d1**(beta+1);B = chun - A; detr A; CE='LOG' B; detr B; A=alph1 * CE; detr CE; tmp = 'EXP' A; detr A; *tmp = 'EXP' ( alph1 * ('LOG' ( (chun - (d1**(beta+1)) ) ) ) ); A=df + tmp; B= 'LOG' A; detr A;CE = (alph1**(-1.)); AC = CE * B; detr CE; detr B; tmp2='EXP' AC; detr AC; *tmp2 = 'EXP' ( (alph1**(-1.)) * ('LOG' (df + tmp) ) ); A = chun - tmp2; d2=A **(1./(beta+1.)); detr A; *d2 = (chun - tmp2) ** (1./(beta+1.)) ; A=chun-msqalph; B=A * d2;detr A; detr d2; A=msqalph*d1; d2 = A + B; detr A; detr B; *d2 = msqalph*d1+((chun-msqalph)*d2); 'SI' ( (('MINI' d2) '' 1e8) ); 'QUIT' bloc6; 'FINSI'; nsim = nsim+1; d0 = d2; 'FIN' bloc6; nr . (iperi) = nsim; dfin.(iperi) = chun-d2; 'FIN' bloc4; 'FINPROC' nf nc nr dfin;