T14: Introduction
to precipitation calculations
This tutorial was created on
MatCalc version 5.23 rel 1.026
license: free
database: mc_sample_fe.tdb; mc_sample_fe.ddb
Contents:
- Precipitation of cementite in a ferritic matrix in Fe-0.2 wt.%
C
- Creating a precipitation domain
- Creating a precipitate phase
- Mobility and physical data
- Plotting and interpreting calculation results
1. Setting up the system
A. Thermodynamic setup
The first step is to set up the thermodynamics of the system.
In the new workspace, open 'Global > Databases' and select
the elements Fe and C. For a precipitation calculation, it is only
necessary to include the phases which are directly involved in
the precipitation, i.e. the precipitating phase and the matrix
in which it forms. This example considers the precipitation of
cementite in ferrite, so the two phases to be selected are BCC_A2
and CEMENTITE. When the thermodynamic data have been read in, open 'Global > Composition' and
enter the carbon content of 0.2 wt.%.
B. Precipitation domain
The next two steps are to define and configure the precipitating
phase and the domain in which it will form. These two steps can
be done in either order, but in this example, the precipitation
domain will be set up first.
Open 'Global > Precipitation domains' and
click on the 'New' button
towards the bottom left. A box will appear, prompting for a name
for the new domain. Any name can be chosen here, for example
'Ferrite' or 'Matrix' and click 'OK'.

On the 'Phases' tab, choose 'BCC_A2' from
the drop-box to associate this phase with the newly defined domain.
Leave the rest of the settings as they are, and click 'OK'.

C. Precipitate phase
To create the precipitate phase, open 'Global > Phase status'.
In the 'Phases' list on the left-hand side, select 'CEMENTITE' and click on 'Create'. Select 'precipitate
(_Pnn)' from the drop
box which opens.

A new phase, CEMENTITE_P0 appears in the phase
list; click on this to select it. Open the 'precipitate' tab, and enter '250' in the '#
size classes' box, click on 'Initialize' and accept the warning message. The
precipitates are considered as belonging to a number of classes
of particles with the same radius and composition. Classes are
created, rearranged and deleted during the calculation, allowing
simulation of the precipitate size distribution.
The choice of the number of classes represents a trade-off between
calculation time and required precision. If only average properties,
such as the mean precipitate radius, are of interest, then it is
sufficient to use a small number of classes such as 10 or 20. By
contrast, to obtain the best possible simulation of size distribution,
the number of classes should be increased to a higher value, such
as 250 as used here. Leave all the other settings in this tab as
they are.
In the 'Attached to pd' drop box select the created domain ('Ferrite')

Open the 'nucleation' tab. If the contents of the 'Nucleation
model' and other drop-boxes are not visible, click on another phase
in the phase list at the left-hand side, then back on 'CEMENTITE_P0',
and this will load the text.
In the 'Nucleation sites' part of
this tab, remove the tick-mark by 'bulk (homogeneous)' and
instead click in the box beside 'dislocations' . Click on 'OK' to
save these settings and return to the main screen.

D. Loading mobility data
Simulations of precipitation require not only thermodynamic data
(already loaded in step A) but also mobility data, from which the
diffusivities of the elements in the phases can be calculated. Read in the mobility data by opening 'Global > Databases' and select 'Diffusion data' on the left side. Click on 'Read' and open 'mc_sample_ddb' database. Click on 'close'

E. Creating plots for the output
Create a new 'Plot: XY-data' window. Drag and drop 'F$CEMENTITE_P0' from the variables window to this plot. In the 'options' window,
set 'default x-axis' to 'log' type and select 'yes' for 'use
for all plots'. Change the title of 'default x-axis' to 'time
[h]' and the factor to '1/3600' to convert seconds into hours.
The title of the y-axis for 'plot #0' should also be changed to 'Phase
fraction of cementite precipitates'.
Next, create a new window 'Plot:
precipitate distribution - histogram' (p5) window. Select 'CEMENTITE_P0' from
the box which opens and click 'OK'. In
the 'options' window, change the number of '# size classes' for this
histogram to '20'. Set the x-axis label to 'Precipitate
radius [nm]'.
In the 'factor' line for this x-axis, enter '1e9'. This expresses the particle radii in nanometres instead of metres, making the scale easier to read. Change the y-axis label to 'Number
of precipitates'.

