Télécharger metallurgie_02.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : metallurgie_02.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. *__________________________________________________________________*
  6. * TEST METALLURGIE_02 *
  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. * - Caracteristiques du modele constantes *
  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.  
  51. F1 = 1.3 ;
  52.  
  53. TAU1 = 15.2 ;
  54.  
  55. *Declaration de la vitesse de refroidissement : en Degres/s
  56. DT_vit = -10. ;
  57.  
  58. *Calcul de la duree du refroidissement :
  59. DUREE = -1. * (TINI - TFIN) / DT_vit ;
  60.  
  61. *Declaration du Temps initial :
  62. TEMPINI = 0. ;
  63. *Calcul du Temps final :
  64. TEMPFIN = TEMPINI + DUREE ;
  65.  
  66. *Calcul du pas de temps en fonction de la vitesse de refroidissement :
  67. NBPAST = 15.D0 ;
  68. LDTini ='LOG' (-1.D2 / DT_vit) ;
  69. LDTfin ='LOG' (-1.D-2 / DT_vit) ;
  70. PASLOG = (LDTfin - LDTini) / (NBPAST - 1);
  71. LISTLOG='PROG' LDTini 'PAS' PASLOG LDTfin;
  72. LISTPAS='EXP' LISTLOG ;
  73.  
  74. ERR_TAB ='PROG' ;
  75. PAS_TAB ='PROG' ;
  76. EVO_ERR ='TABL' ;
  77. EVO_ANA ='TABL' ;
  78. EVO_CAL ='TABL' ;
  79.  
  80. *Boucle sur les differents taille de pas de temps :
  81. MATCP1 ='MATE' MODCP1 'PEQ1' PEQ1 'F1' F1 'TAU1' TAU1;
  82. MATCP2 = MATCP1;
  83. 'REPE' BOU_PAS ('DIME' LISTPAS) ;
  84. PAS =&BOU_PAS ;
  85. DTPS ='EXTR' LISTPAS PAS ;
  86. LTCAL ='PROG' TEMPINI 'PAS' DTPS 'NPAS' (ENTI 'INFE' (DUREE/DTPS)) ;
  87. T = TINI + (DT_vit * (LTCAL - TEMPINI));
  88. DTEMP =('EXTR' T 2) - ('EXTR' T 1);
  89.  
  90. ALPHA = 1. ;
  91. * Initialisation de CHE1 : proportions de phases initiales :
  92. CTYP ='CHAI' 'VARIABLES_INTERNES' ;
  93. CHE1 ='MANU' 'CHML' MODCP1 'AUST' ALPHA
  94. 'BAIN' (1.D0 - ALPHA)
  95. 'TYPE' CTYP 'NOEUD' ;
  96.  
  97. PROPi ='PROG' ALPHA ;
  98.  
  99.  
  100.  
  101.  
  102. CHETPS0 ='MANU' 'CHML' MAILT 'TEMP' TEMPINI ;
  103. CHETPS1 = CHETPS0 '+' DTPS ;
  104.  
  105. CHT0 ='MANU' 'CHML' MAILT 'T' TINI ;
  106. CHT1 = CHT0 + DTEMP ;
  107.  
  108. nbpas=('DIME' LTCAL) - 1;
  109. 'REPE' CTEMP nbpas;
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122. * Pour destruction
  123. CHDET0 = CHETPS0 ;
  124. CHDET1 = CHETPS1 ;
  125. CHDET2 = CHT0 ;
  126. CHDET3 = CHT1 ;
  127. LRDET0 = PROPi ;
  128. CHEDET = CHE1 ;
  129. CHE1 ='COMP' MODCP1 (CHE1 'ET' CHETPS0 'ET' CHT0 'ET' MATCP1 ) ( CHETPS1 'ET' CHT1 'ET' MATCP2 ) ;
  130.  
  131. * Extraction pour tracer :
  132. PiEvol ='EXTR' CHE1 'AUST' 1 1 1;
  133. PROPi = PROPi 'ET' PiEvol ;
  134.  
  135. CHETPS0 = CHETPS0 '+' DTPS ;
  136. CHETPS1 = CHETPS0 '+' DTPS ;
  137.  
  138. CHT0 = CHT0 '+' DTEMP ;
  139. CHT1 = CHT0 '+' DTEMP ;
  140.  
  141. * Destruction
  142. 'DETR' CHDET0;
  143. 'DETR' CHDET1;
  144. 'DETR' CHDET2;
  145. 'DETR' CHDET3;
  146. 'DETR' LRDET0;
  147. 'DETR' CHEDET;
  148. 'FIN' CTEMP;
  149.  
  150. * Evolution calculee :
  151. EVO = 'EVOL' 'NOIR' 'MANU' 'TEMP' LTCAL 'PROP' PROPi ;
  152. EVO_CAL . PAS = EVO ;
  153.  
  154. * Evolution analytique :
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162. PANALY = 1.D0 - (PEQ1 * (1.D0 - ('EXP' (-1.D0*F1*(LTCAL - TEMPINI)/TAU1))));
  163.  
  164. EVOANA ='EVOL' 'BOUT' 'MANU' 'TEMP' LTCAL 'AUSTENITE' PANALY ;
  165. EVO_ANA . PAS = EVOANA ;
  166.  
  167. * Erreur absolue entre analytique et calculee :
  168. ERRABS = 'ABS' (PANALY '-' PROPi) ;
  169. EVOERR = 'EVOL' 'ROUG' 'MANU' 'TEMP' LTCAL 'ERREUR ABS.' ERRABS ;
  170. EVO_ERR . PAS = EVOERR ;
  171.  
  172. NORMERR ='MAXI' ERRABS ;
  173. ERR_TAB = ERR_TAB 'ET' NORMERR ;
  174. PAS_TAB = PAS_TAB 'ET' DTPS ;
  175. 'FIN' BOU_PAS;
  176.  
  177. *Post-traitement :
  178. 'SI' IDESS ;
  179. 'REPE' BOU_PAS ('DIME' LISTPAS) ;
  180. PAS = &BOU_PAS ;
  181. EVOERR = EVO_ERR . PAS ;
  182. DTPS ='EXTR' LISTPAS PAS ;
  183. TITRE ='CHAI' 'Erreur pour le pas de temps : ' DTPS ;
  184. 'DESS' EVOERR 'GRIL' 'TIRC' 'GRIS' 'TITR' TITRE ;
  185.  
  186. EVO = EVO_CAL . PAS ;
  187. EVOANA = EVO_ANA . PAS ;
  188. TITRE ='CHAI' 'LEBLOND - Calcul pour le pas de temps : ' DTPS ;
  189. TL ='TABL' ;
  190. 'SI' ( DTPS '>' 0.2D0 ) ;
  191. TL . 1 ='CHAI' 'MARQ ROND NOLI' ;
  192. 'SINO' ;
  193. TL . 1 ='CHAI' 'TIRR' ;
  194. 'FINS' ;
  195. TL . 2 ='CHAI' 'TIRR' ;
  196. TL . 'TITRE' = TABL ;
  197. TL . 'TITRE' . 1 = 'Evolution calculee' ;
  198. TL . 'TITRE' . 2 = 'Evolution analytique' ;
  199.  
  200.  
  201. 'DESS' (EVO 'ET' EVOANA) 'GRIL' 'TIRC' 'GRIS' 'TITR' TITRE 'LEGE' TL ;
  202. 'FIN' BOU_PAS;
  203.  
  204. ERRPAS ='EVOL' 'ROUG' 'MANU' 'PAS' PAS_TAB 'ERREUR ABS.' ERR_TAB ;
  205. ERRCAL = 2.0D-2* PAS_TAB/('EXTR' PAS_TAB 1) ;
  206. ERRCAL2 = 2.0D-2*((PAS_TAB/('EXTR' PAS_TAB 1))**2) ;
  207. ERR_O1 ='EVOL' 'BOUT' 'MANU' 'PAS' PAS_TAB 'ERREUR ABS.' ERRCAL ;
  208. ERR_O2 ='EVOL' 'BRIQ' 'MANU' 'PAS' PAS_TAB 'ERREUR ABS.' ERRCAL2;
  209. EVTOT = ERRPAS 'ET' ERR_O1 'ET' ERR_O2;
  210.  
  211. TDESS ='TABL';
  212. TDESS . 1 ='CHAI' ('TIRR MARQ ROND');
  213. TDESS . 2 ='CHAI' ('TIRR MARQ CROI');
  214. TDESS . 3 ='CHAI' ('TIRR MARQ PLUS');
  215. TDESS .'TITRE' ='TABL' ;
  216. TDESS .'TITRE' . 1 = 'Erreur de Cast3M ';
  217. TDESS .'TITRE' . 2 = 'Erreur en o(PAS) ';
  218. TDESS .'TITRE' . 3 = 'Erreur en o(PAS^{2})';
  219. TITRE ='CHAI' 'Evolution de l' APPO 'erreur absolue en fonction du pas de temps';
  220. 'DESS' EVTOT 'LOGX' 'LOGY' 'GRIL' 'TIRC' 'GRIS' 'TITR' TITRE 'LEGE' TDESS ;
  221. 'FINSI' ;
  222.  
  223. *Emission d'une erreur GIBIANE si l'erreur analytique - cast3m est trop grande :
  224. TOL1 =ERRCAL2 - ERR_TAB;
  225. LIST TOL1;
  226. 'SI'(('MINI' TOL1) '<' 0.D0);
  227. 'MESS' 'Erreur dans le calcul de la proportion d' APPO 'AUSTENITE';
  228. 'ERRE' 5;
  229. 'FINS';
  230. 'FIN';
  231.  
  232.  
  233.  

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