Symmetrically Equivalent Orientations edit page

A crystal cannot distinguish settings related by its point-group symmetry. One physical orientation therefore corresponds to a class of equivalent orthogonal transformations, not to one stored representative. MTEX carries that symmetry with the orientation and uses the whole class in symmetry-aware calculations.

This page assumes that an orientation maps crystal coordinates into specimen coordinates, as developed in Theory. It also assumes the point-group operations introduced in Crystal Symmetries.

A symmetry is the point group under which data are invariant. It is attached to a reference frame, but is not the frame itself. The crystal and specimen symmetries below are therefore attached to opposite sides of the orientation map.

plottingConvention.default('y↑→x');

% hexagonal crystal symmetry, with 6 rotations about the c axis
cs = crystalSymmetry('6');

% specimen symmetry with a twofold axis along z
ss = specimenSymmetry('112');

% a generic orientation carrying both symmetries
ori = orientation.byEuler(10*degree,20*degree,30*degree,...
  'Bunge',cs,ss);

Which Side Acts

Crystal symmetry acts on the input of the map, from the right. Specimen symmetry acts on its output, from the left. If O represents the stored orientation, every member of its class has the form

\[ \mathbf{S}_{\mathrm{s}}\,\mathbf{O}\,\mathbf{S}_{\mathrm{c}}. \]

The six crystal operations give the following representatives.

% equivalent orientations with respect to crystal symmetry
crystalEquivalents = ori * cs
crystalEquivalents = orientation (6 → y↑→x (112))
  size: 1 × 6
 
  Bunge Euler angles in degree
  phi1  Phi phi2
    10   20   30
    10   20   90
    10   20  150
    10   20  210
    10   20  270
    10   20  330

Only the third Euler angle \(\varphi_2\) changes, in steps of \(60^\circ\). In the Bunge convention it is the rotation applied first, in crystal coordinates, which is where the crystal symmetry acts.

Specimen symmetry produces the other kind of equivalence.

% equivalent orientations with respect to specimen symmetry
specimenEquivalents = ss * ori
specimenEquivalents = orientation (6 → y↑→x (112))
  size: 2 × 1
 
  Bunge Euler angles in degree
  phi1  Phi phi2
    10   20   30
   190   20   30

Now \(\varphi_1\) changes because it is applied last, in specimen coordinates. Combining both sides gives \(2 \times 6 = 12\) representatives.

allEquivalents = ss * ori * cs
allEquivalents = orientation (6 → y↑→x (112))
  size: 2 × 6
 
  Bunge Euler angles in degree
  phi1  Phi phi2
    10   20   30
   190   20   30
    10   20   90
   190   20   90
    10   20  150
   190   20  150
    10   20  210
   190   20  210
    10   20  270
   190   20  270
    10   20  330
   190   20  330

symmetrise is the shortcut for this product. It returns a new orientation array; it does not alter ori.

classSize = length(symmetrise(ori))
classSize =
    12

Proper and Improper Operations

Both groups in the first example contain only proper rotations. A full point group may also contain improper operations such as inversion or reflection. For cubic m-3m symmetry, symmetrise lists 48 orthogonal representatives, while the 'proper' flag retains the 24 that are rigid rotations.

cubicOri = orientation.id(crystalSymmetry('m-3m'));

cubicCounts = [length(symmetrise(cubicOri)),...
  length(symmetrise(cubicOri,'proper'))]
cubicCounts =
    48    24

Use the full point group when lattice or diffraction equivalence is the subject. Use 'proper' when the returned transformations themselves must be physically realizable rotations.

What This Looks Like in a Pole Figure

One orientation and one crystal direction give a family of specimen directions. The 'complete' flag keeps both hemispheres visible here so none of the twelve directions is folded into a smaller plotting region.

h = Miller(1,0,0,cs);

plotPDF(ori,h,'complete','MarkerSize',10,'figSize','small')

Notice six poles in each hemisphere. The sixfold crystal symmetry creates the crystallographically equivalent direction family, and the twofold specimen symmetry repeats that family in the specimen frame. Without 'complete', plotPDF exploits both antipodal equivalence and specimen symmetry and shows only the non-redundant part of this example.

Which member a calculation produces depends on the stored representative. Symmetry-aware comparisons avoid making a physical result depend on that arbitrary choice.

Coincidences

The product of the group sizes is the number of representatives before duplicates are removed. Some orientations make a left-side and a right-side operation describe the same transformation. At the identity orientation the crystal c axis and specimen z axis coincide, so the class has 12 entries but only 6 distinct ones. The 'unique' option removes the duplicates.

identityOri = orientation.id(cs,ss);

coincidentCounts = [length(symmetrise(identityOri)),...
  length(symmetrise(identityOri,'unique'))]
coincidentCounts =
    12     6

Symmetry in Every Comparison

Because the class is what matters, the angle between two orientations is the smallest rotational angle over their equivalent representatives. A fixed probe orientation therefore has the same symmetry-aware angle to every equivalent of the rotation returned by orientation.goss. The named rotation is used only as a reproducible reference here.

probe = orientation.byEuler(37*degree,48*degree,23*degree,cs);
referenceEquivalents = symmetrise(orientation.goss(cs));

symmetryAwareAngles = angle(probe,referenceEquivalents) ./ degree
symmetryAwareAngles =
   28.9235
   28.9235
   28.9235
   28.9235
   28.9235
   28.9235

Switching symmetry off compares the stored rotations directly. It gives six different angles, whose minimum is the repeated value above.

rawAngles = angle(probe,referenceEquivalents,'noSymmetry') ./ degree
rawAngles =
   55.3931
   28.9235
   75.3016
  132.4640
  169.2501
  111.1564

The 'noSymmetry' flag is implemented by angle, dot, and unique, among other orientation methods. Reach for it when an angle or dot product comes out smaller than expected. Leave it alone otherwise, because the symmetry-aware answer is normally the physically meaningful one.

Do not pass 'noSymmetry' to calcCluster. That method does not define the flag, and an unknown option can be ignored silently.

References

Next

The region of rotation space that holds exactly one member of each class is the Fundamental Region. Symmetry of the specimen, and when it should be imposed at all, is Specimen Symmetry. The same minimum-angle rule becomes central when comparing two crystals in Misorientations.

Citing this page. This page is part of the documentation of MTEX, a free and open source MATLAB toolbox for analyzing and modeling crystallographic textures. It was written by The MTEX Developers and is published at https://mtex-toolbox.github.io/OrientationSymmetry.html. If you use MTEX, or reuse text or figures from this page, in your research, please cite

F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63

BibTeX
@article{bachmann2010mtex,
  author  = {F. Bachmann and R. Hielscher and H. Schaeben},
  title   = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
  journal = {Solid State Phenomena},
  volume  = {160},
  pages   = {63-68},
  year    = {2010},
  doi     = {10.4028/www.scientific.net/SSP.160.63},
  url     = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}

Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.