plottingConvention.default('y↑→x');The crystallographic structure of most materials is depended on external conditions as temperature and pressure. When the external conditions change the crystals may undergo a phase transition from the initial phase, often called parent phase, into the child phase. While both phases still have the same chemical composition their crystallographic structure might be quite different. A typical example are the alpha and beta phase of titanium. While the parent beta phase is cubic
csBeta = crystalSymmetry('432',[3.3 3.3 3.3],'mineral','Ti (beta)');the child alpha phase is hexagonal
csAlpha = crystalSymmetry('622',[3 3 4.7],'mineral','Ti (alpha)');Let oriParent
oriParent = orientation.rand(csBeta);be the orientation of the atomic lattice before phase transition and oriChild the orientation of the atomic lattice after the phase transition. Since during a phase transition the atoms reorder with respect to a minimal energy constraint, both orientations oriParent and oriChild are in a specific orientation relationship with respect to each other. In the case of alpha and beta Titanium the dominant orientation relationship is described by the Burger orientation relationship
beta2alpha = orientation.Burgers(csBeta,csAlpha)beta2alpha = misorientation (Ti (beta) → Ti (alpha))
(110) || (0001) [11̅1] || [2̅110]A corresponding child orientation would then be
oriChild = oriParent * inv(beta2alpha)oriChild = orientation (Ti (alpha) → y↑→x)
Bunge Euler angles in degree
phi1 Phi phi2
5.33657 106.432 183.424This orientation relationship is characterized by alignment of hexagonal (0001) plane with the cubic (110) plane and alignment of the hexagonal [2-1-10] direction with the cubic [-11-1] direction.
% (110) / (0001) pole figure
plotPDF(oriParent,Miller(1,1,0,csBeta),...
'MarkerSize',20,'MarkerFaceColor','none','linewidth',4,'layout',[1,2])
hold on
plot(oriChild.symmetrise * Miller(0,0,0,1,csAlpha),'MarkerSize',12)
xlabel(char(Miller(0,0,0,1,csAlpha)),'color',ind2color(2))
hold off
% [111] / [2-1-10] pole figure
nextAxis(2)
plotPDF(oriParent,Miller(1,1,1,csBeta,'uvw'),'upper',...
'MarkerSize',20,'MarkerFaceColor','none','linewidth',4)
dAlpha = Miller(2,-1,-1,0,csAlpha,'uvw');
hold on
plot(oriChild.symmetrise * dAlpha,'MarkerSize',12)
xlabel(char(dAlpha),'color',ind2color(2))
hold off
drawNow(gcm)
We could also use these alignment rules to define the orientation relationship as
beta2alpha = orientation.map(Miller(1,1,0,csBeta),Miller(0,0,0,1,csAlpha),...
Miller(-1,1,-1,csBeta),Miller(2,-1,-1,0,csAlpha));The advantage of the above definition by the alignment of different crystal directions is that it is independent of the convention used for the hexagonal crystal coordinate system.
Child Variants
Due to crystal symmetry each orientation of a parent beta grain has 24 different may transform into up to 24 child orientations.
oriParentSym = oriParent.symmetriseoriParentSym = orientation (Ti (beta) → y↑→x)
size: 24 x 1Applying the beta2alpha phase relationship to these 24 different representations we obtain 24 child orientations.
oriChild = oriParentSym * inv(beta2alpha)oriChild = orientation (Ti (alpha) → y↑→x)
size: 24 x 1Some of these child orientations are symmetrically equivalent with respect to the hexagonal child symmetry. In fact there are 12 pairs of symmetrically equivalent child orientations as depicted in the following inverse pole figure.
plotIPDF(oriChild,vector3d.Z)
These 12 pairs are called the variants of the parent orientation oriParent with respect to the orientation relation ship beta2alpha. They can be computed more directly using the command variants.
oriChild = variants(beta2alpha,oriParent);
for i = 1:12
plotIPDF(oriChild(i),ind2color(i),vector3d.Z,'label',i,'MarkerEdgeColor','k');
hold on
end
hold off
As we can see each variant can be associated by a variantId. You can pick specific variants by their variantId using the syntax
oriChild = variants(beta2alpha,oriParent,2:3)oriChild = orientation (Ti (alpha) → y↑→x)
size: 1 x 2
Bunge Euler angles in degree
phi1 Phi phi2
309.249 152.169 72.672
34.3467 53.0264 286.984It is important to understand that the reduction to 12 variants from 24 symmetrically equivalent parent orientations comes from the specific Burger orientation relationship. For a general orientation relationship, e.g., if we disturb the OR a little bit
beta2alpha = beta2alpha .* orientation.rand(csBeta,csBeta,'maxAngle',2*degree)beta2alpha = misorientation (Ti (beta) → Ti (alpha))
Bunge Euler angles in degree
phi1 Phi phi2
184.881 88.6838 44.8256we will always have exactly 24 variants. For the above example we observe how the 12 pairs of orientations which diverge slightly.
plotIPDF(variants(beta2alpha,oriParent),vector3d.Z)
Sometimes one faces the inverse question, i.e., determine the variantId from a parent and a child orientation or a pair of child orientations. This can be done using the command calcVariants which is discussed in detail in the section parent grain reconstruction.
Parent Variants
Everything so far went from the parent to the child. The opposite direction works the same way - given a child orientation, which parent orientations could it have come from? This is answered by variants with the flag 'parent'.
% we go back to the exact Burgers orientation relationship
b2a = orientation.Burgers(csBeta,csAlpha);
% and pick one single child orientation
oriChildSingle = variants(b2a,oriParent,1);
oriParents = variants(b2a,oriChildSingle,'parent')oriParents = orientation (Ti (beta) → y↑→x)
size: 1 x 6
Bunge Euler angles in degree
phi1 Phi phi2
336.958 18.5318 342.122
8.88906 125.644 145.271
0.886234 76.7565 323.56
359.185 66.3517 144.101
11.5761 135.977 327.034
309.2 10.3033 189.105Note that there are fewer parent variants than child variants - six against the twelve we found above. The two counts need not agree; they are governed by the orders of the two point groups involved.
One of the six is of course the orientation we started from
min(angle(oriParents,oriParent)) ./ degreeans =
0The same set is obtained through parents, which returns the orientation relationship variants rather than the orientations themselves
unique(oriChildSingle * b2a.parents)ans = orientation (Ti (beta) → y↑→x)
size: 1 x 6
Bunge Euler angles in degree
phi1 Phi phi2
336.958 18.5318 342.122
11.5761 135.977 327.034
309.2 10.3033 189.105
8.88906 125.644 145.271
0.886234 76.7565 323.56
359.185 66.3517 144.101Which of the possible parents is the correct one cannot be decided from a single child orientation - it needs the neighbouring child grains, which is exactly what parent grain reconstruction does.