Open Matlab File in the Editor MTEX

Orientation Density Functions

This example demonstrates the most important MTEX tools for analysing Pole Figure Data.

Import Pole Figures

% specify crystal and specimen symmetry
CS = crystalSymmetry('-3m',[1.4 1.4 1.5]);
SS = specimenSymmetry;

% specify file names
fname = {...
  fullfile(mtexDataPath,'PoleFigure','dubna','Q(10-10)_amp.cnv'),...
  fullfile(mtexDataPath,'PoleFigure','dubna','Q(10-11)(01-11)_amp.cnv'),...
  fullfile(mtexDataPath,'PoleFigure','dubna','Q(11-22)_amp.cnv')};

% specify crystal directions
h = {Miller(1,0,-1,0,CS),...
     [Miller(0,1,-1,1,CS),Miller(1,0,-1,1,CS)],... % superposed pole figures
     Miller(1,1,-2,2,CS)};

% specify structure coefficients
c = {1,[0.52 ,1.23],1};

% import data
pf = loadPoleFigure(fname,h,CS,SS,'interface','dubna','superposition',c);

plot(pf)
colorbar

Extract information from imported pole figure data

get raw data Data stored in a PoleFigure variable can be extracted by

I = pf.intensities; % intensities
h = pf.h;            % Miller indice
r = pf.r;            % specimen directions

basic statistics There are also some basic statics on pole figure intensities

min(pf)
max(pf)
isOutlier(pf);
ans =
     0     0     0
ans =
   1.0e+03 *
    0.0898    1.3600    0.9620

Manipulate pole figure data

pf_modified = pf(pf.r.theta < 70*degree | pf.r.theta > 75*degree)

plot(pf_modified)
 
pf_modified = PoleFigure  
  crystal symmetry : -3m1, X||a*, Y||b, Z||c*
  specimen symmetry: 1
 
  h = (10-10), r = 1 x 1224 points
  h = (01-11)(10-11), r = 1 x 1224 points
  h = (11-22), r = 1 x 1224 points
rot = rotation('axis', xvector-yvector,'angle',25*degree);
pf_modified = rotate(pf,rot)

plot(pf_modified)
 
pf_modified = PoleFigure  
  crystal symmetry : -3m1, X||a*, Y||b, Z||c*
  specimen symmetry: 1
 
  h = (10-10), r = 1 x 1368 points
  h = (01-11)(10-11), r = 1 x 1368 points
  h = (11-22), r = 1 x 1368 points

PDF - to - ODF Reconstruction

rec = calcODF(pf,'RESOLUTION',10*degree,'iter_max',6)

plotPDF(rec,h)
colorbar
------ MTEX -- PDF to ODF inversion ------------------
Call c-routine
initialize solver
start iteration
error: 6.6155E-01 5.2029E-01 3.9595E-01 2.8868E-01 2.1151E-01 1.7338E-01 1.5607E-01 
Finished PDF-ODF inversion.
error: 1.5607E-01
alpha: 6.6688E+00 1.0097E+02 1.4249E+02 
required time: 2s
 
rec = ODF  
  crystal symmetry : -3m1, X||a*, Y||b, Z||c*
  specimen symmetry: 1
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    center: 2472 orientations, resolution: 10°
    weight: 1
 
odf = SantaFe

% define specimen directions
r = regularS2Grid('antipodal')
 
odf = ODF  
  crystal symmetry : m-3m
  specimen symmetry: 222
 
  Uniform portion:
    weight: 0.73
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    center: (297°,48°,27°)
    weight: 0.27
 
 
r = S2Grid  
 size: 72 x 19

define crystal directions

h = [Miller(1,0,0,odf.CS),Miller(1,1,0,odf.CS),Miller(1,1,1,odf.CS)];

simulate pole figure data

pf_SantaFe = calcPoleFigure(SantaFe,h,r);

estimate an ODF with ghost correction

rec = calcODF(pf_SantaFe,'RESOLUTION',10*degree,'background',10)

plotODF(rec,'sections',6)
------ MTEX -- PDF to ODF inversion ------------------
Call c-routine
initialize solver
start iteration
error: 9.8789E-02 2.7350E-02 1.4176E-02 9.4013E-03 7.3430E-03 6.0908E-03 5.2475E-03 4.5777E-03 4.0852E-03 3.6433E-03 3.2821E-03 
Finished PDF-ODF inversion.
error: 3.2821E-03
alpha: 9.9961E-01 9.8656E-01 9.8240E-01 
required time: 2s
ghost correction
calculate with fixed background 0.73
initialize solver
start iteration
error: 5.5514E-01 3.3257E-01 2.4930E-01 1.9926E-01 1.6269E-01 1.3427E-01 1.0958E-01 8.7100E-02 6.8905E-02 5.4489E-02 4.3359E-02 3.4967E-02 
Finished PDF-ODF inversion.
error: 3.4967E-02
alpha: 9.8547E-01 1.0099E+00 1.0282E+00 
 
rec = ODF  
  crystal symmetry : m-3m
  specimen symmetry: 222
 
  Uniform portion:
    weight: 0.73029
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    center: 150 orientations, resolution: 10°
    weight: 0.26971
 

Plotting ODF as phi2 sections, range: 0° - 75°

without ghost correction

rec_ng = calcODF(pf_SantaFe,'RESOLUTION',10*degree,'background',10,'NoGhostCorrection')

plotODF(rec_ng,'sections',6)
------ MTEX -- PDF to ODF inversion ------------------
Call c-routine
initialize solver
start iteration
error: 9.8789E-02 2.7350E-02 1.4176E-02 9.4013E-03 7.3430E-03 6.0908E-03 5.2475E-03 4.5777E-03 4.0852E-03 3.6433E-03 3.2821E-03 
Finished PDF-ODF inversion.
error: 3.2821E-03
alpha: 9.9961E-01 9.8656E-01 9.8240E-01 
required time: 1s
 
rec_ng = ODF  
  crystal symmetry : m-3m
  specimen symmetry: 222
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 10°
    center: 150 orientations, resolution: 10°
    weight: 1
 

Plotting ODF as phi2 sections, range: 0° - 75°

Error Analysis

calcError(pf_SantaFe,rec)
calcError(pf_SantaFe,rec_ng)
ans =
    0.0266    0.0362    0.0340
ans =
    0.0306    0.0421    0.0353

Difference plot

plotDiff(pf_SantaFe,rec)

ODF error

calcError(SantaFe,rec)
calcError(SantaFe,rec_ng)
ans =
    0.0441
ans =
    0.0911

Exercises

3)

a) Load the pole figure data of a quartz specimen from: data/dubna!

b) Inspect the raw data. Are there noticeable problems?

c) Compute an ODF from the pole figure data.

d) Plot some pole figures of that ODF and compare them to the measured pole figures.

e) Compute the RP errors for each pole figure.

f) Plot the difference between the raw data and the calculated pole figures. What do you observe?

g) Remove the erroneous values from the pole figure data and repeat the ODF calculation. How do the RP error change?

h) Vary the number of pole figures used for the ODF calculation. What is the minimum set of pole figures needed to obtain a meaningful ODF?