Inferring Twin Boundaries edit page

A twin is a part of a crystal whose lattice has a special mirrored orientation relative to its host. The crystallographic relation between the two orientations is the twin law.

Deformation twins form in magnesium and other hexagonal metals when slip alone cannot accommodate the imposed strain. Their abundance and geometry can therefore help to reconstruct what happened to a specimen.

This page infers a candidate twin law from a repeated misorientation in an EBSD map. It then selects the boundary segments that match the complete relationship. Twinning takes the complementary route and starts from a known crystallographic law.

The example assumes familiarity with grain reconstruction and misorientation symmetry. Misorientations at Grain Boundaries introduces the boundary properties used below.

close all;

% load the example in its specimen plotting frame
plottingConvention.default('y↑→x');
mtexdata twins silent

% reconstruct and smooth the grains
[grains,ebsd] = calcGrains(ebsd,'angle',5*degree,'minPixel',3);
grains = smoothBoundary(grains,5);

% compute the colours explicitly to keep the published output quiet
colorKey = ipfColorKey(grains);
grainColor = colorKey.orientation2color(grains.meanOrientation);
plot(grains,grainColor)

% store the crystal symmetry of magnesium
CS = grains.CS;

The narrow lamellae cross several larger grains and have a contrasting mean orientation. That morphology suggests twinning, but it does not prove a twin mechanism. The following analysis identifies the repeated lattice relationship between each lamella and its host.

Select Same-Phase Boundaries

A grain boundary is one segment between neighboring EBSD measurements that belong to different grains. The summary splits the complete network by the phases on either side.

gB = grains.boundary
gB = grainBoundary (y↑→x)
 
 Segments  length   mineral 1  mineral 2
      607  182 µm  notIndexed  Magnesium
     2696  717 µm   Magnesium  Magnesium

Of these segments, some are boundaries against the edge of the scan, where a grain is cut off and has no neighbour. MTEX reports the missing neighbour as notIndexed; this map contains no notIndexed grains of its own.

Only segments with magnesium grains on both sides have the same-phase misorientations needed here. The object summary reports their number and total trace length. Segment count is controlled by boundary sampling and is not a count of physical twins.

gB_MgMg = gB('Magnesium','Magnesium')
gB_MgMg = grainBoundary (y↑→x)
 
 Segments  length  mineral 1  mineral 2
     2696  717 µm  Magnesium  Magnesium

Find the Repeated Misorientation

Colour each segment by its disorientation angle.

close all;
plot(gB_MgMg,gB_MgMg.misorientation.angle./degree,'linewidth',2)
mtexColorbar('title','misorientation angle in degree')

The connected yellow traces near 86 degrees outline most of the narrow lamellae. Cooler colours mark boundaries spread over lower angles.

The histogram makes the concentration explicit. The narrow peak just below 90 degrees dominates a background spread over many angles.

close all;
histogram(gB_MgMg.misorientation.angle./degree,40)
xlabel('misorientation angle (degree)')

Isolate the 85--87 degree peak and print its share of the boundary segments. About one third of all magnesium-to-magnesium segments lie in this two-degree interval. A concentration this sharp is not expected from a random population; it points to one relationship repeated across the map.

inPeak = gB_MgMg.misorientation.angle > 85*degree & ...
  gB_MgMg.misorientation.angle < 87*degree;
mori = gB_MgMg.misorientation(inPeak);

peakSummary = table(length(mori),100*length(mori)/length(gB_MgMg),...
  'VariableNames',{'segments','percentOfMgMgSegments'})
peakSummary =
  1×2 table
    segments    percentOfMgMgSegments
    ________    _____________________
      917              34.013

Identify the Relationship

Angle alone does not identify a misorientation. Plot the peak in the full axis--angle space.

close all;
scatter(mori)

The points form one tight cluster rather than several clusters with similar angles. This compact cloud is the evidence for one complete relationship.

The robust mean locates the centre without giving isolated measurements undue influence. round2Miller then finds low-index planes and directions that the measured mean makes parallel.

