You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>In this section we discuss basic operations with crystal directions. Therefore, lets start by importing the trigonal Quartz crystal symmetry</p>
26
+
<p>In this section we discuss basic operations with crystal directions. Therefore, lets start by importing and plotting a simulated quartz Kikuchi pattern</p>
27
27
{% highlight matlab %}
28
-
cs = loadCIF('quartz');
29
-
{% endhighlight %}
30
-
<p>and consider two hexagonal prism normals</p>
31
-
{% highlight matlab %}
32
-
m1 = Miller(1,-1,0,0,cs)
33
-
m2 = Miller(1,0,-1,0,cs)
34
-
35
-
plot(m1,'upper','labeled','backgroundColor','w')
36
-
hold on
37
-
plot(m2,'labeled','backgroundColor','w')
38
-
hold off
39
-
{% endhighlight %}
28
+
data = load([mtexDataPath filesep 'quartzPattern.mat']);
{% include inline_image.html file="CrystalOperations_01.png" %}
52
39
</center>
53
-
<h2id="3">Zone Axes</h2>
54
-
<p>Both prism planes intersects in a common zone axis which is orthogonal to both plane normals can is computed by</p>
40
+
<p>Next we consider the most reflective lattice planes in Quartz which are positive and negative rhomboedron planes as well as the hexagonal prism planes</p>
55
41
{% highlight matlab %}
56
-
d = round(cross(m1,m2))
42
+
% extract the crystal symmetry
43
+
cs = pattern.CS
44
+
45
+
m = Miller(-1,0,1,0,cs,'hkil'); % hexagonal prism
46
+
r = Miller(0,-1,1,1,cs,'hkil'); % positive rhomboedron
47
+
z = Miller(0,1,-1,1,cs,'hkil'); % negative rhomboedron
57
48
{% endhighlight %}
58
49
59
50
{% highlight plaintext %}
60
-
d = Miller (Quartz)
61
-
U V T W
62
-
0 0 0 1
63
-
{% endhighlight %}
64
-
<p>Note that MTEX automatically switches from reciprocal to direct coordinates for displaying the zone axis.</p>
65
-
<p>The other way round two, not parallel, zone axes</p>
66
-
{% highlight matlab %}
67
-
d1 = Miller(0,0,0,1,cs,'UVTW');
68
-
d2 = Miller(1,-2,1,3,cs,'UVTW');
51
+
cs = crystalSymmetry
52
+
53
+
mineral : alpha-quartz low
54
+
symmetry : 321
55
+
elements : 6
56
+
a, b, c : 0.49, 0.49, 0.54
57
+
reference frame: X||a, Y||b*, Z||c*
69
58
{% endhighlight %}
70
-
<p>span a lattice plane with normal vector</p>
59
+
<p>and visualize them as planes in the Kikuchi pattern and as points in the dual pattern</p>
<p>Since crystal lattices are symmetric lattice directions can be grouped into classes of symmetrically equivalent directions. Those groups can be derived by permuting the Miller indices (uvw). The class of all directions symmetrically equivalent to (uvw) is commonly denoted by <ahref="uvw">uvw</a>, while the class of all lattice planes symmetrically equivalent to the plane (hkl) is denoted by {hkl}. Given a lattice direction or a lattice plane all symmetrically equivalent directions and planes are computed by the command <ahref="Miller.symmetrise.html"><codeclass="language-plaintext highlighter-rouge">symmetrise</code></a>
82
77
</p>
83
78
{% highlight matlab %}
84
-
symmetrise(d2)
79
+
symmetrise(r)
85
80
{% endhighlight %}
86
81
87
82
{% highlight plaintext %}
88
-
ans = Miller (Quartz)
83
+
ans = Miller (alpha-quartz low)
89
84
size: 6 x 1
90
-
U V T W
91
-
1 -2 1 3
92
-
1 1 -2 -3
93
-
1 1 -2 3
94
-
1 -2 1 -3
95
-
-2 1 1 3
96
-
-2 1 1 -3
85
+
h k i l
86
+
0 -1 1 1
87
+
0 1 -1 -1
88
+
1 0 -1 1
89
+
1 -1 0 -1
90
+
-1 1 0 1
91
+
-1 0 1 -1
92
+
{% endhighlight %}
93
+
<p>Lets add all symmetrically equivalent planes and directions on top of the Kikuchi pattern. Note that you may also use the options <codeclass="language-plaintext highlighter-rouge">'symmetrise'</code> together with the <codeclass="language-plaintext highlighter-rouge">plot</code> command.</p>
<p>As always the keyword <ahref="VectorsAxes.html"><codeclass="language-plaintext highlighter-rouge">'antipodal'</code></a> adds antipodal symmetry to this computation</p>
104
+
<center>
105
+
{% include inline_image.html file="CrystalOperations_03.png" %}
106
+
</center>
107
+
<p>As always the keyword <ahref="VectorsAxes.html"><codeclass="language-plaintext highlighter-rouge">'antipodal'</code></a> adds antipodal symmetry</p>
99
108
{% highlight matlab %}
100
-
symmetrise(d2,'antipodal')
109
+
symmetrise(r,'antipodal')
101
110
{% endhighlight %}
102
111
103
112
{% highlight plaintext %}
104
-
ans = Miller (Quartz)
113
+
ans = Miller (alpha-quartz low)
105
114
size: 12 x 1
106
-
U V T W
107
-
1 -2 1 3
108
-
-1 2 -1 -3
109
-
1 1 -2 -3
110
-
-1 -1 2 3
111
-
1 1 -2 3
112
-
-1 -1 2 -3
113
-
1 -2 1 -3
114
-
-1 2 -1 3
115
-
-2 1 1 3
116
-
2 -1 -1 -3
117
-
-2 1 1 -3
118
-
2 -1 -1 3
119
-
{% endhighlight %}
120
-
<p>Using the options <codeclass="language-plaintext highlighter-rouge">'symmetrised'</code> and <codeclass="language-plaintext highlighter-rouge">'labeled'</code> all symmetrically equivalent crystal directions are plotted together with their Miller indices. Lets apply this to a list of lattice planes</p>
121
-
{% highlight matlab %}
122
-
h = Miller({1,0,-1,0},{1,1,-2,0},{1,0,-1,1},{1,1,-2,1},{0,0,0,1},cs);
{% include inline_image.html file="CrystalOperations_02.png" %}
133
-
</center>
134
129
<p>The command <ahref="vector3d.eq.html"><codeclass="language-plaintext highlighter-rouge">eq</code> or <codeclass="language-plaintext highlighter-rouge">==</code></a> can be used to check whether two crystal directions are symmetrically equivalent. Compare</p>
<p>The angle between two crystal directions <codeclass="language-plaintext highlighter-rouge">m1</code> and <codeclass="language-plaintext highlighter-rouge">m2</code> is defined as the smallest angle between <codeclass="language-plaintext highlighter-rouge">m1</code> and all symmetrically equivalent directions to <codeclass="language-plaintext highlighter-rouge">m2</code>. This angle is in radiant and it is calculated by the function <ahref="vector3d.angle.html"><codeclass="language-plaintext highlighter-rouge">angle(m1,m2)</code></a>
149
+
<h2id="9">Zone Axes</h2>
150
+
<p>The intersection of two lattice planes is called zone axis. Mathematically it is computed by the cross product between the corresponding norm vectors.</p>
{% include inline_image.html file="CrystalOperations_04.png" %}
165
+
</center>
166
+
<p>Note that MTEX automatically switches from reciprocal to direct coordinates for displaying the zone axis. The command <codeclass="language-plaintext highlighter-rouge"><ahref="Miller.round.html">round</a></code> is required in order have the direction be scaled to integer Miller indices. Let us now consider a second crystal direction</p>
{% include inline_image.html file="CrystalOperations_05.png" %}
181
+
</center>
182
+
<p>The two crystal directions <codeclass="language-plaintext highlighter-rouge">d1</code> and <codeclass="language-plaintext highlighter-rouge">d2</code> span a lattice plane which once again can be computed by the cross product of <codeclass="language-plaintext highlighter-rouge">d1</code> and <codeclass="language-plaintext highlighter-rouge">d2</code>. In the Kikuchi pattern the lattice plane corresponds to the band connecting <codeclass="language-plaintext highlighter-rouge">d1</code> and <codeclass="language-plaintext highlighter-rouge">d2</code> where as in the dual Kikuchi pattern it coincides with the intersection of the two great circles representing <codeclass="language-plaintext highlighter-rouge">d1</code> and <codeclass="language-plaintext highlighter-rouge">d2</code>.</p>
183
+
{% highlight matlab %}
184
+
n = round(cross(d1,d2))
185
+
186
+
circle(n,'parent',ax1,'linecolor','white')
187
+
plot(n,opt{:},'MarkerEdgeColor','white')
188
+
{% endhighlight %}
189
+
190
+
{% highlight plaintext %}
191
+
n = Miller (alpha-quartz low)
192
+
h k i l
193
+
1 -2 1 2
194
+
{% endhighlight %}
195
+
<center>
196
+
{% include inline_image.html file="CrystalOperations_06.png" %}
197
+
</center>
198
+
<h2id="12">Angles</h2>
199
+
<p>The angle between two crystal directions <codeclass="language-plaintext highlighter-rouge">d1</code> and <codeclass="language-plaintext highlighter-rouge">d2</code> is defined as the smallest angle between <codeclass="language-plaintext highlighter-rouge">d1</code> and all symmetrically equivalent directions to <codeclass="language-plaintext highlighter-rouge">d2</code>. This angle is in radiant and it is calculated by the function <ahref="vector3d.angle.html"><codeclass="language-plaintext highlighter-rouge">angle(d1,d2)</code></a>
<p>In order to ignore the crystal symmetry, i.e., to compute the actual angle between two directions use the option <codeclass="language-plaintext highlighter-rouge">'noSymmetry'</code>
175
219
</p>
@@ -179,67 +223,78 @@ <h2 id="11">Angles</h2>
179
223
180
224
{% highlight plaintext %}
181
225
ans =
182
-
180
226
+
180.0000
183
227
{% endhighlight %}
184
228
<p>This option is available for many other functions involving crystal directions and crystal orientations.</p>
185
-
<h2id="15">Calculations</h2>
229
+
<h2id="16">Calculations</h2>
186
230
<p>Essentially all the operations defined for general directions, i.e. for variables of type <ahref="vector3d.vector3d.html"><codeclass="language-plaintext highlighter-rouge">vector3d</code></a> are also available for Miller indices. In addition Miller indices interact with crystal orientations. Consider the crystal orientation</p>
187
231
{% highlight matlab %}
188
232
ori = orientation.byEuler(10*degree,20*degree,30*degree,cs)
{% include inline_image.html file="CrystalOperations_08.png" %}
265
+
</center>
208
266
<p>By applying a <ahref="crystalSymmetry.crystalSymmetry.html">crystal symmetry</a> one obtains the coordinates with respect to the specimen coordinate system of all crystallographically equivalent specimen directions.</p>
209
267
{% highlight matlab %}
210
-
p = ori * symmetrise(m1);
211
-
plot(p,'grid')
212
-
213
-
%
214
-
% The above plot is essentially the pole figure representation of the
{% include inline_image.html file="CrystalOperations_03.png" %}
273
+
{% include inline_image.html file="CrystalOperations_09.png" %}
220
274
</center>
221
-
<h2id="18">Conversions</h2>
275
+
<p>The above plot is essentially the pole figure representation of the orientation <codeclass="language-plaintext highlighter-rouge">ori</code>.</p>
276
+
<h2id="20">Conversions</h2>
222
277
<p>Converting a crystal direction which is represented by its coordinates with respect to the crystal coordinate system \(a\), \(b\), \(c\) into a representation with respect to the associated Euclidean coordinate system is done by the command <ahref="Miller.vector3d.html"><codeclass="language-plaintext highlighter-rouge">vector3d</code></a>.</p>
223
278
{% highlight matlab %}
224
-
vector3d(m1)
279
+
vector3d(d1)
225
280
{% endhighlight %}
226
281
227
282
{% highlight plaintext %}
228
283
ans = vector3d (y↑→x)
229
-
x y z
230
-
0.117443 -0.203417 0
284
+
x y z
285
+
-0.2457 0.4255650.5406
231
286
{% endhighlight %}
232
287
<p>Conversion into spherical coordinates requires the function <ahref="vector3d.polar.html"><codeclass="language-plaintext highlighter-rouge">polar</code></a>
0 commit comments