Misorientation Distribution Function edit page

When speaking about the misorientation distribution function (MDF) one has to distinguish two cases

  1. the boundary (correlated) misorientation distribution function
  2. the uncorrelated misorientation distribution function

While the first one considers only misorientations at grain boundaries the second one considers misorientations between arbitrary crystal orientations. To illustrate the difference lets consider the following EBSD data set and reconstruct its grains.

plottingConvention.default('y↑→x');
mtexdata forsterite silent

grains = calcGrains(ebsd)
grains = grain2d (y↑→x)
 
 Phase  Grains  Pixels     Mineral  Symmetry         Color
     0       6     621  notIndexed                    none
     1    1089  152345  Forsterite       mmm  LightSkyBlue
     2     515   26058   Enstatite       mmm  DarkSeaGreen
     3    1496    9064    Diopside     12/m1     Goldenrod
 
 boundary segments: 44425 (2.1e+06 µm)
 inner boundary segments: 265 (12008 µm)
 triple points: 3416
 
 Properties: meanRotation, GOS

The Boundary Misorientation Distribution Function

In order to compute the boundary misorientation distribution function for the phase transition from Forsterite to Enstatite we first extract the misorientations along all Forsterite to Enstatite boundary segments

mori_boundary = grains.boundary('Fo','En').misorientation
mori_boundary = misorientation (Forsterite → Enstatite)
  size: 11751 x 1

and second compute the corresponding density function using the command calcDensity

mdf_boundary = calcDensity(mori_boundary,'halfwidth',5*degree)
mdf_boundary = SO3FunHarmonic (Forsterite → Enstatite)
  bandwidth: 48
  weight: 1

The misorientation distribution function can be processed as any other orientation valued function. E.g. we may compute the preferred misorientation

[v,mori] = max(mdf_boundary)
v =
  118.3380
 
mori = misorientation (Forsterite → Enstatite)
 
  Bunge Euler angles in degree
     phi1       Phi      phi2
  134.616 0.0669012   135.402

or plot it in an axis angle section

plotSection(mdf_boundary,'axisAngle',90*degree)
mtexColorbar

The Uncorrelated Misorientation Distribution Function

The uncorrelated misorientation distribution function is computed from misorientations between arbitrary orientations, which are extracted by calcMisorientation

mori = calcMisorientation(ebsd('En'),ebsd('Fo'))

mdf_uncor = calcDensity(mori)
mori = misorientation (Forsterite → Enstatite)
  size: 99969 x 1
 
mdf_uncor = SO3FunHarmonic (Forsterite → Enstatite)
  bandwidth: 25
  weight: 1

Obviously it is different from the boundary misorientation distribution function.

plotSection(mdf_uncor,'axisAngle',90*degree)
mtexColorbar

Computing the Uncorrelated MDF from two ODFs

The uncorrelated MDF does not require the individual orientations at all - it is fully determined by the two ODFs involved. Let us estimate them from the same data set

odf_fo = calcDensity(ebsd('fo').orientations,'halfwidth',10*degree)
odf_en = calcDensity(ebsd('en').orientations,'halfwidth',10*degree)
odf_fo = SO3FunHarmonic (Forsterite → y↑→x)
  bandwidth: 25
  weight: 1
 
 
odf_en = SO3FunHarmonic (Enstatite → y↑→x)
  bandwidth: 25
  weight: 1

Then the uncorrelated misorientation function between these two ODFs is computed by calcMDF

mdf = calcMDF(odf_en,odf_fo)
mdf = SO3FunHarmonic (Forsterite → Enstatite)
  bandwidth: 25
  weight: 1

This misorientation distribution function should be similar to the uncorrelated misorientation function computed directly from the EBSD data

plotSection(mdf,'axisAngle',90*degree)
mtexColorbar

Passing a single ODF to calcMDF gives the uncorrelated misorientations within one phase

mdf_fo = calcMDF(odf_fo)
mdf_fo = SO3FunHarmonic (Forsterite → Forsterite)
  antipodal: true
  bandwidth: 25
  weight: 1

Angle Distribution

Let us compare the actual angle distribution of the boundary misorientations with the theoretical angle distribution of the uncorrelated MDF.

close all
plotAngleDistribution(grains.boundary('fo','en').misorientation)
hold on
plotAngleDistribution(mdf)
hold off
legend('boundary','uncorrelated')

It is often instructive to add the angle distribution of a uniform texture as a reference

close all
plotAngleDistribution(mdf)
hold on
plotAngleDistribution(ebsd('fo').CS,ebsd('en').CS)
hold off
legend('uncorrelated MDF','uniform ODF','Location','best')

For computing the exact values see the commands calcAngleDistribution(mdf) and calcAngleDistribution(ori).

Axis Distribution

The same comparison can be made for the distribution of the misorientation axes. First the actual axis distribution of the boundary misorientations

plotAxisDistribution(grains.boundary('fo','en').misorientation,'smooth')

and now the theoretical axis distribution of the uncorrelated MDF

plotAxisDistribution(mdf)

For computing the exact values see the commands calcAxisDistribution(mdf) and calcAxisDistribution(grains).

aD = calcDensity(axis(grains.boundary('fo','en').misorientation))
aD = S2FunHarmonicSym (222)
  bandwidth: 25