Télécharger postddi.procedur

Retour à la liste

Numérotation des lignes :

  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 - Tous droits réservés.
Mentions légales