Parent and Child Variants edit page

The stable crystallographic structure of most materials depends on conditions such as temperature and pressure. A solid-state phase transition changes that structure when the conditions change.

The initial lattice is the parent phase, and the resulting lattice is the child phase.

The two phases can have the same chemical composition but different crystal structures. In titanium, the parent beta phase is cubic and the child alpha phase is hexagonal.

plottingConvention.default('y↑→x');

csBeta = crystalSymmetry('432',[3.3 3.3 3.3],...
  'mineral','Ti (beta)');
csAlpha = crystalSymmetry('622',[3 3 4.7],...
  'mineral','Ti (alpha)');

The Burgers orientation relationship

An orientation relationship (OR) is a fixed angular relation between the parent and child lattices. Atomic rearrangement during the transition makes some plane and direction alignments energetically favourable.

Let oriParent describe the lattice before the transition.

oriParent = orientation.rand(csBeta);

The dominant OR between beta and alpha titanium is the Burgers OR. MTEX stores it as a parent-to-child orientation.

beta2alpha = orientation.Burgers(csBeta,csAlpha)
beta2alpha = misorientation (Ti (beta) → Ti (alpha))
 
 (110) || (0001)   [11̅1] || [2̅110]

A child orientation consistent with this OR is obtained by multiplying the parent orientation by the inverse OR.

oriChild = oriParent * inv(beta2alpha)
oriChild = orientation (Ti (alpha) → y↑→x)
 
  Bunge Euler angles in degree
     phi1     Phi    phi2
  5.33657 106.432 183.424

The Burgers OR aligns a hexagonal \((0001)\) plane with a cubic \((110)\) plane. It also aligns a hexagonal \([2\bar{1}\bar{1}0]\) direction with a cubic \([\bar{1}1\bar{1}]\) direction.

The two pole figures below check those parallelisms for oriParent and oriChild.

In the left panel all twelve small child poles fall on a large parent pole. The plane alignment survives every symmetric copy. The right panel is different: only four of the twelve child directions land on a parent pole, and the rest sit 10.5 or 49.5 degrees away. The six equivalent basal directions are 60 degrees apart, while the two cubic axes lying in the same plane are 70.5 degrees apart, so a direction alignment cannot repeat for every copy the way a plane alignment does.

% (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)

Define an OR from parallel features

The same alignment rules can define the OR directly with orientation.map.

beta2alpha = orientation.map(...
  Miller(1,1,0,csBeta),Miller(0,0,0,1,csAlpha),...
  Miller(-1,1,-1,csBeta,'uvw'),...
  Miller(2,-1,-1,0,csAlpha,'uvw'));

Defining the OR through crystal planes and directions has an important advantage. The definition does not depend on the hexagonal crystal-frame convention.

Child variants

A variant is one crystallographically equivalent child orientation predicted from a single parent orientation by a known OR. It is the finest-grained classification of a child relative to its parent.

Cubic proper symmetry gives oriParent 24 equivalent representations.

oriParentSym = oriParent.symmetrise;
numel(oriParentSym)
ans =
    24

Applying the OR to all 24 representations gives 24 child orientations.

oriChild = oriParentSym * inv(beta2alpha);
numel(oriChild)
ans =
    24

Under hexagonal child symmetry, some of these orientations represent the same physical orientation. For the exact Burgers OR they form 12 pairs.

The inverse pole figure places both members of each pair at the same location. The 24 computations therefore appear as only 12 distinct points.

plotIPDF(oriChild,vector3d.Z)

variants removes the symmetry-equivalent duplicates directly. It returns the 12 child variants for this OR.

oriChild = variants(beta2alpha,oriParent);

for i = 1:12
  plotIPDF(oriChild(i),ind2color(i),vector3d.Z,'label',i,...
    'MarkerEdgeColor','k');
  hold on
end
hold off

The labels are variant IDs. A variant ID is an index into this ordered set, so specific variants can be selected by passing their IDs.

oriChild = variants(beta2alpha,oriParent,2:3)
oriChild = orientation (Ti (alpha) → y↑→x)
  size: 1 × 2
 
  Bunge Euler angles in degree
     phi1     Phi    phi2
  309.249 152.169  72.672
  34.3467 53.0264 286.984

Exact and approximate orientation relationships

The reduction from 24 parent representations to 12 variants is specific to the exact Burgers OR. A general OR between these two phases has exactly 24 variants.

Disturbing the Burgers OR by a fixed 2 degree rotation breaks the exact pairing.

beta2alpha = beta2alpha .* ...
  orientation.byAxisAngle(vector3d(1,2,3),2*degree,csBeta,csBeta);

The inverse pole figure now contains 24 points. They remain close to the 12 exact Burgers positions, so each former pair appears slightly split. variants treats two representations as the same when they agree to within about 1.6 degrees, which is why the perturbation has to exceed that for the pairs to separate.

oriChildPerturbed = variants(beta2alpha,oriParent);
numel(oriChildPerturbed)
plotIPDF(oriChildPerturbed,vector3d.Z)
ans =
    24

Identify an observed variant

The inverse task is to determine a variant ID from a parent-child pair or from two child orientations. The calcVariants method does this after a parent grain reconstruction has been computed.

That workflow is demonstrated in Parent Austenite Reconstruction.

Parent variants

The same ambiguity occurs in the opposite direction. Given one child orientation, several parent orientations could have produced it. variants returns them with 'parent'.

% Return to the exact Burgers orientation relationship.
b2a = orientation.Burgers(csBeta,csAlpha);

% Select one child variant.
oriChildSingle = variants(b2a,oriParent,1);

oriParents = variants(b2a,oriChildSingle,'parent');
numel(oriParents)
ans =
     6

There are six parent variants, compared with 12 child variants. The two counts need not agree because the parent and child point-group orders govern them differently.

One of the six is the parent orientation from which the child was made. The minimum misorientation below is therefore zero degrees to numerical precision.

min(angle(oriParents,oriParent)) ./ degree
ans =
     0

The parents method returns the same set of OR variants. Multiplying the child orientation by them produces the six candidate parent orientations.

unique(oriChildSingle * b2a.parents)
ans = orientation (Ti (beta) → y↑→x)
  size: 1 × 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.101

A single child orientation cannot identify which candidate parent is correct. Parent grain reconstruction resolves the ambiguity by comparing neighbouring child grains.

References

Next

Continue with Martensite Variants to classify variants, packets, and Bain groups in a measured steel microstructure.

Citing this page. This page is part of the documentation of MTEX, a free and open source MATLAB toolbox for analyzing and modeling crystallographic textures. It was written by The MTEX Developers and is published at https://mtex-toolbox.github.io/ParentChildVariants.html. If you use MTEX, or reuse text or figures from this page, in your research, please cite

F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63

BibTeX
@article{bachmann2010mtex,
  author  = {F. Bachmann and R. Hielscher and H. Schaeben},
  title   = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
  journal = {Solid State Phenomena},
  volume  = {160},
  pages   = {63-68},
  year    = {2010},
  doi     = {10.4028/www.scientific.net/SSP.160.63},
  url     = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}

Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.