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
MTEX 4.0.1 |