Open Matlab File in the Editor MTEX

Orientation Density Functions

This example demonstrates the most important MTEX tools for analysing ODFs.

All described commands can be applied to model ODFs constructed via uniformODF, unimodalODF, or fibreODF and to all estimated ODF calculated from pole figures or EBSD data.

Defining Model ODFs

Unimodal ODFs

SS  = specimenSymmetry('orthorhombic');
CS  = crystalSymmetry('cubic');
o   = orientation('brass',CS,SS);
psi = vonMisesFisherKernel('halfwidth',20*degree);

odf1 = unimodalODF(o,CS,SS,psi)
 
odf1 = ODF  
  crystal symmetry : m-3m
  specimen symmetry: mmm
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    center: (35°,45°,0°)
    weight: 1
 

Fibre ODFs

CS = crystalSymmetry('hexagonal');
h = Miller(1,0,0,CS);
r = xvector;
psi = AbelPoissonKernel('halfwidth',18*degree);

odf2 = fibreODF(h,r,psi)
 
odf2 = ODF  
  crystal symmetry : 6/mmm, X||a*, Y||b, Z||c
  specimen symmetry: 1
 
  Fibre symmetric portion:
    kernel: Abel Poisson, halfwidth 18°
    fibre: (10-10) - 1,0,0
    weight: 1
 

uniform ODFs

odf3 = uniformODF(CS)
 
odf3 = ODF  
  crystal symmetry : 6/mmm, X||a*, Y||b, Z||c
  specimen symmetry: 1
 
  Uniform portion:
    weight: 1
 

FourierODF

Bingham ODFs

Lambda = [-10,-10,10,10]
A = quaternion(eye(4))
odf = BinghamODF(Lambda,A,CS)

plotIPDF(odf,xvector)
plotPDF(odf,Miller(1,0,0,CS))
Lambda =
   -10   -10    10    10
 
A = Quaternion  
  size: 1 x 4
  a b c d
  1 0 0 0
  0 1 0 0
  0 0 1 0
  0 0 0 1
 
odf = ODF  
  crystal symmetry : 6/mmm, X||a*, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: -10 -10 10 10
    weight: 1
 

ODF Arithmetics

0.2*odf1 + 0.3*odf2 + 0.5*odf3

rot = rotation('axis',yvector,'angle',90*degree);
odf = rotate(odf,rot)
plotPDF(odf,Miller(1,0,0,CS))
 
ans = ODF  
  crystal symmetry : m-3m
  specimen symmetry: mmm
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    center: (35°,45°,0°)
    weight: 0.2
 
  Fibre symmetric portion:
    kernel: Abel Poisson, halfwidth 18°
    fibre: (10-10) - 1,0,0
    weight: 0.3
 
  Uniform portion:
    weight: 0.5
 
 
odf = ODF  
  crystal symmetry : 6/mmm, X||a*, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: -10 -10 10 10
    weight: 1
 

Working with ODFs

% *Texture Characteristics+

calcError(odf2,odf3,'L1')      % difference between ODFs

[maxODF,centerODF] = max(odf)  % the modal orientation
mean(odf)                      % the mean orientation
max(odf)

volume(odf,centerODF,5*degree) % the volume of a ball
fibreVolume(odf2,h,r,5*degree) % the volume of a fibre

textureindex(odf)              % the texture index
entropy(odf)                   % the entropy
f_hat = calcFourier(odf2,16);  % the C-coefficients up to order 16
ans =
    0.2030
maxODF =
    3.3783
 
centerODF = orientation  
  size: 1 x 1
  crystal symmetry : 6/mmm, X||a*, Y||b, Z||c
  specimen symmetry: 1
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
    90   90  270    0
 
 
 
ans = orientation  
  size: 1 x 1
  crystal symmetry : 6/mmm, X||a*, Y||b, Z||c
  specimen symmetry: 1
 
  Bunge Euler angles in degree
     phi1     Phi    phi2    Inv.
  150.027 4.28281 179.982       0
 
 
ans =
    3.3783
ans =
    0.0028
ans =
    0.0253
ans =
    5.7257
ans =
   -0.5028

Plotting ODFs

Plotting (Inverse) Pole Figures

close all
plotPDF(odf,Miller(0,1,0,CS),'antipodal')
plotIPDF(odf,[xvector,zvector])

Plotting an ODF

close all
plot(SantaFe,'alpha','sections',6,'projection','plain','contourf')
mtexColorMap white2black
Plotting ODF as alpha sections, range: 0° - 75°

Exercises

2)

a) Construct a cubic unimodal ODF with mod at [0 0 1](3 1 0). (Miller indice). What is its modal orientation in Euler angles?

CS = crystalSymmetry('cubic');
ori = orientation('Miller',[0 0 1],[3 1 0],CS);
odf = unimodalODF(ori);

b) Plot some pole figures. Are there pole figures with and without antipodal symmetry? What about the inverse pole figures?

plotPDF(odf,[Miller(1,0,0,CS),Miller(2,3,1,CS)])
close all;plotPDF(odf,[Miller(1,0,0,CS),Miller(2,3,1,CS)],'antipodal')
close all;plotIPDF(odf,vector3d(1,1,3))

c) Plot the ODF in sigma and phi2 - sections. How many mods do you observe?

close all;plotODF(odf,'sections',6)
Plotting ODF as phi2 sections, range: 0° - 75°

d) Compute the volume of the ODF that is within a distance of 10 degree of the mod. Compare to an the uniform ODF.

volume(odf,ori,10*degree)
volume(uniformODF(CS,SS),ori,10*degree)
ans =
    0.2939
Warning: Rotation does not respect
symmetry! 
ans =
    0.0270

e) Construct a trigonal ODF that consists of two fibres at h1 = (0,0,0,1), r1 = (0,1,0), h2 = (1,0,-1,0), r2 = (1,0,0). Do the two fibres intersect?

cs = crystalSymmetry('trigonal');
odf = 0.5 * fibreODF(Miller(0,0,0,1,cs),yvector) + ...
      0.5 * fibreODF(Miller(1,0,-1,0,cs),xvector)
 
odf = ODF  
  crystal symmetry : -31m, X||a*, Y||b, Z||c
  specimen symmetry: 1
 
  Fibre symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    fibre: (0001) - 0,1,0
    weight: 0.5
 
  Fibre symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    fibre: (10-10) - 1,0,0
    weight: 0.5
 

f) What is the modal orientation of the ODF?

mod = calcModes(odf)
 
mod = orientation  
  size: 1 x 1
  crystal symmetry : -31m, X||a*, Y||b, Z||c
  specimen symmetry: 1
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
   180   90   60    0
 
 

g) Plot the ODF in sigma and phi2 - sections. How many fibre do you observe?

close all;plot(odf,'sections',6)
mtexColorMap white2black
annotate(mod,'MarkerColor','r','Marker','s')
Plotting ODF as phi2 sections, range: 0° - 100°
plot(odf,'phi2','sections',6)
Plotting ODF as phi2 sections, range: 0° - 100°

h) Compute the texture index of the ODF.

textureindex(odf)
ans =
    1.4866