A symmetric spherical function has the same scalar value at directions related by a point group. Inverse pole figures and directional properties of a single crystal are common examples. MTEX represents a harmonic function with this constraint as S2FunHarmonicSym.
Symmetry is the point group under which the data is invariant. It is attached to a reference frame rather than being a reference frame itself. Use a specimenSymmetry for directions in the specimen frame and a crystalSymmetry for directions in a crystal frame.
plottingConvention.default('y↑→x');Attach and enforce a symmetry
Start with an ordinary harmonic spherical function. The asymmetric smiley makes the effect of symmetrisation easy to see.
sF = S2Fun.smiley;Choose orthorhombic specimen symmetry. Passing sF.how2plot preserves the plotting convention of the function when the symmetry creates its reference frame.
ss = specimenSymmetry('222',sF.how2plot);For an existing harmonic function, the constructor first attaches the symmetry and its frame. It does not yet change the coefficients. The subsequent symmetrise call averages symmetry-related directions and enforces the constraint.
sFs1 = S2FunHarmonicSym(sF,ss);
sFs1 = sFs1.symmetrise;Plot the fundamental sector
A symmetric function is plotted only in a representative sector by default, as is usual for an inverse pole figure.
plot(sFs1);
This sector contains one representative from each set of directions related by 222 symmetry. Its boundaries therefore remove repeated information; they do not crop the definition of the function.
Inspect the full symmetrised function
Use 'complete' when the repetitions themselves matter. The 'upper' option restricts the view to the upper hemisphere.
clf;
plot(sFs1,'complete','upper');
The smiley motif now occurs in positions related by the half-turns of 222 symmetry. All copies have identical values, although their positions and orientations on the projection differ.
Construct from a function handle
A function handle is convenient when values can be computed for every direction. It must accept a vector3d array and return one real scalar per direction. Here the directions belong to the crystal frame, so the requested point group is crystal symmetry 6/m.
valueFunction = @(v) 0.1*(v.theta+sin(8*v.x).*sin(8*v.y));
cs = crystalSymmetry('6/m'); quadrature computes the harmonic coefficients and enforces the supplied symmetry. The 'bandwidth' option keeps spherical harmonic degrees through 16.
sFs2 = S2FunHarmonicSym.quadrature(valueFunction,cs,'bandwidth',16);
clf;
contour(sFs2,'linewidth',2);
mtexColorMap parula
Only the fundamental sector of 6/m is drawn. The curved contour lines are the part of the scalar function that is not generated by symmetry; applying the point group reproduces them over the complete sphere.
The maths behind symmetrisation
For a point group \(G\), symmetrisation replaces a function \(f\) by the group average
\[ f_G(\vec v)=\frac{1}{|G|}\sum_{g\in G}f(g\vec v). \]
Applying any group element merely permutes the terms in this sum. The result therefore satisfies \(f_G(g\vec v)=f_G(\vec v)\) for every \(g\) in \(G\). The harmonic implementation performs this averaging while keeping a compact coefficient representation.
close allReferences
- H.-J. Bunge, Texture Analysis in Materials Science: Mathematical Methods, Butterworths, 1982, develops the crystal and specimen symmetry operations that reduce directional texture information to a representative region.
Next
Continue with Convolution to see how a function on the rotation group acts on a spherical function.
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/S2FunSym.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.