T17: Complex multi-stage heat treatments

This tutorial was tested on
MatCalc version 6.00 rel 0.282
license: free
database: mc_fe.tdb; mc_fe.ddb

Complimentary files

Click here to view the script for this tutorial

In this tutorial, we simulate the precipitation of NbC in the solid state during the continuous casting of steel and the subsequent austenitization treatment. The austenite / ferrite transformations of the matrix phases are taken into account. The continuous casting simulation starts at 1400°C with linear cooling to room temperature. The austenitization treatment is carried out at 1100°C for 2 hours. Heating and cooling rates are assumed to be 1 K/s. Furthermore, we assume that precipitation of NbC occurs only at austenite grain boundaries in the austenite during continuous casting. After transformation to ferrite, we assume that precipitation occurs at grain boundaries and dislocations.


  • Definition of complex heat treatments
  • The heat treatment editor
  • Multiple precipitation domains / matrix phase transformations

Setting up GUI, thermodynamics, precipitates and precipitation domains

Setup calculation

Create a workspace with the elements Fe, Nb and C and the phases BCC_A2 and FCC_A1. Enter the composition 0.1 wt.% C, 0.7 wt.% Nb. Create a precipitation domain named 'austenite' with the phase FCC_A1 as its matrix, and a precipitation domain named 'ferrite' with the phase BCC_A2 as its matrix. Create a precipitate phase FCC_A1#01_P0. Leave all the other settings at their default values. Read in the mobility data.

Setup GUI

In order to follow the precipitation kinetics simulation results, usually the plots for phase fraction, precipitation number density and mean radius are in the scope of interest. In cases of complex heat-treatments, a plot of the system temperature during the process time is also needed. Of course, these plots can be prepared manually by user, as done in the previous tutorials. However, due to the frequent need for these 4 plots, an automatic script preparing those is included in MatCalc. In order to use it, go to 'View' > 'Create new window' and switch to the 'user-defined' tab. Click on '03_kinetics_4_frames_T_f_n_r_logX' to open a window with those four plots already set.

 User-defined plots

Use a default x-axis and set the axis type to 'log'. Scale from '10..'. The axis title is 'time / s'.

Definition of the heat treatment

Open 'Global > Thermo-mech. treatments …'. This dialog represents a very useful editor for definition of complex process treatments by a sequence of linear segments.

 MatCalc treatments

Firstly, create a new treatment by clicking 'New …' with the name 'sample_ht'.

Since the present steel will transform from austenite to ferrite during the cooling process, we start with setting up a linear cooling segment from 1400°C to transformation temperature with a cooling rate of 1 K/s. Let us assume that this transformation occurs instantaneously at 600°C. Create a new segment with the button 'New segment'. Double-click the new line in the 'Data…' list box or highlight the line and press 'Edit'. In the following dialog, you can define the properties of the heat treatment segment. First of all, enter 'Start temperature' 1400°C. Then, in the temperature definition mode combo box, you can select which data you want to provide to define the segment. Since we want to cool to RT and know the cooling rate, we select 'End temperature & Heat/Cooling rate'. 'End temperature' is 600°C and 'Cooling rate' is -1.

The next important setting is the definition of the number of states to store during the calculation. By default, each segment stores 25 states with linear interval distances. Optionally, you can select logarithmic. Remain with the default settings.

Finally, select the precipitation domain for the segment, in our case 'austenite'. The dialog should now appear like this:

 MatCalc treatment segment

To set up the next segment, press the  MatCalc button button. Choose 'Yes' in the dialog asking about the creation of a new segment. The start temperature for each following segment is automatically set to the end temperature of the previous segment, that is 600°C. Enter the new end temperature (25°C) and select ferrite for the precipitation domain. The second segment should look like this:

 MatCalc segment

