Strength Modeling
On this page
Example - The Al-Sc system
Precipitates obstruct dislocation movement and thus can increase the strength of an alloy in a process known at age/precipitation hardening. There are several mechanisms for how precipitates create an obstable for dislocations.
The two main mechanisms involved are dislocation cutting and dislocation bowing. In the cutting mechanism, the dislocation cuts through the precipitate. Based off differences in properties of the matrix and precipitate phase, an additional force is required for the dislocation to cut through the precipitate. In the dislocation bowing mechanism (Orowan strengthening), the dislocation bows around the precipitate, creating a dislocation loop when it crosses over.
In the Al-Sc system, $Al_3Sc$ can precipitate into an $\alpha$-Al (FCC) matrix. Setting up the model will be similar to the Binary Precipitation example. Here, the time will be simulated up to 250 hours.
1 import numpy as np
2 from kawin.thermo import BinaryThermodynamics
3
4 therm = BinaryThermodynamics('AlScZr.tdb', ['AL', 'SC'], ['FCC_A1', 'AL3SC'])
5 therm.setGuessComposition(0.24)
6 diff = lambda T: 1.9e-4 * np.exp(-164000 / (8.314*T))
7 therm.setDiffusivity(diff, 'FCC_A1')
As with the binary precipitation example, the model inputs are supplied here: initial composition, temperature, interfacial energy, molar volume, diffusivity and thermodynamics.
8 from kawin.precipitation import MatrixParameters, PrecipitateParameters
9
10 matrix = MatrixParameters(['SC'])
11 matrix.initComposition = 0.002
12 matrix.volume.setVolume((0.409e-9)**3, 'VA', 4)
13
14 precipitate = PrecipitateParameters('AL3SC')
15 precipitate.gamma = 0.1
16 precipitate.volume.setVolume((0.4196e-9)**3, 'VA', 4)
17 precipitate.nucleation.setNucleationType('bulk')
The strength model is implemented in the kawin.Strength module. For all strengthening mechanisms, parameters for the dislocation line tension is needed. This includes the shear modulus, the Burgers vector and the poisson ratio.
There are several dislocation cutting mechanisms, where each is divided into a weak+coherent and strong+coherent contribution:
- Coherency - lattice misfit between matrix and precipitate creates a strain field that interacts with the dislocation
- Requires lattice misfit strain
- Modulus - dislocation energies differs between matrix and precipitate due to differences in the shear modulus
- Requires shear modulus of preciptiate phase
- Anti-phase boundary - an ordered precipitate will form an anti-phase boundary if a dislocation cuts through
- Requires anti-phase boundary energy
- Stacking fault energy (SFE) - partial dislocations that creates stacking faults will have different energies if the SFE differs between the matrix and precipitate
- Requires SFE of matrix and precipitate and Burgers vector of precipitate
- Interfacial energy (IE) - the surface area of a precipitate increases slightly if a dislocation cuts through it
- Requires interfacial energy between matrix and precipitate
The differences between the weak+coherent and strong+coherent mechanisms is based off how must resistance a particle will give to dislocation cutting.
For dislocation bowing, the precipitate becomes large and incoherent with the matrix. This mechanism is based off Orowan strengthening and requires no additional parameters apart from the parameters needed to define the dislocation line tension.
For the Al-Sc system, parameters will be included for the coherency, modulus, anti-phase boundary and interfacial energy mechanism.
The precipitate and strength model can be integrated by the StrengthModel.insertStrength function. This adds functions for the precipitate model to perform certain calculations necessary for the strength model. This includes the mean projected radius and inter-particle distance on a slip plane.
- Note: parameters for the strengthening mechanisms are not actually required for the precipitate model. The strength model will still work if the two models are combined first, then the precipitate model is solved and the strength parameters are added at the end.
18 from kawin.precipitation.coupling import StrengthModel, DislocationParameters
19 from kawin.precipitation.coupling import CoherencyContribution, ModulusContribution, APBContribution, InterfacialContribution
20
21 dislocations = DislocationParameters(G=25.4e9, b=0.286e-9, nu=0.34)
22 coherency = CoherencyContribution(eps=2/3*0.0125)
23 modulus = ModulusContribution(Gp=67.9e9)
24 apb = APBContribution(yAPB=0.5)
25 interfacial = InterfacialContribution(gamma=0.1)
26
27 sm = StrengthModel(precipitate, [coherency, modulus, apb, interfacial], dislocations)
Plotting the strengthening models can be done as a function of the particle radius or a function of time (if a solved precipitate model is supplied). For plotting over radius, the mean projected radius and inter-particle distance are needed.
Estimating the inter-particle distance from the mean projected radius can be done by: $$ L_s = r_{ss} \left(\sqrt{\frac{3\pi}{4f}} - \frac{\pi}{2} \right) $$ Where f is the volume fraction of precipitates (taken to be 0.75% for Al-0.2Sc at.%).
In the KWN model, the mean projected radius and inter-particle distance is be determined from the particle size distribution by: $$ r_{ss} = \sqrt{\frac{2}{3}} \frac{\sum{n_i r^2_i}}{\sum{n_i r_i}} $$ $$ L_s =\sqrt{\frac{ln{3}}{2\pi\sum{n_i r_i}} + (2r_{ss})^2} - 2r_{ss} $$
28 import matplotlib.pyplot as plt
29 from kawin.precipitation.coupling import OrowanContribution, plotContribution, plotPrecipitateStrength
30
31 fig, ax = plt.subplots(3,2,figsize=(10,10))
32 rss = np.linspace(0, 14e-9, 1000)
33 ls = rss * (np.sqrt(3*np.pi/4/0.0075) - np.pi/2)
34
35 plotContribution(rss, ls, coherency, dislocations, ax=ax[0,0])
36 plotContribution(rss, ls, modulus, dislocations, ax=ax[0,1])
37 plotContribution(rss, ls, apb, dislocations, ax=ax[1,0])
38 plotContribution(rss, ls, interfacial, dislocations, ax=ax[1,1])
39 plotContribution(rss, ls, OrowanContribution(), dislocations, ax=ax[2,0])
40 plotPrecipitateStrength(rss, ls, sm, 'AL3SC', True, ax=ax[2,1])
41 ax[1,1].set_ylim([0, 25])
42 ax[2,0].set_ylim([0, 300])
43 ax[2,1].set_ylim([0, 750])
44 fig.tight_layout()