moriMean = mean(mori,'robust');
round2Miller(moriMean)
plane parallel   direction parallel      fit
(011̅1) || (101̅1̅)   [11̅01] || [011̅1]      0.451°

The fit is within half a degree. Use those low-index correspondences to define the ideal relationship without the small experimental deviation of the measured mean.

twinning = orientation.map(Miller(1,-1,0,1,CS),Miller(1,0,-1,-1,CS),...
  Miller(0,1,-1,1,CS,'uvw'),Miller(1,-1,0,1,CS,'uvw'))
twinning = misorientation (Magnesium → Magnesium)
 
 (101̅1̅) || (011̅1)   [011̅1] || [11̅01]

Two Equivalent Descriptions

By default MTEX returns the disorientation: the symmetry-equivalent representative with the smallest rotation angle. For this magnesium twin law it is 86.3 degrees about the (11-20) crystal axis.

twinDisorientationAxis = round(twinning.axis)
twinDisorientationAngle = twinning.angle ./ degree
twinDisorientationAxis = Miller (Magnesium)
  h  k  i  l
  1  1 -2  0
twinDisorientationAngle =
   86.2992

The same twin law also has a 180 degree representative about a twin axis. The max option of angle and axis selects that representative.

twinOperationAngle = angle(twinning,'max') ./ degree
twinOperationAxis = round(Miller(axis(twinning,'max'),'UVTW'))
twinOperationAngle =
   180
 
twinOperationAxis = Miller (Magnesium)
  U  V  T  W
  2  0 -2  1

Both descriptions belong to the same misorientation under magnesium crystal symmetry. The 86.3 degrees reported for the disorientation and the 180 degrees quoted for the twin operation are therefore not in conflict. An angle and its axis must always be read from the same representative.

Select Candidate Twin Boundaries

Compare every boundary misorientation with the complete ideal law, not only with its 86.3 degree angle. A boundary has no intrinsic first side, so its misorientation carries grain-exchange symmetry: the law and its inverse are treated as the same relationship. See Grain Exchange Symmetry.

A five-degree tolerance admits the experimental spread in this map. It is an analyst choice rather than a universal property of the twin law, and it should reflect orientation uncertainty and the purpose of the analysis.

twinDeviation = angle(gB_MgMg.misorientation,twinning);
isTwinning = twinDeviation < 5*degree;
twinBoundary = gB_MgMg(isTwinning)

% report the fraction of trace length rather than only segment count
candidateTracePercent = 100 * sum(twinBoundary.segLength) ./ ...
  sum(gB_MgMg.segLength)
twinBoundary = grainBoundary (y↑→x)
 
 Segments  length  mineral 1  mineral 2
     1406  356 µm  Magnesium  Magnesium
candidateTracePercent =
   49.6556

The two object summaries show how many magnesium-to-magnesium segments pass the test. They account for about half of the total trace length.

close all;
plot(grains,grainColor)
hold on
plot(twinBoundary,'linecolor','w','linewidth',4,...
  'displayName','candidate twin boundary')
hold off

The white traces follow the lamellae seen in the first figure. This spatial agreement checks that the relationship inferred from the peak is the one repeated in the map.

What the Selection Establishes

The selected objects are candidate twin-boundary segments, not a count of physical twins. Consecutive segments can belong to one lamella, and boundary smoothing changes their number. Trace length is less sensitive to resampling, but it still does not count twin domains.

A misorientation match also does not identify which side is the parent or prove that deformation twinning produced the boundary. A two-dimensional EBSD map supplies the boundary trace, not the full interface-plane orientation; Tilt and Twist Boundaries develops that limitation. Morphology, loading, and evidence for later slip, detwinning, or secondary twinning may be needed for a mechanistic interpretation.

References

Next

If the twin law is known in advance, Twinning shows how to construct it directly. The next reconstruction step is often to restore parent-grain footprints by merging across the selected boundaries; see Merging Grains.

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/TwinningBoundaries.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.