Download postddi.procedur

Back to the list

   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