The misorientation angle distribution is the distribution of the disorientation angle \(\omega\) alone, i.e. what is left of a misorientation distribution function after integrating out the misorientation axis. It is a one dimensional function and therefore the most compact way of summarizing a set of misorientations. Its counterpart, the distribution of the axes, is discussed in the next section.
The angle distribution of a uniform texture
Even for completely random orientations the misorientation angle is not uniformly distributed - small angles are rare simply because there are few rotations close to the identity, and large angles are limited by the shape of the fundamental region. This reference curve is known as the Mackenzie distribution and it depends only on the symmetries involved. It is computed by calcAngleDistribution
cs = crystalSymmetry('432');
[density,omega] = calcAngleDistribution(cs);
close all
plot(omega./degree,density,'linewidth',2)
xlabel('misorientation angle in degree')
The largest angle that can occur is returned by maxAngle. For cubic symmetry it is
maxAngle(cs) ./ degreeans =
62.7994and it becomes larger the fewer symmetry elements there are
plotAngleDistribution(crystalSymmetry('1'),'linewidth',2)
hold on
plotAngleDistribution(crystalSymmetry('622'),'linewidth',2)
plotAngleDistribution(crystalSymmetry('432'),'linewidth',2)
hold off
legend('1','622','432','Location','northwest')
For a misorientation between two different phases the fundamental region is generated by both symmetry groups and hence both have to be passed
plotAngleDistribution(crystalSymmetry('222'),crystalSymmetry('12/m1'),'linewidth',2)
The angle distribution of measured misorientations
Let us now compare this reference against real data. We consider the Magnesium data set and reconstruct its grains
plottingConvention.default('y↑→x');
mtexdata twins silent
grains = calcGrains(ebsd('indexed'),'threshold',5*degree);
grains = smoothBoundary(grains,5);and extract the misorientations along all Magnesium to Magnesium boundaries
mori = grains.boundary('Magnesium','Magnesium').misorientationmori = misorientation (Magnesium → Magnesium)
size: 2803 x 1
antipodal: trueThe command plotAngleDistribution displays the histogram of their angles. Plotting the uniform distribution on top makes the deviation visible
close all
plotAngleDistribution(mori)
hold on
plotAngleDistribution(mori.CS,mori.SS,'linewidth',2)
hold off
legend('boundary misorientations','uniform')
The sharp peak at about 86 degree is the twin boundary that gives this data set its name. It carries the vast majority of all boundary segments and completely dominates the distribution.
Both the histogram and the reference curve are normalized to percent, so that the bars of the histogram sum up to 100. The numbers behind the plot are available from calcAngleDistribution
[density,omega] = calcAngleDistribution(mori);
[~,id] = max(density);
omega(id) ./ degreeans =
87.1380Correlated and uncorrelated
The distribution above is correlated - it uses only misorientations between neighbouring grains. Comparing it with the uncorrelated angle distribution, i.e. the one between arbitrary grains of the same data set, separates the effect of the texture from the effect of the boundary network.
% the uncorrelated misorientation distribution function
odf = calcDensity(grains('Magnesium').meanOrientation,'halfwidth',10*degree);
mdf = calcMDF(odf);
close all
plotAngleDistribution(mori)
hold on
plotAngleDistribution(mdf,'linewidth',2)
plotAngleDistribution(mori.CS,mori.SS,'linewidth',2)
hold off
legend('boundary','uncorrelated','uniform')Warning: The convolution of two SO3FunRBFs could be done fast by pure RBF
method. For big center sizes this yields an SO3FunRBF with lots of
centers, which is not manageable anymore. If you still want to generate an
SO3FunRBF use 'noFourier'.
The uncorrelated curve stays close to the uniform one, which tells us that the twin peak is a property of the boundary network and not of the texture. See the MDF chapter for how these two distributions are computed.