45 from kawin.precipitation import PrecipitateModel
46
47 model = PrecipitateModel(matrix, precipitate, therm, 400+273.15)
48 model.addCouplingModel(sm)
49 model.solve(250*3600, verbose=True, vIt=5000)
N Time (s) Sim Time (s) Temperature (K) Matrix Comp
0 0.0e+00 0.0 673 0.2000
Phase Prec Density (#/m3) Volume Frac Avg Radius (m) Driving Force (J/mol)
AL3SC 0.000e+00 0.0000 0.0000e+00 3.6624e+03
N Time (s) Sim Time (s) Temperature (K) Matrix Comp
3744 9.0e+05 34.1 673 0.0165
Phase Prec Density (#/m3) Volume Frac Avg Radius (m) Driving Force (J/mol)
AL3SC 7.190e+19 0.7345 2.8049e-08 8.0770e+01
Plotting the strength contributions are done through the StrengthModel object. In plotContributions is set to False, then the overall strength contribution will be plotting. If True, then the strength contributions from the precipitate hardening mechanisms, solid solution strengthening and the base strength will be plotted. Since the solid solution strengthening and base strength was not included in the model, only the precipitate hardening mechanisms contributed to the overall strength.
50 from kawin.precipitation.Plot import plotPrecipitateDensity, plotVolumeFraction, plotAverageRadius
51 from kawin.precipitation.coupling import plotAlloyStrength
52
53 fig, ax = plt.subplots(2, 2, figsize=(10, 8))
54
55 plotPrecipitateDensity(model, timeUnits='h', ax=ax[0,0])
56 plotVolumeFraction(model, timeUnits='h', ax=ax[0,1])
57 plotAverageRadius(model, timeUnits='h', ax=ax[1,0])
58 plotAlloyStrength(model, sm, plotContributions=True, timeUnits='h', ax=ax[1,1])
59
60 fig.tight_layout()

Here, we can see that the interfacial energy had very little contribution to the strength from dislocation cutting compared to the other three mechanisms. However, the strength was mainly governed by Orowan strengthening.
61 from kawin.precipitation.coupling import plotContributionOverTime, plotPrecipitateStrengthOverTime
62
63 fig, ax = plt.subplots(3,2,figsize=(10,10))
64 plotContributionOverTime(model, sm, coherency, timeUnits='h', ax=ax[0,0])
65 plotContributionOverTime(model, sm, modulus, timeUnits='h', ax=ax[0,1])
66 plotContributionOverTime(model, sm, apb, timeUnits='h', ax=ax[1,0])
67 plotContributionOverTime(model, sm, interfacial, timeUnits='h', ax=ax[1,1])
68 plotContributionOverTime(model, sm, OrowanContribution(), timeUnits='h', ax=ax[2,0])
69 plotPrecipitateStrengthOverTime(model, sm, 'AL3SC', True, timeUnits='h', ax=ax[2,1])
70 ax[2,1].set_ylim([0, 100])
71 fig.tight_layout()

References
- A. T. Dinsdale, “SGTE Data for Pure Elements” Calphad 15 (1991) p. 317
- H. Bo et al, “Experimental study and thermodynamic modeling of the Al-Sc-Zr system” Computational Materials Science 133 (2017) p. 82
- M. R. Ahmadi et al, “A model for precipitate strengthening in multi-particle systems” Computational Materials Science 91 (2014) p. 173
- D. Seidman et al, “Precipitation strengthening at ambient and elevated temperatures of heat-treatable Al(Sc) alloys” Acta Materialia 50 (2002) p. 4021
- K. Deane et al, “Utilization of bayesian optimization and KWN modeling for increased efficiency of Al-Sc precipitation strengthening” Metals 12 (2022) p. 975