1 : * POSTDDI PROCEDUR CHAT 96/08/05 21:25:23 2238 2 : 'DEBPROC' POSTDDI tab*TABLE tabmat*TABLE geo*MAILLAGE 3 : periode*FLOTTANT nperi*ENTIER idebu*ENTIER; 4 : * 5 : **************************************************************** 6 : * * 7 : * Calcul du mombre de cycles à rupture sur un ou plusieurs * 8 : * cycles stabilises * 9 : * * 10 : * Entrées : * 11 : * --------- * 12 : * tab : TABLE en sortie de PASAPAS * 13 : * tabmat : Parametres des lois d'endommagement * 14 : * geo : Partie du maillage sur laquelle on effectue le * 15 : * calcul * 16 : * periode: Periode du chargement * 17 : * nperi : Nombre de periodes sur lesquelles on calcule le * 18 : * nombre de cycles à rupture * 19 : * idebu : Numero de la premiere periode de calcul * 20 : * * 21 : * Sorties : * 22 : * --------- * 23 : * nf : table indicee par les numeros de periodes * 24 : * contenant les nombres de cycles à rupture en * 25 : * fatigue seule (champs par element) * 26 : * nc : table indicee par les numeros de periodes * 27 : * contenant les nombres de cycles à rupture en * 28 : * fluage seule (champs par element) * 29 : * nr : table (par periode) des nombres de cycles a * 30 : * rupture (entiers) * 31 : * dfin : table indicee par les numeros de periodes * 32 : * contenant les dommages finaux (champs par * 33 : * element) * 34 : **************************************************************** 35 : * 36 : mat0 = 'REDU' (tab .'CARACTERISTIQUES') geo ; 37 : mod0 = 'REDU' (tab .'MODELE') geo ; 38 : t0 = tab .'TEMPS' ; 39 : sig0 = tab.'CONTRAINTES'; 40 : var0 = tab.'VARIABLES_INTERNES'; 41 : nf = TABLE; 42 : nc = TABLE; 43 : nr = TABLE; 44 : dfin = TABLE; 45 : * 46 : * Donnees materiau 47 : * ---------------- 48 : petita = tabmat.'PETITA'; 49 : b = tabmat.'B'; 50 : c = tabmat.'C'; 51 : sigu = tabmat.'SIGU'; 52 : sigl = tabmat.'SIGL'; 53 : m = tabmat.'M'; 54 : alpha = tabmat.'ALPHA'; 55 : beta = tabmat.'BETA'; 56 : granda = tabmat.'GRANDA'; 57 : k = tabmat.'K'; 58 : r = tabmat.'R'; 59 : * 60 : * MCHAML constants 61 : * ---------------- 62 : chun = 'MANU' 'CHML' mod0 'SCAL' 1. 'STRESSES' TYPE 'SCALAIRE'; 63 : chsigl = 'MANU' 'CHML' mod0 'SCAL' sigl 'STRESSES' TYPE 'SCALAIRE'; 64 : chsigu = 'MANU' 'CHML' mod0 'SCAL' sigu 'STRESSES' TYPE 'SCALAIRE'; 65 : * 66 : * Reperage des indices 67 : * -------------------- 68 : ideb1=idebu-1; 69 : nbtemps=(dime t0) - 1; 70 : tabdime=TABLE ; 71 : i0=1; 72 : * 73 : 'REPETER' bloc0 (nperi+ideb1); 74 : dimperi = 0; 75 : iperi=&bloc0; 76 : 'REPETER' bloc1 nbtemps; 77 : t1=t0.i0; 78 : 'SI' (t1 '>' (iperi*periode)); 79 : 'QUIT' bloc1; 80 : 'FINSI'; 81 : dimperi=dimperi+1; 82 : i0=i0+1; 83 : 'SI' (i0 '>' nbtemps); 84 : 'QUIT' bloc1; 85 : 'FINSI'; 86 : 'FIN' bloc1; 87 : tabdime.iperi=dimperi; 88 : 'FIN' bloc0; 89 : * 90 : indicini=1; 91 : 'REPETER' bloc01 ideb1; 92 : indicini=indicini+(tabdime.(&bloc01)); 93 : 'FIN' bloc01; 94 : * 95 : * Calcul des grandeurs caracteristiques du cycle en fatigue 96 : * --------------------------------------------------------- 97 : sigb=TABLE; 98 : sigm=TABLE; 99 : deltasig=TABLE; 100 : i0 = indicini; 101 : 102 : 'REPETER' bloc2 nperi; 103 : 104 : dimperi=tabdime.((&bloc2)+ideb1); 105 : sumsig = 'ZERO' mod0 'CONTRAIN'; 106 : sigmax = 'ZERO' mod0 'STRESSES'; 107 : 108 : 'REPETER' bloc3 dimperi; 109 : sig1='REDU' (sig0.i0) geo; 110 : sumsig=sumsig+sig1; 111 : j2 = 'VMIS' mod0 sig1; 112 : sigmax=( ('ABS' (sigmax-j2)) + ('ABS' (sigmax+j2)) )/2.; 113 : i0=i0+1; 114 : 'FIN' bloc3; 115 : 116 : sumsig=sumsig/dimperi; 117 : j2 = 'VMIS' mod0 sumsig; 118 : sigb.(&bloc2)=j2; 119 : sigm.(&bloc2)=sigmax; 120 : deltasig.(&bloc2)=sigmax-j2; 121 : 122 : 'FIN' bloc2; 123 : 124 : t1 = t0.indicini; 125 : chi = postddi1 (var0.indicini) alpha mod0; 126 : dc1 = (chi/granda)**r; 127 : i0 = indicini+1; 128 : 129 : 'REPETER' bloc4 nperi; 130 : * 131 : * Dommage de fatigue 132 : * ------------------ 133 : iperi = (&bloc4); 134 : m0 = m*(chun-(c*(sigb.iperi))); 135 : sigfat = (sigm.iperi - chsigl)*((chsigu-sigm.iperi)**(-1)); 136 : alph1 = petita*(sigfat+(abs(sigfat)))/2.; 137 : msqalph = alph1 masq 'EGINFE' 1.E-8; 138 : alph1 = alph1+(msqalph*1.e-8); 139 : tmp = (deltasig.iperi)*(m0**(-1)); 140 : df = alph1*(beta+1)*(tmp**beta); 141 : msqfat = (df 'MASQ' 'EGINFE' 1.E-12)*1.e-12; 142 : df=df+msqfat; 143 : nf.iperi = df**(-1); 144 : * 145 : * Dommage de fluage 146 : * ----------------- 147 : dimperi = tabdime.(iperi+ideb1); 148 : integ1 = 'ZERO' mod0 'STRESSES'; 149 : 'REPETER' bloc5 dimperi; 150 : var1 = var0.i0; 151 : chi = postddi1 var1 alpha mod0; 152 : dc2 = (chi/granda)**r; 153 : t2 = t0.i0; 154 : dt = t2 - t1; 155 : integ1 = integ1 + ( (dc1+dc2)*dt/2.); 156 : dc1 = dc2; 157 : t1 = t2; 158 : i0 = i0+1; 159 : 'SI' (i0 '>' nbtemps); 160 : 'QUIT' bloc5; 161 : 'FINSI'; 162 : 'FIN' bloc5; 163 : dc = (k+1)*integ1; 164 : msqflu = dc 'MASQ' 'EGINFE' 1.E-12; 165 : dc=dc+(msqflu*1.e-12); 166 : nc.iperi = dc**(-1); 167 : * 168 : * Cumul 169 : * ----- 170 : d0 = chun; 171 : d1 = chun; 172 : d2 = chun; 173 : nsim = 0; 174 : 'REPETER' bloc6; 175 : A = d0**(k+1.); B = A -dc; detr A; d1=B **(1./(k+1));detr B; 176 : *d1 = ( d0**(k+1.) - dc )**(1./(k+1)); 177 : 178 : **** NB: d1 = 1 - D1, d2= 1 - D2 179 : A = d1**(beta+1);B = chun - A; detr A; CE='LOG' B; detr B; 180 : A=alph1 * CE; detr CE; tmp = 'EXP' A; detr A; 181 : *tmp = 'EXP' ( alph1 * ('LOG' ( (chun - (d1**(beta+1)) ) ) ) ); 182 : 183 : A=df + tmp; B= 'LOG' A; detr A;CE = (alph1**(-1.)); 184 : AC = CE * B; detr CE; detr B; tmp2='EXP' AC; detr AC; 185 : *tmp2 = 'EXP' ( (alph1**(-1.)) * ('LOG' (df + tmp) ) ); 186 : 187 : A = chun - tmp2; d2=A **(1./(beta+1.)); detr A; 188 : *d2 = (chun - tmp2) ** (1./(beta+1.)) ; 189 : 190 : A=chun-msqalph; B=A * d2;detr A; detr d2; 191 : A=msqalph*d1; d2 = A + B; detr A; detr B; 192 : *d2 = msqalph*d1+((chun-msqalph)*d2); 193 : 194 : 'SI' ( (('MINI' d2) '<EG' 1.e-12) 'OU' ((&bloc6) '>' 1e8) ); 195 : 'QUIT' bloc6; 196 : 'FINSI'; 197 : nsim = nsim+1; 198 : d0 = d2; 199 : 'FIN' bloc6; 200 : nr . (iperi) = nsim; 201 : dfin.(iperi) = chun-d2; 202 : 'FIN' bloc4; 203 : 'FINPROC' nf nc nr dfin; 204 :
© Cast3M 2003 - All rights reserved.
Disclaimer