Both the histogram and the plot of phase fraction against time
are updated during the calculation, so it is possible to follow
the evolution of the size distribution and the phase fraction as
the calculation takes place.
2. The calculation
Calculate an equilibrium at 600°C in the usual way. Open 'Calc > Precipitate kinetics' or click
on the icon (keyboard shortcut: 'Ctrl + K').
Enter '3.6e5' as the simulation end
time. This is in seconds, so is equivalent to 100 hours. Note
that in the 'Temperature control' section,
an isothermal heat-treatment at 600°C has been selected by
default; leave this setting as it is.
To give more frequent updates of the graphs on the screen, the
'Update output every' number can be
decreased from 100 to 50. However, this will slow down the calculation
somewhat, so it is probably not advisable on slow machines. Leave
the other settings as they are, and click on 'Go'.

The information in the 'Output' window gives a summary of the
current system composition, simulation time
1, recs=1; its=1/1, dt=1e-012, time: 1e-012s (2,778e-016h), T=600 C (873,2 K), on Fr, 09:57:48
#Ferrite: BCC_A2 (dt=0, -)
FE +9,90768e-001(+0,00e+000) C +9,23192e-003(+0,00e+000)
CEMENTITE_P0: (0/..../0e+000/d) f=0/dfm=6840,7,nucl-dfm=6840,7, ans=4e+021
n_dot=0e+000 (ecdf=0), mcomp(its:0)=1 (res=0), step: (dt=0, -/-1)
+ nucleation of CEMENTITE_P0 started at 1,9531e-008 s, T=600 °C (873,16 K)
+ CEMENTITE_P0 precipitation has startet at 1,9531e-008 s, T=600 °C (873,16 K)
- First line:
1 -Number of iterations.
recs -Number of records in buffer.
dt -Last time step.
time -Absolute simulation time in [s].
T - Current temperature in [°C] (in [K]).
- Second line:
#Ferrite - Precipitation domain, BCC_A2 - matrix phase,
damping feature (dt=0,-) - maximum time step allowed due to the
matrix condition
- Third line:
FE +9.95367e-001(+0.00e+000) - Composition of matrix
- Fourth line:
CEMENTITE_P0: - Precipitate phase
(
0/..../0e+000) - (number of classes used /
'+', '-' or '.', meaning: New class built, class deleted or no
change / Number of precipitates for this phase)
f - mole fraction of precipitate phase
dfm - driving force for
formation of phase in [J]
nucl-dfm - driving force for nucleation
in [J]
ans - available nucleation sites
- Fifth line:
n_dot - nucleation rate
dt - maximum time step allowed due to the
precipitate condition
- Sixth line (and the following ones):
+ nucleation of CEMENTITE_P0 started at 0,00152588
s, T=600 °C
(873,16 K) - Additional information: Nucleation started '+' or
stopped '-' and the exact system parameters at that time.
Another output result, at a later stage:
2500, recs=277; its=1/1, dt=1,49133, time: 303,923s (0,08442h), T=600 C (873,2 K), on Fr, 10:27:17
#Ferrite: BCC_A2 (dt=6,6, matrix(C))
FE +9,99778e-001(+0,00e+000) C +2,21980e-004(+0,00e+000)
CEMENTITE_P0: (63/..gs/1e+019/d) f=0,03607/dfm=19,8,nucl-dfm=19,2, ans=0
n_dot=0e+000 (ecdf=1), mcomp(its:20)=1,5e-018 (res=1e-014), step: (dt=3,8e-006, rad-shrink/62)
In iteration 2500 above, the maximum time-step is set to 6.6 s
to avoid the C content from being depleted too fast (matrix(C)).
The carbon content of the matrix has decreased from 9.2x10-3 initially
(iteration 1) to 2.2x10-4 in iteration 2500. The precipitate phase
uses 63 of 250 classes and consists of roughly 1x1019 particles.
The mole fraction of cementite in the matrix is 0.0361 (3.61%).
There is a small positive driving force for nucleation (19.8 J)
and the nucleation rate (n_dot) is zero. This is because all nucleation
sites are saturated (ans=0).
To avoid numerical instability, unreasonably large changes, for
example in composition, precipitate volume, precipitate number
or driving force, are prevented. Here, the coarsening stage is
in progress and small particles are shrinking. A maximum value
of radius reduction per time-step is imposed (rad-shrink);
this reduces the time-step to 3.8x10-6 s for the next step. The
calculation speed can be increased by setting the windows to 'manual
update' so that the graphs are not updated.
Select 'View-Freeze
update' or press 'Ctrl+I' to
freeze the currently selected window. The same procedure unlocks
the window again. To update the window content, press 'Ctrl+U' or
select 'View-Update
all window contents'.
3. Interpreting the results
Nucleation, growth and coarsening
When the calculation is finished, add three new plots in the same
window as the plot of F$CEMENTITE_P0 versus time. Drag and drop
NUM_PART$CEMENTITE_P0 (number of cementite precipitates) into the
first of these, NUCL_RATE$CEMENTITE_P0 (nucleation rate) into the second.
In the third, add R_MEAN$CEMENTITE_P0 (mean radius), R_CRIT$CEMENTITE_P0 (critical radius), R_MIN$CEMENTITE_P0 (minimum radius) and R_MAX$CEMENTITE_P0 (maximum radius).
These variables can be found under 'kinetics:
precipitates' and
'kinetics: nucleation' in the 'variables' window.
Using these plots, the different stages of nucleation, growth
and coarsening can be identified.
During the nucleation stage, between
1e-11 and 1e-9 hours, the number of precipitates increases rapidly,
but since these precipitates are, as yet, extremely small, the
phase fraction of cementite also remains small. During this stage,
the nucleation rate rises initially, due to a positive driving
force for nucleation, and decreases again to zero when all the
available nucleation sites are occupied.
The next stage, from approximately 1e-9 to 1e-6 hours, is the
diffusion-controlled growth of these nuclei; this continues until
the equilibrium phase fraction of cementite reaches its equilibrium
value, as indicated by the plateau on the 'Phase
fraction' curve.
The number of precipitates does not change during this stage, but
there is an increase in radius which can just be detected on the
plot below. There follows a period in which there is little or
no change in any of the three parameters.
Finally, at just over 1e-3 hours onwards, there is the onset of
coarsening, which is characterised
by a decrease in the number of precipitates accompanied by an increase
in radius. The critical radius rises and becomes larger than the
smallest precipitate classes. Therefore these classes start to
dissolve and the newly available carbon is used to grow the larger
precipitates (Gibbs-Thomson effect). The critical radius is unstable
(leading to a 'noisy' appearance on the graph) because whenever
a small class is deleted, the carbon content of the matrix rises
again, affecting the critical radius.




