by Shyue Ping Ong
This notebook demonstrates the computation of orbits in the $m\overline{3}m$ ($O_h$) point group (more complex than the simple mmm example). It is part of course material for UCSD's NANO106 - Crystallography of Materials.
Let's start by importing the numpy, sympy and other packages we need. Instead of going through all the steps one by one, we will use the symmetry.point_groups written by Prof Ong, which basically consolidates the information for all point groups in a single module.
import numpy as np
from sympy import symbols, Mod
from symmetry.groups import PointGroup
#Create the point group.
oh = PointGroup("m-3m")
print "The generators for this point group are:"
for m in oh.generators:
print m
print "The order of the point group is %d." % len(oh.symmetry_ops)
The generators for this point group are: [[0, 0, 1], [1, 0, 0], [0, 1, 0]] [[0, -1, 0], [1, 0, 0], [0, 0, 1]] [[-1, 0, 0], [0, -1, 0], [0, 0, -1]] [[0, 1, 0], [1, 0, 0], [0, 0, 1]] The order of the point group is 48.
Using sympy, we specify the symbolic symbols x, y, z to represent position coordinates. We also define a function to generate the orbit given a set of symmetry operations and a point p.
x, y, z = symbols("x y z")
def pt_2_str(pt):
return str([i.args[0] if isinstance(i, Mod) else i for i in pt])
p = np.array([x, y, z])
orb = oh.get_orbit(p, tol=0)
print "For the general position %s on the two-fold axis, the orbit comprise %d points:" % (str(p), len(orb))
for o in orb:
print pt_2_str(o),
For the general position [x y z] on the two-fold axis, the orbit comprise 48 points: [z, x, y] [-y, x, z] [-x, -y, -z] [y, x, z] [y, z, x] [z, -y, x] [-z, -x, -y] [z, y, x] [-x, z, y] [-x, -y, z] [y, -x, -z] [-x, y, z] [x, y, z] [-y, -x, -z] [x, z, y] [x, -y, z] [x, z, -y] [-y, -z, -x] [z, y, -x] [-y, z, -x] [-x, -z, y] [y, z, -x] [-x, -z, -y] [-y, z, x] [y, -x, z] [z, -x, -y] [-z, y, -x] [z, -x, y] [x, -z, y] [-y, x, -z] [y, -z, -x] [-z, x, y] [z, -y, -x] [-z, x, -y] [y, -z, x] [-z, -y, -x] [-z, -x, y] [z, x, -y] [-z, y, x] [x, -z, -y] [-x, z, -y] [x, y, -z] [-y, -x, z] [-y, -z, x] [-z, -y, x] [y, x, -z] [x, -y, -z] [-x, y, -z]
p = np.array([0, 0, z])
orb = oh.get_orbit(p, tol=0)
print "For the special position %s on the two-fold axis, the orbit comprise %d points:" % (str(p), len(orb))
for o in orb:
print pt_2_str(o),
For the special position [0 0 z] on the two-fold axis, the orbit comprise 6 points: [z, 0, 0] [0, 0, z] [0, 0, -z] [0, z, 0] [-z, 0, 0] [0, -z, 0]
The orbit is similar for the other two-fold axes on the a and b axes are similar.
The three-fold rotation axis are given by (x, x, x)
p = np.array([x, x, x])
orb = oh.get_orbit(p, tol=0)
print "For the special position %s on the two-fold axis, the orbit comprise %d points:" % (str(p), len(orb))
for o in orb:
print pt_2_str(o),
For the special position [x x x] on the two-fold axis, the orbit comprise 8 points: [x, x, x] [-x, x, x] [-x, -x, -x] [x, -x, x] [-x, -x, x] [x, -x, -x] [x, x, -x] [-x, x, -x]
The two-fold rotation axis are given by (x, x, 0).
p = np.array([x, x, 0])
orb = oh.get_orbit(p, tol=0)
print "For the special position %s on the two-fold axis, the orbit comprise %d points:" % (str(p), len(orb))
for o in orb:
print pt_2_str(o),
For the special position [x x 0] on the two-fold axis, the orbit comprise 12 points: [0, x, x] [-x, x, 0] [-x, -x, 0] [x, x, 0] [x, 0, x] [0, -x, x] [0, -x, -x] [-x, 0, x] [x, -x, 0] [x, 0, -x] [-x, 0, -x] [0, x, -x]
Positions on the mirror on the a-b plane have coordinates (x, y, 0).
p = np.array([x, y, 0])
orb = oh.get_orbit(p, tol=0)
print "For the special position %s on the two-fold axis, the orbit comprise %d points:" % (str(p), len(orb))
for o in orb:
print pt_2_str(o),
For the special position [x y 0] on the two-fold axis, the orbit comprise 24 points: [0, x, y] [-y, x, 0] [-x, -y, 0] [y, x, 0] [y, 0, x] [0, -y, x] [0, -x, -y] [0, y, x] [-x, 0, y] [y, -x, 0] [-x, y, 0] [x, y, 0] [-y, -x, 0] [x, 0, y] [x, -y, 0] [x, 0, -y] [-y, 0, -x] [0, y, -x] [y, 0, -x] [-x, 0, -y] [-y, 0, x] [0, -x, y] [0, -y, -x] [0, x, -y]
The orbit is similar for the other mirror planes on the a-c and b-c planes are similar.