Télécharger metallurgie_01.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : metallurgie_01.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. *__________________________________________________________________*
  6. * TEST METALLURGIE_01 *
  7. * *
  8. * CALCUL DE l'ERREUR ANALYTIQUE - CAST3M POUR KOISTINEN *
  9. * Le calcul est fait pour 15 pas de temps *
  10. *__________________________________________________________________*
  11. * *
  12. * Vitesse de refroidissement : 10 C/s *
  13. * - Transformation (type Koistinen-Marburger) de l'austenite *
  14. * en martensite 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' 'MART' ;
  35. LISTREAC = MOTS 'AUST' ;
  36. LISTPROD = MOTS 'MART' ;
  37. LISTTYPE = MOTS 'KOIS' ;
  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. MS1 = 380. ;
  50. KM1 = 0.0247 ;
  51.  
  52.  
  53.  
  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' (-4.D1 / 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 'MS1' MS1 'KM1' KM1 ;
  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. 'MART' (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. * On calcule la temperature debut de pas et la temperature fin de pas :
  111. T0 = EXTR T &CTEMP ;
  112. T1 = EXTR T (&CTEMP + 1);
  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. TBORN ='BORN' T 'MAXI' MS1;
  156.  
  157.  
  158.  
  159.  
  160. PANALY ='EXP' (-1. * KM1 * (MS1 - TBORN)) ;
  161.  
  162. EVOANA ='EVOL' 'BOUT' 'MANU' 'TEMP' LTCAL 'AUSTENITE' PANALY ;
  163. EVO_ANA . PAS = EVOANA ;
  164.  
  165. * Erreur absolue entre analytique et calculee :
  166. ERRABS = 'ABS' (PANALY '-' PROPi) ;
  167. EVOERR = 'EVOL' 'ROUG' 'MANU' 'TEMP' LTCAL 'ERREUR ABS.' ERRABS ;
  168. EVO_ERR . PAS = EVOERR ;
  169.  
  170. NORMERR ='MAXI' ERRABS ;
  171. ERR_TAB = ERR_TAB 'ET' NORMERR ;
  172. PAS_TAB = PAS_TAB 'ET' DTPS ;
  173. 'FIN' BOU_PAS;
  174.  
  175. *Post-traitement :
  176. 'SI' IDESS ;
  177. 'REPE' BOU_PAS ('DIME' LISTPAS) ;
  178. PAS = &BOU_PAS ;
  179. EVOERR = EVO_ERR . PAS ;
  180. DTPS ='EXTR' LISTPAS PAS ;
  181. TITRE ='CHAI' 'Erreur pour le pas de temps : ' DTPS ;
  182. 'DESS' EVOERR 'GRIL' 'TIRC' 'GRIS' 'TITR' TITRE ;
  183.  
  184. EVO = EVO_CAL . PAS ;
  185. EVOANA = EVO_ANA . PAS ;
  186. TITRE ='CHAI' 'KOISTINEN-MARBURGER - Calcul pour le pas de temps : ' DTPS ;
  187. TL ='TABL' ;
  188. 'SI' ( DTPS '>' 0.2D0 ) ;
  189. TL . 1 ='CHAI' 'MARQ ROND NOLI' ;
  190. 'SINO' ;
  191. TL . 1 ='CHAI' 'TIRR' ;
  192. 'FINS' ;
  193. TL . 2 ='CHAI' 'TIRR' ;
  194. TL . 'TITRE' = TABL ;
  195. TL . 'TITRE' . 1 = 'Evolution calculee' ;
  196. TL . 'TITRE' . 2 = 'Evolution analytique' ;
  197.  
  198.  
  199. 'DESS' (EVO 'ET' EVOANA) 'GRIL' 'TIRC' 'GRIS' 'TITR' TITRE 'LEGE' TL ;
  200. 'FIN' BOU_PAS;
  201.  
  202. ERRPAS ='EVOL' 'ROUG' 'MANU' 'PAS' PAS_TAB 'ERREUR ABS.' ERR_TAB ;
  203. ERRCAL = 5.0D-2* PAS_TAB/('EXTR' PAS_TAB 1) ;
  204. ERRCAL2 = 5.0D-2*((PAS_TAB/('EXTR' PAS_TAB 1))**2) ;
  205. ERR_O1 ='EVOL' 'BOUT' 'MANU' 'PAS' PAS_TAB 'ERREUR ABS.' ERRCAL ;
  206. ERR_O2 ='EVOL' 'BRIQ' 'MANU' 'PAS' PAS_TAB 'ERREUR ABS.' ERRCAL2;
  207. EVTOT = ERRPAS 'ET' ERR_O1 'ET' ERR_O2;
  208.  
  209. TDESS ='TABL';
  210. TDESS . 1 ='CHAI' ('TIRR MARQ ROND');
  211. TDESS . 2 ='CHAI' ('TIRR MARQ CROI');
  212. TDESS . 3 ='CHAI' ('TIRR MARQ PLUS');
  213. TDESS .'TITRE' ='TABL' ;
  214. TDESS .'TITRE' . 1 = 'Erreur de Cast3M ';
  215. TDESS .'TITRE' . 2 = 'Erreur en o(PAS) ';
  216. TDESS .'TITRE' . 3 = 'Erreur en o(PAS^{2})';
  217. TITRE ='CHAI' 'Evolution de l' APPO 'erreur absolue en fonction du pas de temps';
  218. 'DESS' EVTOT 'LOGX' 'LOGY' 'GRIL' 'TIRC' 'GRIS' 'TITR' TITRE 'LEGE' TDESS ;
  219. 'FINSI' ;
  220.  
  221. *Emission d'une erreur GIBIANE si l'erreur analytique - cast3m est trop grande :
  222. TOL1 =ERRCAL2 - ERR_TAB;
  223. LIST TOL1;
  224. 'SI'(('MINI' TOL1) '<' 0.D0);
  225. 'MESS' 'Erreur dans le calcul de la proportion d' APPO 'AUSTENITE';
  226. 'ERRE' 5;
  227. 'FINS';
  228. 'FIN';
  229.  
  230.  
  231.  

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