Characterizing ODFs

Explains how to analyze ODFs, i.e. how to compute modal orientations, texture index, volume portions, Fourier coefficients and pole figures.

On this page ...
Modal Orientations
Texture Characteristics
Volume Portions
Fourier Coefficients
Pole Figures and Values at Specific Orientations
Extract Internal Representation

Some Sample ODFs

Let us first begin with some constructed ODFs to be analyzed below

A bimodal ODF:

cs = crystalSymmetry('mmm');
odf1 = unimodalODF(orientation.byEuler(0,0,0,cs)) + ...
  unimodalODF(orientation.byEuler(30*degree,0,0,cs))
 
odf1 = ODF  
  crystal symmetry : mmm
  specimen symmetry: 1
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    center: (0°,0°,0°)
    weight: 1
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    center: (30°,0°,0°)
    weight: 1
 

A fibre ODF:

odf2 = fibreODF(Miller(0,0,1,cs),xvector)
 
odf2 = ODF  
  crystal symmetry : mmm
  specimen symmetry: 1
 
  Fibre symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    fibre: (001) - 1,0,0
    weight: 1
 

An ODF estimated from diffraction data

mtexdata dubna

odf3 = calcODF(pf,'resolution',5*degree,'zero_Range')
 
odf3 = ODF  
  crystal symmetry : Quartz (321, X||a*, Y||b, Z||c*)
  specimen symmetry: 1
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    center: 19833 orientations, resolution: 5°
    weight: 1
 

Modal Orientations

The modal orientation of an ODF is the crystallographic prefered orientation of the texture. It is characterized as the maximum of the ODF. In MTEX it can be computed by the command calcModes

Determine the modalorientation as an orientation:

center = calcModes(odf3)
progress: 100%
 
center = orientation  
  size: 1 x 1
  crystal symmetry : Quartz (321, X||a*, Y||b, Z||c*)
  specimen symmetry: 1
 
  Bunge Euler angles in degree
     phi1     Phi    phi2    Inv.
  133.875 34.7082 205.531       0
 

Lets mark this prefered orientation in the pole figures

plotPDF(odf3,h,'antipodal','superposition',c);
annotate(center,'marker','s','MarkerFaceColor','black')

Texture Characteristics

Texture characteristics are used for a rough classification of ODF into sharp and weak ones. The two most common texture characteristics are the entropy and the texture index.

Compute the texture index:

textureindex(odf1)
ans =
  288.6802

Compute the entropy:

entropy(odf2)
ans =
   -2.8402

Volume Portions

Volume portions describes the relative volume of crystals having a certain orientation. The relative volume of crystals having a orientation close to a given orientation is computed by the command volume and the relative volume of crystals having a orientation close to a given fibre is computed by the command fibreVolume

The relative volume in percent of crystals with missorientation maximum 30 degree from the modal orientation:

volume(odf3,calcModes(odf3),30*degree)*100
progress: 100%
ans =
   50.1732

The relative volume of crystals with missorientation maximum 20 degree from the prefered fibre in percent: TODO

%fibreVolume(odf2,Miller(0,0,1),xvector,20*degree) * 100

Fourier Coefficients

The Fourier coefficients allow for a complete characterization of the ODF. The are of particular importance for the calculation of mean macroscopic properties e.g. the second order Fourier coefficients characterize thermal expansion, optical refraction index, and electrical conductivity whereas the fourth order Fourier coefficients characterize the elastic properties of the specimen. Moreover, the decay of the Fourier coefficients is directly related to the smoothness of the ODF. The decay of the Fourier coefficients might also hint for the presents of a ghost effect. See ghost effect.

transform into an odf given by Fourier coefficients

fodf = FourierODF(odf3,32)
 
fodf = ODF  
  crystal symmetry : Quartz (321, X||a*, Y||b, Z||c*)
  specimen symmetry: 1
 
  Harmonic portion:
    degree: 25
    weight: 1
 

The Fourier coefficients of order 2:

reshape(fodf.components{1}.f_hat(11:35),5,5)
ans =
  Columns 1 through 4
   0.0000 + 0.0000i  -0.0000 - 0.0000i   0.0000 + 0.0000i  -0.0000 + 0.0000i
  -0.0000 + 0.0000i  -0.0000 - 0.0000i   0.0000 - 0.0000i  -0.0000 + 0.0000i
   0.1419 - 0.4669i   1.5281 - 0.9319i   2.1387 + 0.0000i   1.5281 + 0.9319i
  -0.0000 - 0.0000i  -0.0000 - 0.0000i   0.0000 + 0.0000i  -0.0000 + 0.0000i
   0.0000 - 0.0000i  -0.0000 - 0.0000i   0.0000 - 0.0000i  -0.0000 + 0.0000i
  Column 5
   0.0000 + 0.0000i
  -0.0000 + 0.0000i
   0.1419 + 0.4669i
  -0.0000 - 0.0000i
   0.0000 - 0.0000i

The decay of the Fourier coefficients:

close all;
plotFourier(fodf)

Pole Figures and Values at Specific Orientations

Using the command eval any ODF can be evaluated at any (set of) orientation(s).

odf1.eval(orientation.byEuler(0*degree,20*degree,30*degree,cs))
ans =
   24.0869

For a more complex example let us define a fibre and plot the ODF there.

fibre = orientation(fibre(Miller(1,0,0,cs),yvector));

plot(odf2.eval(fibre))

Evaluation of the corresponding pole figure or inverse pole figure is done using the command calcPDF.

odf2.calcPDF(Miller(1,0,0,cs),xvector)
ans =
    0.0027

Extract Internal Representation

The internal representation of the ODF can be addressed by the command

properties(odf3.components{1})
Properties for class unimodalComponent:
    center
    psi
    weights
    CS
    SS
    antipodal
    bandwidth

The properties in this list can be accessed by

odf3.components{1}.center

odf3.components{1}.psi
 
ans = SO3Grid  
  symmetry: "321" - "1"
  grid    : 19833 orientations, resolution: 5°
 
ans = deLaValleePoussinKernel  
  bandwidth: 25
  halfwidth: 10°