Histograms of precipitate size distribution
The plot above shows only the variation of the mean radius with
time, but more detailed information on the distribution of particle
sizes can be found on the histogram. At the end of the calculation,
the final size distribution is shown on the histogram. The distribution
at other stages of the calculation can be recalled using 'Global > Buffers > Edit
buffer states'. This brings up a list of all the states
saved in the memory, with details of time, temperature and time-step.
Selecting one of these records loads the corresponding particle
size distribution into the histogram if the 'auto
load' box at the bottom left is
ticked. Otherwise, it can be loaded by clicking on the 'load
selected' button.

In the final part of this tutorial, the precipitate size distribution
as calculated by MatCalc will be compared with the Lifshitz-Slyozov-Wagner
(LSW) distribution given by the following equation:

Create a new p5 window for CEMENTITE_P0 and set the number of
classes on the histogram to 20 as before. In the options under
'plots', select 'density' for 'scale
frequency' and 'yes' for 'scale radius'.
Set the scaling of the x-axis as '0..1.499' because
the LSW function is only defined between 0 and 1.5.

Enter the LSW function, either using the 'Functions and Variables' box or by using the following command-line in the console:
set-function-expression LSW x^2*(3/(3+x))^(7/3)*((3/2)/(3/2-x))^(11/3)*exp(-x/(3/2-x))*4/9
Then add the function to the scaled plot, either using the right-click
menu in the Options window to add a new 'function/expression' series
(as it was done in Tutorial 6) or by using the following command-line:
set-plot-option . s n f LSW
0..1.5
The plot below shows a comparison between the LSW function and
the histogram simulated by MatCalc.

‹‹ to the Top ›› ‹‹ to
the Tutorial files ›› |