Specifying a lattice Spacegroup
The symmetry information for a lattice can be specified by providing a string at construction which represents a Hall symbol or an International Tables spacegroup (typically in Hermann-Mauguin notation).
If this is undesirable for any reason, the generators of a Spacegroup can be provided after the lattice has been created. One must only specify the generators of the Spacegroup since they are a subset of the full group which can be combined to reproduce all group elements. If one prefers, the entire Spacegroup motions can be provided instead.
Sodium Chloride symmetry
The Hall symbol for cubic \(F m \bar{3} m\) is \(-F 4 2 3\).
The Hall symbol is the encoded generators of the spacegroup, and can be used
to define a HallSymbol
which has the functionality
to decode the generators. Those decoded generators can then be used to generate
the full spacegroup:
hall_symbol = brille.HallSymbol('-F 4 2 3')
hall_gen = hall_symbol.generators
hall_sym = hall_gen.generate()
This spacegroup is comprised of \(192\) motions,
(show the 192 lines of motions)
motions = np.array([[[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 0]],
[[-1, 0, 0], [0, -1, 0], [0, 0, -1], [0, 0, 0]],
[[0, -1, 0], [1, 0, 0], [0, 0, 1], [0, 0, 0]],
[[0, 1, 0], [-1, 0, 0], [0, 0, -1], [0, 0, 0]],
[[-1, 0, 0], [0, -1, 0], [0, 0, 1], [0, 0, 0]],
[[1, 0, 0], [0, 1, 0], [0, 0, -1], [0, 0, 0]],
[[0, 1, 0], [-1, 0, 0], [0, 0, 1], [0, 0, 0]],
[[0, -1, 0], [1, 0, 0], [0, 0, -1], [0, 0, 0]],
[[1, 0, 0], [0, -1, 0], [0, 0, -1], [0, 0, 0]],
[[-1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 0]],
[[0, -1, 0], [-1, 0, 0], [0, 0, -1], [0, 0, 0]],
[[0, 1, 0], [1, 0, 0], [0, 0, 1], [0, 0, 0]],
[[-1, 0, 0], [0, 1, 0], [0, 0, -1], [0, 0, 0]],
[[1, 0, 0], [0, -1, 0], [0, 0, 1], [0, 0, 0]],
[[0, 1, 0], [1, 0, 0], [0, 0, -1], [0, 0, 0]],
[[0, -1, 0], [-1, 0, 0], [0, 0, 1], [0, 0, 0]],
[[0, 0, 1], [1, 0, 0], [0, 1, 0], [0, 0, 0]],
[[0, 0, -1], [-1, 0, 0], [0, -1, 0], [0, 0, 0]],
[[0, 0, 1], [0, -1, 0], [1, 0, 0], [0, 0, 0]],
[[0, 0, -1], [0, 1, 0], [-1, 0, 0], [0, 0, 0]],
[[0, 0, 1], [-1, 0, 0], [0, -1, 0], [0, 0, 0]],
[[0, 0, -1], [1, 0, 0], [0, 1, 0], [0, 0, 0]],
[[0, 0, 1], [0, 1, 0], [-1, 0, 0], [0, 0, 0]],
[[0, 0, -1], [0, -1, 0], [1, 0, 0], [0, 0, 0]],
[[0, 0, -1], [1, 0, 0], [0, -1, 0], [0, 0, 0]],
[[0, 0, 1], [-1, 0, 0], [0, 1, 0], [0, 0, 0]],
[[0, 0, -1], [0, -1, 0], [-1, 0, 0], [0, 0, 0]],
[[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 0, 0]],
[[0, 0, -1], [-1, 0, 0], [0, 1, 0], [0, 0, 0]],
[[0, 0, 1], [1, 0, 0], [0, -1, 0], [0, 0, 0]],
[[0, 0, -1], [0, 1, 0], [1, 0, 0], [0, 0, 0]],
[[0, 0, 1], [0, -1, 0], [-1, 0, 0], [0, 0, 0]],
[[0, 1, 0], [0, 0, 1], [1, 0, 0], [0, 0, 0]],
[[0, -1, 0], [0, 0, -1], [-1, 0, 0], [0, 0, 0]],
[[1, 0, 0], [0, 0, 1], [0, -1, 0], [0, 0, 0]],
[[-1, 0, 0], [0, 0, -1], [0, 1, 0], [0, 0, 0]],
[[0, -1, 0], [0, 0, 1], [-1, 0, 0], [0, 0, 0]],
[[0, 1, 0], [0, 0, -1], [1, 0, 0], [0, 0, 0]],
[[-1, 0, 0], [0, 0, 1], [0, 1, 0], [0, 0, 0]],
[[1, 0, 0], [0, 0, -1], [0, -1, 0], [0, 0, 0]],
[[0, -1, 0], [0, 0, -1], [1, 0, 0], [0, 0, 0]],
[[0, 1, 0], [0, 0, 1], [-1, 0, 0], [0, 0, 0]],
[[-1, 0, 0], [0, 0, -1], [0, -1, 0], [0, 0, 0]],
[[1, 0, 0], [0, 0, 1], [0, 1, 0], [0, 0, 0]],
[[0, 1, 0], [0, 0, -1], [-1, 0, 0], [0, 0, 0]],
[[0, -1, 0], [0, 0, 1], [1, 0, 0], [0, 0, 0]],
[[1, 0, 0], [0, 0, -1], [0, 1, 0], [0, 0, 0]],
[[-1, 0, 0], [0, 0, 1], [0, -1, 0], [0, 0, 0]],
[[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 0]],
[[-1, 0, 0], [0, -1, 0], [0, 0, -1], [1, 1, 0]],
[[0, -1, 0], [1, 0, 0], [0, 0, 1], [1, 1, 0]],
[[0, 1, 0], [-1, 0, 0], [0, 0, -1], [1, 1, 0]],
[[-1, 0, 0], [0, -1, 0], [0, 0, 1], [1, 1, 0]],
[[1, 0, 0], [0, 1, 0], [0, 0, -1], [1, 1, 0]],
[[0, 1, 0], [-1, 0, 0], [0, 0, 1], [1, 1, 0]],
[[0, -1, 0], [1, 0, 0], [0, 0, -1], [1, 1, 0]],
[[1, 0, 0], [0, -1, 0], [0, 0, -1], [1, 1, 0]],
[[-1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 0]],
[[0, -1, 0], [-1, 0, 0], [0, 0, -1], [1, 1, 0]],
[[0, 1, 0], [1, 0, 0], [0, 0, 1], [1, 1, 0]],
[[-1, 0, 0], [0, 1, 0], [0, 0, -1], [1, 1, 0]],
[[1, 0, 0], [0, -1, 0], [0, 0, 1], [1, 1, 0]],
[[0, 1, 0], [1, 0, 0], [0, 0, -1], [1, 1, 0]],
[[0, -1, 0], [-1, 0, 0], [0, 0, 1], [1, 1, 0]],
[[0, 0, 1], [1, 0, 0], [0, 1, 0], [1, 1, 0]],
[[0, 0, -1], [-1, 0, 0], [0, -1, 0], [1, 1, 0]],
[[0, 0, 1], [0, -1, 0], [1, 0, 0], [1, 1, 0]],
[[0, 0, -1], [0, 1, 0], [-1, 0, 0], [1, 1, 0]],
[[0, 0, 1], [-1, 0, 0], [0, -1, 0], [1, 1, 0]],
[[0, 0, -1], [1, 0, 0], [0, 1, 0], [1, 1, 0]],
[[0, 0, 1], [0, 1, 0], [-1, 0, 0], [1, 1, 0]],
[[0, 0, -1], [0, -1, 0], [1, 0, 0], [1, 1, 0]],
[[0, 0, -1], [1, 0, 0], [0, -1, 0], [1, 1, 0]],
[[0, 0, 1], [-1, 0, 0], [0, 1, 0], [1, 1, 0]],
[[0, 0, -1], [0, -1, 0], [-1, 0, 0], [1, 1, 0]],
[[0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 0]],
[[0, 0, -1], [-1, 0, 0], [0, 1, 0], [1, 1, 0]],
[[0, 0, 1], [1, 0, 0], [0, -1, 0], [1, 1, 0]],
[[0, 0, -1], [0, 1, 0], [1, 0, 0], [1, 1, 0]],
[[0, 0, 1], [0, -1, 0], [-1, 0, 0], [1, 1, 0]],
[[0, 1, 0], [0, 0, 1], [1, 0, 0], [1, 1, 0]],
[[0, -1, 0], [0, 0, -1], [-1, 0, 0], [1, 1, 0]],
[[1, 0, 0], [0, 0, 1], [0, -1, 0], [1, 1, 0]],
[[-1, 0, 0], [0, 0, -1], [0, 1, 0], [1, 1, 0]],
[[0, -1, 0], [0, 0, 1], [-1, 0, 0], [1, 1, 0]],
[[0, 1, 0], [0, 0, -1], [1, 0, 0], [1, 1, 0]],
[[-1, 0, 0], [0, 0, 1], [0, 1, 0], [1, 1, 0]],
[[1, 0, 0], [0, 0, -1], [0, -1, 0], [1, 1, 0]],
[[0, -1, 0], [0, 0, -1], [1, 0, 0], [1, 1, 0]],
[[0, 1, 0], [0, 0, 1], [-1, 0, 0], [1, 1, 0]],
[[-1, 0, 0], [0, 0, -1], [0, -1, 0], [1, 1, 0]],
[[1, 0, 0], [0, 0, 1], [0, 1, 0], [1, 1, 0]],
[[0, 1, 0], [0, 0, -1], [-1, 0, 0], [1, 1, 0]],
[[0, -1, 0], [0, 0, 1], [1, 0, 0], [1, 1, 0]],
[[1, 0, 0], [0, 0, -1], [0, 1, 0], [1, 1, 0]],
[[-1, 0, 0], [0, 0, 1], [0, -1, 0], [1, 1, 0]],
[[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 0, 1]],
[[-1, 0, 0], [0, -1, 0], [0, 0, -1], [1, 0, 1]],
[[0, -1, 0], [1, 0, 0], [0, 0, 1], [1, 0, 1]],
[[0, 1, 0], [-1, 0, 0], [0, 0, -1], [1, 0, 1]],
[[-1, 0, 0], [0, -1, 0], [0, 0, 1], [1, 0, 1]],
[[1, 0, 0], [0, 1, 0], [0, 0, -1], [1, 0, 1]],
[[0, 1, 0], [-1, 0, 0], [0, 0, 1], [1, 0, 1]],
[[0, -1, 0], [1, 0, 0], [0, 0, -1], [1, 0, 1]],
[[1, 0, 0], [0, -1, 0], [0, 0, -1], [1, 0, 1]],
[[-1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 0, 1]],
[[0, -1, 0], [-1, 0, 0], [0, 0, -1], [1, 0, 1]],
[[0, 1, 0], [1, 0, 0], [0, 0, 1], [1, 0, 1]],
[[-1, 0, 0], [0, 1, 0], [0, 0, -1], [1, 0, 1]],
[[1, 0, 0], [0, -1, 0], [0, 0, 1], [1, 0, 1]],
[[0, 1, 0], [1, 0, 0], [0, 0, -1], [1, 0, 1]],
[[0, -1, 0], [-1, 0, 0], [0, 0, 1], [1, 0, 1]],
[[0, 0, 1], [1, 0, 0], [0, 1, 0], [1, 0, 1]],
[[0, 0, -1], [-1, 0, 0], [0, -1, 0], [1, 0, 1]],
[[0, 0, 1], [0, -1, 0], [1, 0, 0], [1, 0, 1]],
[[0, 0, -1], [0, 1, 0], [-1, 0, 0], [1, 0, 1]],
[[0, 0, 1], [-1, 0, 0], [0, -1, 0], [1, 0, 1]],
[[0, 0, -1], [1, 0, 0], [0, 1, 0], [1, 0, 1]],
[[0, 0, 1], [0, 1, 0], [-1, 0, 0], [1, 0, 1]],
[[0, 0, -1], [0, -1, 0], [1, 0, 0], [1, 0, 1]],
[[0, 0, -1], [1, 0, 0], [0, -1, 0], [1, 0, 1]],
[[0, 0, 1], [-1, 0, 0], [0, 1, 0], [1, 0, 1]],
[[0, 0, -1], [0, -1, 0], [-1, 0, 0], [1, 0, 1]],
[[0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 0, 1]],
[[0, 0, -1], [-1, 0, 0], [0, 1, 0], [1, 0, 1]],
[[0, 0, 1], [1, 0, 0], [0, -1, 0], [1, 0, 1]],
[[0, 0, -1], [0, 1, 0], [1, 0, 0], [1, 0, 1]],
[[0, 0, 1], [0, -1, 0], [-1, 0, 0], [1, 0, 1]],
[[0, 1, 0], [0, 0, 1], [1, 0, 0], [1, 0, 1]],
[[0, -1, 0], [0, 0, -1], [-1, 0, 0], [1, 0, 1]],
[[1, 0, 0], [0, 0, 1], [0, -1, 0], [1, 0, 1]],
[[-1, 0, 0], [0, 0, -1], [0, 1, 0], [1, 0, 1]],
[[0, -1, 0], [0, 0, 1], [-1, 0, 0], [1, 0, 1]],
[[0, 1, 0], [0, 0, -1], [1, 0, 0], [1, 0, 1]],
[[-1, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 1]],
[[1, 0, 0], [0, 0, -1], [0, -1, 0], [1, 0, 1]],
[[0, -1, 0], [0, 0, -1], [1, 0, 0], [1, 0, 1]],
[[0, 1, 0], [0, 0, 1], [-1, 0, 0], [1, 0, 1]],
[[-1, 0, 0], [0, 0, -1], [0, -1, 0], [1, 0, 1]],
[[1, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 1]],
[[0, 1, 0], [0, 0, -1], [-1, 0, 0], [1, 0, 1]],
[[0, -1, 0], [0, 0, 1], [1, 0, 0], [1, 0, 1]],
[[1, 0, 0], [0, 0, -1], [0, 1, 0], [1, 0, 1]],
[[-1, 0, 0], [0, 0, 1], [0, -1, 0], [1, 0, 1]],
[[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 1, 1]],
[[-1, 0, 0], [0, -1, 0], [0, 0, -1], [0, 1, 1]],
[[0, -1, 0], [1, 0, 0], [0, 0, 1], [0, 1, 1]],
[[0, 1, 0], [-1, 0, 0], [0, 0, -1], [0, 1, 1]],
[[-1, 0, 0], [0, -1, 0], [0, 0, 1], [0, 1, 1]],
[[1, 0, 0], [0, 1, 0], [0, 0, -1], [0, 1, 1]],
[[0, 1, 0], [-1, 0, 0], [0, 0, 1], [0, 1, 1]],
[[0, -1, 0], [1, 0, 0], [0, 0, -1], [0, 1, 1]],
[[1, 0, 0], [0, -1, 0], [0, 0, -1], [0, 1, 1]],
[[-1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 1, 1]],
[[0, -1, 0], [-1, 0, 0], [0, 0, -1], [0, 1, 1]],
[[0, 1, 0], [1, 0, 0], [0, 0, 1], [0, 1, 1]],
[[-1, 0, 0], [0, 1, 0], [0, 0, -1], [0, 1, 1]],
[[1, 0, 0], [0, -1, 0], [0, 0, 1], [0, 1, 1]],
[[0, 1, 0], [1, 0, 0], [0, 0, -1], [0, 1, 1]],
[[0, -1, 0], [-1, 0, 0], [0, 0, 1], [0, 1, 1]],
[[0, 0, 1], [1, 0, 0], [0, 1, 0], [0, 1, 1]],
[[0, 0, -1], [-1, 0, 0], [0, -1, 0], [0, 1, 1]],
[[0, 0, 1], [0, -1, 0], [1, 0, 0], [0, 1, 1]],
[[0, 0, -1], [0, 1, 0], [-1, 0, 0], [0, 1, 1]],
[[0, 0, 1], [-1, 0, 0], [0, -1, 0], [0, 1, 1]],
[[0, 0, -1], [1, 0, 0], [0, 1, 0], [0, 1, 1]],
[[0, 0, 1], [0, 1, 0], [-1, 0, 0], [0, 1, 1]],
[[0, 0, -1], [0, -1, 0], [1, 0, 0], [0, 1, 1]],
[[0, 0, -1], [1, 0, 0], [0, -1, 0], [0, 1, 1]],
[[0, 0, 1], [-1, 0, 0], [0, 1, 0], [0, 1, 1]],
[[0, 0, -1], [0, -1, 0], [-1, 0, 0], [0, 1, 1]],
[[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1]],
[[0, 0, -1], [-1, 0, 0], [0, 1, 0], [0, 1, 1]],
[[0, 0, 1], [1, 0, 0], [0, -1, 0], [0, 1, 1]],
[[0, 0, -1], [0, 1, 0], [1, 0, 0], [0, 1, 1]],
[[0, 0, 1], [0, -1, 0], [-1, 0, 0], [0, 1, 1]],
[[0, 1, 0], [0, 0, 1], [1, 0, 0], [0, 1, 1]],
[[0, -1, 0], [0, 0, -1], [-1, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 0, 1], [0, -1, 0], [0, 1, 1]],
[[-1, 0, 0], [0, 0, -1], [0, 1, 0], [0, 1, 1]],
[[0, -1, 0], [0, 0, 1], [-1, 0, 0], [0, 1, 1]],
[[0, 1, 0], [0, 0, -1], [1, 0, 0], [0, 1, 1]],
[[-1, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1]],
[[1, 0, 0], [0, 0, -1], [0, -1, 0], [0, 1, 1]],
[[0, -1, 0], [0, 0, -1], [1, 0, 0], [0, 1, 1]],
[[0, 1, 0], [0, 0, 1], [-1, 0, 0], [0, 1, 1]],
[[-1, 0, 0], [0, 0, -1], [0, -1, 0], [0, 1, 1]],
[[1, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1]],
[[0, 1, 0], [0, 0, -1], [-1, 0, 0], [0, 1, 1]],
[[0, -1, 0], [0, 0, 1], [1, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 0, -1], [0, 1, 0], [0, 1, 1]],
[[-1, 0, 0], [0, 0, 1], [0, -1, 0], [0, 1, 1]]])
In this compact form each \(4 \times 3\) array is the \(3 \times 3\)
rotation-like part of the motion while the remaining three values are twice the
translation part of the motion.
They can be separated and used to define a Symmetry
object plus a set of generators for the group:
motions_W, motions_w = motions[:, :3, :], motions[:, 3, :] * 0.5
explicit_sym = brille.Symmetry(motions_W, motions_w)
explicit_gen = explicit_sym.generators()
The symmetry information for NaCl is available in a script
which also contains different methods of constructing a real space lattice
which contains the spacegroup symmetry information.
As a teaser, the two lattices lat0 and lat1 are identically the same:
a = 5.69 # angstrom, the approximate lattice constant for NaCl
lat0 = brille.Direct((a, a, a), (90, 90, 90), '-F 4 2 3')
lat1 = brille.Direct((a, a, a), (90, 90, 90))
lat1.spacegroup = brille.Symmetry('-F 4 2 3').generators