Continue to define the rest of the segments:

  1. Segment from RT to 850°C with 1 K/s heating rate. Since the precipitation domain does not change, select the 'inherit from previous segment' radio button. We assume that the ferrite to austenite transformation occurs at 850°C.
  2. Next segment from 850°C to 1100°C, however, with austenite as the precipitation domain (heating rate 1 K/s).
  3. an isothermal segment for two hours at 1100 °C. This time, the temperature definition mode is 'Heat/Cooling Rate & Delta-Time'. Heat/Cooling rate 0°C/s and 'Delta-time' is 7200 s (you can enter 2*60*60 as well).
  4. Define a cooling segment down to 600°C in austenite matrix (cooling rate 1 K/s).
  5. Finish with a segment from 600°C to RT having ferrite as a matrix (cooling rate 1 K/s).

If you have finished entering the segments, the entire heat treatment should look like this:

 MatCalc treatment

The last thing that we have to take care of is the changing nucleation sites for the NbC precipitates. According to our problem, we want to simulate NbC precipitation during cooling from continuous casting along the austenite grain boundaries. For all other parts of the heat treatment, we want to allow precipitation at grain boundaries and dislocations simultaneously.

This issue can be solved easily with the use of scripting commands that can be entered at the beginning and end of each of the heat treatment segments. Edit the first segment by double clicking it in the list. In the edit field for the pre-segment script, enter the command just as if you would do in the MatCalc console:

set-precipitation-parameter fcc_a1#01_p0 n s g

 MatCalc pre-segment script

This command defines the (n)ucleation (s)ites of the NbC to be at (g)rain boundaries. Since only grain boundaries are selected, please note that MatCalc will then use the diffusion geometry for grain boundary precipitates, which has been introduced MatCalc version 5.14. The following images show the two different diffusion geometries of MatCalc:

 MatCalc picture  MatCalc picture

Since we want to continue with different nucleation sites after the first cooling segment, we define a post-segment script for the first segment reading

set-precipitation-parameter fcc_a1#01_p0 n s dg

This command will define (d)islocations AND (g)rain boundaries as nucleation sites. MatCalc will then automatically use the spherical diffusion geometry again as shown in the left image.

 MatCalc post-segment script

Click 'OK' to go the heat treatment editor. The existence of pre-segment and post-segment scripts is indicated by the letter 'Y' in the heat treatment editor.

Again, click 'OK' and Save your file ('Tutorial_17.mcw').

Perform simulation

Start the precipitation simulation with 'Calc > Precipitate kinetics …'. In this dialog, the most important setting is the 'temperature control' selection. Select 'from heat treatment' and 'sample_ht'. It is not necessary to enter/modify the simulation end time because MatCalc will automatically stop when reaching the end of the heat treatment segments.

 MatCalc plot

Start the precipitation simulation with the 'Go' button.

After reaching the end of the heat treatment, the results look like follows (phase fraction is shown in logarithmic scale):

 MatCalc plot

 MatCalc plot

 MatCalc plot

 MatCalc plot

The temperature plot on top shows the expected profile. The next plot with the NbC phase fraction shows a strong increase of the phase fraction at around 80s, where the specimen ia at ~1300°C on heating. Next, the phase fraction increases when the ferrite region is entered which is due to the lower solubuility of NbC in ferrite compared to austenite. The next increase is observed in ferrite domain when the specimen is heated from room temperature. Later, during austenitization, the phase fraction is decreased slightly (beeter seen with the linear scale for phase fraction) because the solubility of the Nb and C is increased. The phase fraction remains almost constant during the rest of the process.

When looking at the plots for the mean radius and the number density of the NbC precipitates, interpretation of the results is more difficult. First, nucleation starts and proceeds until ~100 s. The nucleation stops because there are no more available nucleation sites at the grain boundary. Up to approximately 800 s, the existing NbC precipitates only grow. After switching to ferrite and adding dislocations as additional nucleation sites, the number density quickly increases in a burst of nucleation events. At the same time, the mean radius drops drastically, which is at first sight unexpected. However, since the plot displays the mean radius of the precipitate population, generation of a large number of new and small precipitates will decrease the mean value to the value of the highest number of precipitates. Later, in two more steps, the radius increases again due to growth as well as dissolution of a part of the small precipitates generated in the second nucleation burst.

Apparently, interpretation of this kind of simulation suffers from the fact that two different kind of precipitate populations, namely the one on the austenite grain boundaries and the other on the dislocations are treated as one. In the following section, a method of separation of populations is used that can be very useful in complex simulations.

Simulation with separation of precipitate populations

On many occasions, it can be useful to separate populations of one and the same precipitate type to facilitate interpretation of the results. For the present example, this is easily done by introduction of an additional precipitate phase FCC_A1#01_P1. Create an additional precipitate based on the FCC_A1#01 parent phase in the 'phase status ….' dialog. Highlight the FCC_A1#01 phase and press 'Create …' for a new precipitate phase.

 MatCalc phase status

Note that the suffix '_P1' of the new phase indicates that the precipitate is identical to the '_P0' in terms of its nucleus composition, however, it contains precipitate classes that can have appeared at different stages of the heat treatment.

Let us now set up the simulation such that the _P0 phase can only nucleate in the first segment of the heat treatment, that is cooling in the austenite, while the '_P1' population is not allowed to form. This can be done by defining 'nucleation sites' as 'none'. For all consecutive segments, nucleation of further '_P0' precipitates will be suppressed while the '_P1' population can nucleate at grain boundaries and dislocations. Make the following changes to the pre-segment and post-segment scripts of the first segment in the heat treatment editor:

 MatCalc Pre-Segment  MatCalc Post-Segment

Run the simulation again and modify the plots (add the series relevant for the FCC_A1#01_P1 phase) to display the properties of both precipitate populations. The result should look like this:

 MatCalc plot

 MatCalc plot

 MatCalc plot

Major advantage of simulations with separated precipitate populations is the ease of interpretation of the results. The second simulation clearly shows that the precipitates that are formed during cooling in the austenite grow to large size and remain almost unaltered during the later stages of the heat treatment. On the other hand, their phase fraction and number density is low, which indicates that their contribution to mechanical properties in terms of precipitation strengthening will be negligible. The second population appears in high number density and with small radius of approximately 10 nm. Moreover, the phase fraction is high, indicating a strong potential for material strengthening of this second wave of NbC precipitates.

Restricting precipitate nucleation to the selected precipitate domain

The difference between the FCC_A1#01_P0 and FCC_A1#01_P1 precipitate phases lies in their nucleation sites. FCC_A1#01_P0 represents the precipitate formed on the austenite grain boundaries during the continuous cooling, while FCC_A1#01_P1 represents the precipitate formed mainly in the ferrite region on both the dislocations and the grain boundaries. As the switch between the two precipitate phases coincides with the switch of the precipitation domains, an alternative implementation of the two phases population is possible, where each preciptate phase is restricted to form in the selected precipitation domain only.

Go to 'Global' > 'Phase status' and select 'FCC_A1#01_P0' phase. In the 'Nucleation' tab mark the 'restrict nucleation to prec domain' field and select 'austenite' in the adjacent drop-box.

 Restrict nucleation to precipitate domain

Repeat this for the 'FCC_A1#01_P1' phase, but select 'ferrite' as the precipitation domain. Next, have a look on the nucleation sites of those phases. The content of the tab represents the final state of the last simulation. Hence, the dislocations and the grain boundaries are selected for the '_P1'-phase, but no nucleation sites are selected for the '_P0'-phase. Again, select 'grain boundary' as nucleation sites for the 'FCC_A1#01_P0' phase.

 Nucleation sites for FCC_A1#01_P0

With these settings, the pre- and post-scripts are not needed anymore. To remove those, go to the 'Global' > 'Heat treatments' and click on the very first segment in the 'Data…' list box. In the segment editor dialog, click on the 'Clear' button below the content of the post-segment script. Select the 'Pre-Segment Script' tab and click on the 'Clear' button again. Close the heat treatment editor.

 Remove content of post-segment script

Duplicate and lock all series and start the simulation. The results look virtually identical with the previous simulation.

Consecutive articles

tutorials/t17.txt · Last modified: 2017/08/04 14:42 by pwarczok