Télécharger metallurgie_04.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : metallurgie_04.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. *__________________________________________________________________*
  6. * TEST METALLURGIE_04 *
  7. * *
  8. * CALCUL DE l'ERREUR ANALYTIQUE - CAST3M POUR LEBLOND *
  9. * Le calcul est fait pour 15 pas de temps *
  10. *__________________________________________________________________*
  11. * *
  12. * Vitesse de refroidissement : 10 C/s *
  13. * - Transformation (type Leblond) de l'austenite *
  14. * en bainite seulement *
  15. * - Caracteristique F variable lineairement avec le temps *
  16. *__________________________________________________________________*
  17. * *
  18. * On trace la courbe de l'erreur en fonction du pas de temps, *
  19. * sur une echelle log-log *
  20. *__________________________________________________________________*
  21. *
  22. 'OPTI' 'TRAC' PSC 'EPTR' 10 ;
  23. IDESS = VRAI ;
  24. APPO ='CHAI' '';
  25.  
  26. 'OPTI' 'DIME' 2 'ELEM' 'TRI3';
  27.  
  28. P1 = 0. 0. ;
  29. P2 = 1. 0. ;
  30. P3 = 0. 1. ;
  31.  
  32. MAILT = MANU 'TRI3' P1 P2 P3;
  33.  
  34. LISTPHA = MOTS 'AUST' 'BAIN' ;
  35. LISTREAC = MOTS 'AUST' ;
  36. LISTPROD = MOTS 'BAIN' ;
  37. LISTTYPE = MOTS 'LEBL' ;
  38. NOMCONS ='16MND5' ;
  39.  
  40. MODCP1 = MODE MAILT 'METALLURGIE' 'PHASES' LISTPHA
  41. 'REACTIFS' LISTREAC
  42. 'PRODUITS' LISTPROD
  43. 'TYPE' LISTTYPE
  44. 'CONS' NOMCONS ;
  45.  
  46. TINI = 900. ;
  47. TFIN = 20. ;
  48.  
  49. PEQ1 = 0.47 ;
  50. F1 ='EVOL' 'MANU' 'T' (PROG 20. 900.)
  51. 'F' (PROG 3.2 0.1 );
  52. TAU1 = 15.2 ;
  53.  
  54. *Declaration de la vitesse de refroidissement : en Degres/s
  55. DT_vit = -10. ;
  56.  
  57. *Calcul de la duree du refroidissement :
  58. DUREE = -1. * (TINI - TFIN) / DT_vit ;
  59.  
  60. *Declaration du Temps initial :
  61. TEMPINI = 0. ;
  62. *Calcul du Temps final :
  63. TEMPFIN = TEMPINI + DUREE ;
  64.  
  65. *Calcul du pas de temps en fonction de la vitesse de refroidissement :
  66. NBPAST = 15.D0 ;
  67. LDTini ='LOG' (-1.D2 / DT_vit) ;
  68. LDTfin ='LOG' (-1.D-2 / DT_vit) ;
  69. PASLOG = (LDTfin - LDTini) / (NBPAST - 1);
  70. LISTLOG='PROG' LDTini 'PAS' PASLOG LDTfin;
  71. LISTPAS='EXP' LISTLOG ;
  72.  
  73. ERR_TAB ='PROG' ;
  74. PAS_TAB ='PROG' ;
  75. EVO_ERR ='TABL' ;
  76. EVO_ANA ='TABL' ;
  77. EVO_CAL ='TABL' ;
  78.  
  79. *Boucle sur les differents taille de pas de temps :
  80. MATCPa ='MATE' MODCP1 'TAU1' TAU1 'PEQ1' PEQ1 ;
  81.  
  82. 'REPE' BOU_PAS ('DIME' LISTPAS) ;
  83. PAS =&BOU_PAS ;
  84. DTPS ='EXTR' LISTPAS PAS ;
  85. LTCAL ='PROG' TEMPINI 'PAS' DTPS 'NPAS' (ENTI 'INFE' (DUREE/DTPS)) ;
  86. T = TINI + (DT_vit * (LTCAL - TEMPINI));
  87. DTEMP =('EXTR' T 2) - ('EXTR' T 1);
  88.  
  89. ALPHA = 1. ;
  90. * Initialisation de CHE1 : proportions de phases initiales :
  91. CTYP ='CHAI' 'VARIABLES_INTERNES' ;
  92. CHE1 ='MANU' 'CHML' MODCP1 'AUST' ALPHA
  93. 'BAIN' (1.D0 - ALPHA)
  94. 'TYPE' CTYP 'NOEUD' ;
  95.  
  96. PROPi ='PROG' ALPHA ;
  97.  
  98.  
  99.  
  100.  
  101. CHETPS0 ='MANU' 'CHML' MAILT 'TEMP' TEMPINI ;
  102. CHETPS1 = CHETPS0 '+' DTPS ;
  103.  
  104. CHT0 ='MANU' 'CHML' MAILT 'T' TINI ;
  105. CHT1 = CHT0 + DTEMP ;
  106.  
  107. nbpas=('DIME' LTCAL) - 1;
  108. 'REPE' CTEMP nbpas;
  109. * On calcule la temperature debut de pas et la temperature fin de pas :
  110. T0 = EXTR T &CTEMP ;
  111. T1 = EXTR T (&CTEMP + 1);
  112.  
  113. * On determine les differents parametres materiaux :
  114. F1L ='IPOL' T0 F1 ;
  115. F2L ='IPOL' T1 F1 ;
  116.  
  117. * On instancie le Materiaux debut de pas et le materiaux fin de pas :
  118. MATCP1 = MATCPa 'ET' ('MATE' MODCP1 'F1' F1L) ;
  119. MATCP2 = MATCPa 'ET' ('MATE' MODCP1 'F1' F2L) ;
  120.  
  121. * Pour destruction
  122. CHDET0 = CHETPS0 ;
  123. CHDET1 = CHETPS1 ;
  124. CHDET2 = CHT0 ;
  125. CHDET3 = CHT1 ;
  126. LRDET0 = PROPi ;
  127. CHEDET = CHE1 ;
  128. CHE1 ='COMP' MODCP1 (CHE1 'ET' CHETPS0 'ET' CHT0 'ET' MATCP1 ) ( CHETPS1 'ET' CHT1 'ET' MATCP2 ) ;
  129.  
  130. * Extraction pour tracer :
  131. PiEvol ='EXTR' CHE1 'AUST' 1 1 1;
  132. PROPi = PROPi 'ET' PiEvol ;
  133.  
  134. CHETPS0 = CHETPS0 '+' DTPS ;
  135. CHETPS1 = CHETPS0 '+' DTPS ;
  136.  
  137. CHT0 = CHT0 '+' DTEMP ;
  138. CHT1 = CHT0 '+' DTEMP ;
  139.  
  140. * Destruction
  141. 'DETR' CHDET0;
  142. 'DETR' CHDET1;
  143. 'DETR' CHDET2;
  144. 'DETR' CHDET3;
  145. 'DETR' LRDET0;
  146. 'DETR' CHEDET;
  147. 'FIN' CTEMP;
  148.  
  149. * Evolution calculee :
  150. EVO = 'EVOL' 'NOIR' 'MANU' 'TEMP' LTCAL 'PROP' PROPi ;
  151. EVO_CAL . PAS = EVO ;
  152.  
  153. * Evolution analytique :
  154. Fp1 ='IPOL' TINI F1 ;
  155. Fp2 ='IPOL' TFIN F1 ;
  156. A =(Fp2 - Fp1) / (TEMPFIN - TEMPINI) ;
  157. B = Fp1 - (A * TEMPINI) ;
  158.  
  159. PANALY = 1.D0 - (PEQ1 * (1.D0 - ('EXP' (-1.D0*((LTCAL*((A*LTCAL)+(2.D0*B))) - (TEMPINI*((A*TEMPINI)+(2.D0*B))))/(2.D0*TAU1))))) ;
  160.  
  161. EVOANA ='EVOL' 'BOUT' 'MANU' 'TEMP' LTCAL 'AUSTENITE' PANALY ;
  162. EVO_ANA . PAS = EVOANA ;
  163.  
  164. * Erreur absolue entre analytique et calculee :
  165. ERRABS = 'ABS' (PANALY '-' PROPi) ;
  166. EVOERR = 'EVOL' 'ROUG' 'MANU' 'TEMP' LTCAL 'ERREUR ABS.' ERRABS ;
  167. EVO_ERR . PAS = EVOERR ;
  168.  
  169. NORMERR ='MAXI' ERRABS ;
  170. ERR_TAB = ERR_TAB 'ET' NORMERR ;
  171. PAS_TAB = PAS_TAB 'ET' DTPS ;
  172. 'FIN' BOU_PAS;
  173.  
  174. *Post-traitement :
  175. 'SI' IDESS ;
  176. 'REPE' BOU_PAS ('DIME' LISTPAS) ;
  177. PAS = &BOU_PAS ;
  178. EVOERR = EVO_ERR . PAS ;
  179. DTPS ='EXTR' LISTPAS PAS ;
  180. TITRE ='CHAI' 'Erreur pour le pas de temps : ' DTPS ;
  181. 'DESS' EVOERR 'GRIL' 'TIRC' 'GRIS' 'TITR' TITRE ;
  182.  
  183. EVO = EVO_CAL . PAS ;
  184. EVOANA = EVO_ANA . PAS ;
  185. TITRE ='CHAI' 'LEBLOND - Calcul pour le pas de temps : ' DTPS ;
  186. TL ='TABL' ;
  187. 'SI' ( DTPS '>' 0.2D0 ) ;
  188. TL . 1 ='CHAI' 'MARQ ROND NOLI' ;
  189. 'SINO' ;
  190. TL . 1 ='CHAI' 'TIRR' ;
  191. 'FINS' ;
  192. TL . 2 ='CHAI' 'TIRR' ;
  193. TL . 'TITRE' = TABL ;
  194. TL . 'TITRE' . 1 = 'Evolution calculee' ;
  195. TL . 'TITRE' . 2 = 'Evolution analytique' ;
  196.  
  197.  
  198. 'DESS' (EVO 'ET' EVOANA) 'GRIL' 'TIRC' 'GRIS' 'TITR' TITRE 'LEGE' TL ;
  199. 'FIN' BOU_PAS;
  200.  
  201. ERRPAS ='EVOL' 'ROUG' 'MANU' 'PAS' PAS_TAB 'ERREUR ABS.' ERR_TAB ;
  202. ERRCAL = 9.0D-3* PAS_TAB/('EXTR' PAS_TAB 1) ;
  203. ERRCAL2 = 9.0D-3*((PAS_TAB/('EXTR' PAS_TAB 1))**2) ;
  204. ERR_O1 ='EVOL' 'BOUT' 'MANU' 'PAS' PAS_TAB 'ERREUR ABS.' ERRCAL ;
  205. ERR_O2 ='EVOL' 'BRIQ' 'MANU' 'PAS' PAS_TAB 'ERREUR ABS.' ERRCAL2;
  206. EVTOT = ERRPAS 'ET' ERR_O1 'ET' ERR_O2;
  207.  
  208. TDESS ='TABL';
  209. TDESS . 1 ='CHAI' ('TIRR MARQ ROND');
  210. TDESS . 2 ='CHAI' ('TIRR MARQ CROI');
  211. TDESS . 3 ='CHAI' ('TIRR MARQ PLUS');
  212. TDESS .'TITRE' ='TABL' ;
  213. TDESS .'TITRE' . 1 = 'Erreur de Cast3M ';
  214. TDESS .'TITRE' . 2 = 'Erreur en o(PAS) ';
  215. TDESS .'TITRE' . 3 = 'Erreur en o(PAS^{2})';
  216. TITRE ='CHAI' 'Evolution de l' APPO 'erreur absolue en fonction du pas de temps';
  217. 'DESS' EVTOT 'LOGX' 'LOGY' 'GRIL' 'TIRC' 'GRIS' 'TITR' TITRE 'LEGE' TDESS ;
  218. 'FINSI' ;
  219.  
  220. *Emission d'une erreur GIBIANE si l'erreur analytique - cast3m est trop grande :
  221. TOL1 =ERRCAL2 - ERR_TAB;
  222. LIST TOL1;
  223. 'SI'(('MINI' TOL1) '<' 0.D0);
  224. 'MESS' 'Erreur dans le calcul de la proportion d' APPO 'AUSTENITE';
  225. 'ERRE' 5;
  226. 'FINS';
  227. 'FIN';
  228.  
  229.  
  230.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales