Crystal Symmetries edit page

Crystal symmetries are sets of rotations and mirroring operations that leave the lattice of a crystal invariant. They form the so called "groups" since the concatenation of two symmetry operations is again a symmetry operation.

Depending which symmetry operations are considered, the symmetry groups are categorized either into 230 space groups, 32 point groups or 11 Laue groups.

Purely enantiomorphic (rotational) symmetry groups

There exist exactly 11 symmetry groups consisting of proper rotations only, namely, 1, 2, 222, 3, 23, 4, 422, 6, 622, 32, 432. These are the so called enantiomorphic groups. All the groups can be defined in MTEX either by its international notation

cs = crystalSymmetry('432')
cs = crystalSymmetry
 
  symmetry: 432    
  elements: 24     
  a, b, c : 1, 1, 1

or by the Schoenflies notation

cs = crystalSymmetry('O')

plot(cs)
cs = crystalSymmetry
 
  symmetry: 432    
  elements: 24     
  a, b, c : 1, 1, 1

Laue groups

For any symmetry group we obtain the corresponding Laue group by adding the inversion as an additional symmetry element.

csLaue = union(cs,rotation.inversion)

plot(csLaue)
csLaue = crystalSymmetry
 
  symmetry: m-3m   
  elements: 48     
  a, b, c : 1, 1, 1

More directly, the Laue group corresponding to an arbitrary point group can be defined by the command

cs.Laue
ans = crystalSymmetry
 
  symmetry: m-3m   
  elements: 48     
  a, b, c : 1, 1, 1

Since all Laue groups can be derived from the 11 enantiomorphic groups there are also 11 Laue groups, namely -1, 2/m, mmm, -3, -3m, -4/m, 4/mmm, 6/m, 6/mmm, m-3, m-3m.

The Laue groups have always exactly twice as many symmetry elements as the corresponding enantiomorphic group. As the following example illustrates, each symmetry element from the enantiomorphic group occurs twice - with and without inversion - in the corresponding Laue group.

cs = crystalSymmetry('222');
rotation(cs)
rotation(cs.Laue)
ans = rotation
  size: 2 x 2
 
  Bunge Euler angles in degree
  phi1  Phi phi2
     0    0    0
    45  180   45
   180    0    0
    45  180  225
 
 
ans = rotation
  size: 4 x 2
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
     0    0    0    0
    45  180   45    0
   180    0    0    0
    45  180  225    0
     0    0    0    1
    45  180   45    1
   180    0    0    1
    45  180  225    1

Point groups

While the enantiomorphic groups contain exclusively proper rotations and Laue groups contain a proper and an improper version of each rotation, there are also symmetry groups with improper rotations that do not contain the inversion, e.g. the point group mm2

cs = crystalSymmetry('mm2')
rotation(cs)
plot(cs)
cs = crystalSymmetry
 
  symmetry: mm2    
  elements: 4      
  a, b, c : 1, 1, 1
 
 
ans = rotation
  size: 2 x 2
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
     0    0    0    0
    45  180   45    1
   180    0    0    0
    45  180  225    1

We observe that mm2 has exactly the same rotations as 222 with the only difference that half of them are improper. In fact, we can derive all remaining 10 point groups by replacing half of the rotations of a enantiomorphic group by its improper version. This way the following point groups can be constructed: m, mm2, 3m, -4, 4m2, -42m, -6, 6mm, -6m2, -43m. In total this gives us 11 enantiomorphic + 11 Laue + 10 mixed = 32 point groups.

In MTEX we may use the following commands to find the corresponding enantiomorphic group and the corresponding Laue group to any mixed group

cs = crystalSymmetry('-4m2')

mtexFigure('layout',[1 3]);
plot(cs)
mtexTitle(char(cs,'LaTex'))
nextAxis
plot(cs.properGroup)
mtexTitle(char(cs.properGroup,'LaTex'))
nextAxis
plot(cs.Laue)
mtexTitle(char(cs.Laue,'LaTex'))
cs = crystalSymmetry
 
  symmetry: -4m2   
  elements: 8      
  a, b, c : 1, 1, 1

The Subgroup of proper rotations

The enantiomorphic group of a given point group is in general not an subgroup, i.e., it does contain symmetry elements that do not belong to the original point group. If one is interested in the subgroup of proper rotations of a given point group the following command comes into help

plot(cs.properSubGroup)
mtexTitle(char(cs.properSubGroup,'LaTex'))

Alignment of the symmetry operations

Although in general only 32 point groups are distinguished, some of them allow for different alignments of the symmetry operations with respect to the crystal axes. The following plots show three different alignments of the point group 2mm. Note that the a-axis points in all three case towards south.

mtexFigure('layout',[1 3]);
cs = crystalSymmetry('2mm');
plot(cs)
mtexTitle(char(cs,'LaTex'))
annotate(cs.aAxis,'labeled')

nextAxis
cs = crystalSymmetry('m2m');
plot(cs)
mtexTitle(char(cs,'LaTex'))
annotate(cs.aAxis,'labeled')

nextAxis
cs = crystalSymmetry('mm2');
plot(cs)
mtexTitle(char(cs,'LaTex'))
annotate(cs.aAxis,'labeled')

Similarly as with mm2, there are different alignments for the point groups 112, 121, 211, 11m, 1m1, m11, 321, 312, 3m1, 31m, etc.

Space groups

If additionally to the proper and improper rotations also translations are considered as symmetry operations the number of different symmetry groups increases to 320. Those are exhaustively described in the international table of crystallography.

MTEX currently does not support space groups. If the name of a space group os passed to the command crystalSymmetry, MTEX automatically determines the corresponding point group and assigns it to the variable.

cs = crystalSymmetry('Td');
plot(cs)

Computations with symmetries

Using the commands union and disjoint new symmetries can be computed from two given ones

union(crystalSymmetry('23'),crystalSymmetry('4'))

disjoint(crystalSymmetry('432'),crystalSymmetry('622'))
ans = crystalSymmetry
 
  symmetry: 432    
  elements: 24     
  a, b, c : 1, 1, 1
 
 
ans = crystalSymmetry
 
  symmetry: 222    
  elements: 4      
  a, b, c : 1, 1, 1

Import from CIF and PHL files

MTEX allows to define a crystal symmetry by importing a crystallographic information file (*.cif)

cs = crystalSymmetry.load('quartz')
cs = crystalSymmetry
 
  mineral        : Quartz            
  symmetry       : 321               
  elements       : 6                 
  a, b, c        : 4.9, 4.9, 5.4     
  reference frame: X||a*, Y||b, Z||c*

or a Bruker .phl file. As a .phl file contains usually many phases the output is a list of crystal symmetries

% import a list of crystal symmetries
cs_list = crystalSymmetry.load('crystal.phl');

% access the first symmetry in list
cs_list{1}
ans = crystalSymmetry
 
  mineral : Magnetite    
  symmetry: m-3m         
  elements: 48           
  a, b, c : 8.4, 8.4, 8.4