ODF Tutorial edit page

Theory

The orientation distribution function (ODF) is a function on the orientation space that associates to each orientation \(g\) the volume percentage of crystals in a polycrystaline specimen that are in this specific orientation, i.e.,

\[\mathrm{odf}(g) = \frac{1}{V} \frac{\mathrm{d}V(g)}{\mathrm{d}g}.\]

In MTEX an entirely random texure will have an ODF constant to one. In other word the values of ODFs in MTEX can be interpreted as multiples of the random distribution (mrd).

Computing an ODF from Individual Orientations

Individual orientations data may be obtained by experimental by EBSD, ACOM or 3d X-ray imaging; or from simulations, like VPSC. In the following we consider an EBSD map of an Titanium alloy.

% import the titanium data
mtexdata titanium

% plot an orientation map
plot(ebsd, ebsd.orientations)
ebsd = EBSD
 
 Phase  Orientations           Mineral         Color  Symmetry  Crystal reference frame
     0   8100 (100%)  Titanium (Alpha)  LightSkyBlue       622       X||a, Y||b*, Z||c*
 
 Properties: ci, grainid, iq, sem_signal, x, y
 Scan unit : um

Computing an ODF from individual orientations is done by kernel density estimation using the command calcDensity.

% extract the orientations
ori = ebsd.orientations;

% compute the ODF
odf = calcDensity(ori)
odf = SO3FunHarmonic (Titanium (Alpha) → xyz)
  bandwidth: 25
  weight: 1

There many different ways to visualize ODF: Euler or sigma sections, thee dimensional plots, pole figures and inverse pole figures. The most common but not recommended way are sections with respect to the third Euler angle \(\varphi_2\)

plot(odf)

Computing an ODF from Pole Figure Data

Pole figure data arises when textured materials are measured via x-ray, neutron or syncrotron radiation. Generaly, for \(3\) to \(10\) diffraction planes specified by Miller indices \((hk\ell)\) diffraction intensities are measured at a spherical grid of specimen directions. In the example below each dot corresponds to one diffraction intensity at the plane indicated at the top of the spherical plots measured from the direction corresponding to the pixel position.

% import pole figure data
mtexdata ptx

% plot the data
plot(pf)
mtexColorbar
pf = PoleFigure (xyz)
  crystal symmetry : mmm
 
  h = (104), r = 72 x 17 points
  h = (110), r = 72 x 17 points
  h = (202), r = 72 x 17 points

The reconstuction of an ODF from pole figure data requires the solution of an ill posed inverse problem. This mean the reconstruction problem has in general not a unique solution, but there are several ODFs that correspond to the same set of pole figure data. MTEX applies some heuristics to identify among all solutions the physically most reasonable.

% compute an ODF with default settings
odf = calcODF(pf)
odf = SO3FunRBF (mmm → xyz)
 
  <strong>multimodal components</strong>
  kernel: de la Vallee Poussin, halfwidth 5°
  center: 29772 orientations, resolution: 5°
  weight: 1

Once an ODF is reconstructed we can check how well its pole figures fit the measured pole figures

% plot the recalculated pole figures
plotPDF(odf,pf.h)

ODF Modelling

Besides from experimental data MTEX allows also the definition of model ODFS of different type. These include unimodal ODFs, fibre ODF, Bingham Distributed ODFs and any combination of such ODFs.

% define a fibre symmetric ODF
odf = fibreODF(fibre.gamma(odf.CS))

% plot it in sigma sections
plot(odf,'sigma')
odf = SO3FunCBF (mmm → xyz)
 
  kernel: de la Vallee Poussin, halfwidth 10°
  fibre : (111) || 0,0,1
  weight: 1