## 8. Consider the point group 4mm. It can be generated from a 4-fold rotation axis about the c-axis and a coinciding mirror plane about the a-c plane.

## a. Write down the 3D matrix representations for the two generators in the tetragonal basis.

Solution:
    
The 4-fold rotation axis maps the $\mathbf{a}$ and $\mathbf{b}$ lattice vectors to $\mathbf{a}'$ and $\mathbf{b}'$, where $\mathbf{a}'$ = $\mathbf{b}$ and $\mathbf{b}'$ = -$\mathbf{a}$. Hence, the matrix is


```
D_4 = [[0, -1, 0],
       [1, 0, 0],
       [0, 0, 1]]
```

The mirror plane maps $\mathbf{b}$ lattice vector to $\mathbf{b}'$, where $\mathbf{b}'$ = -$\mathbf{b}$. Hence, the matrix is


```
D_m = [[1, 0, 0],
       [0, -1, 0],
       [0, 0, 1]]
```

## b. Determine the matrix representations for all symmetry elements in the group, and construct a multiplication table for the 4mm point group. 

Solution: All symmetry elements can be obtained by the multiplication of the generators.


```
import numpy as np

D = {}
D["4"] = np.array(D_4)
D["m"] = np.array(D_m)
D["4_2"] = np.dot(D["4"], D["4"])
D["4_3"] = np.dot(D["4"], D["4_2"])
D["E"] = np.dot(D["4"], D["4_3"])
D["m_4"] = np.dot(D["m"], D["4"])
D["m_4_2"] = np.dot(D["m"], D["4_2"])
D["m_4_3"] = np.dot(D["m"], D["4_3"])

print "The complete set of symmetry elements are given by the following matrices:"
for k, v in D.items():
    print "%s = %s" % (k, str(v))
```

    The complete set of symmetry elements are given by the following matrices:
    E = [[1 0 0]
     [0 1 0]
     [0 0 1]]
    m = [[ 1  0  0]
     [ 0 -1  0]
     [ 0  0  1]]
    4 = [[ 0 -1  0]
     [ 1  0  0]
     [ 0  0  1]]
    m_4_2 = [[-1  0  0]
     [ 0  1  0]
     [ 0  0  1]]
    m_4_3 = [[0 1 0]
     [1 0 0]
     [0 0 1]]
    4_2 = [[-1  0  0]
     [ 0 -1  0]
     [ 0  0  1]]
    4_3 = [[ 0  1  0]
     [-1  0  0]
     [ 0  0  1]]
    m_4 = [[ 0 -1  0]
     [-1  0  0]
     [ 0  0  1]]


The multiplication table is given below:


```
import itertools
keys = ["E", "4", "4_2", "4_3", "m", "m_4", "m_4_2", "m_4_3"]
def find_key(m):
    for k, v in D.items():
        if np.all(v == m):
            return k
from prettytable import PrettyTable

t = PrettyTable([""] + keys)
headers = list(keys)
for k1 in keys:
    row = [k1]
    for k2 in keys:
        prod = np.dot(D[k1], D[k2])
        row.append(find_key(prod))
    t.add_row(row)
print t
```

    +-------+-------+-------+-------+-------+-------+-------+-------+-------+
    |       |   E   |   4   |  4_2  |  4_3  |   m   |  m_4  | m_4_2 | m_4_3 |
    +-------+-------+-------+-------+-------+-------+-------+-------+-------+
    |   E   |   E   |   4   |  4_2  |  4_3  |   m   |  m_4  | m_4_2 | m_4_3 |
    |   4   |   4   |  4_2  |  4_3  |   E   | m_4_3 |   m   |  m_4  | m_4_2 |
    |  4_2  |  4_2  |  4_3  |   E   |   4   | m_4_2 | m_4_3 |   m   |  m_4  |
    |  4_3  |  4_3  |   E   |   4   |  4_2  |  m_4  | m_4_2 | m_4_3 |   m   |
    |   m   |   m   |  m_4  | m_4_2 | m_4_3 |   E   |   4   |  4_2  |  4_3  |
    |  m_4  |  m_4  | m_4_2 | m_4_3 |   m   |  4_3  |   E   |   4   |  4_2  |
    | m_4_2 | m_4_2 | m_4_3 |   m   |  m_4  |  4_2  |  4_3  |   E   |   4   |
    | m_4_3 | m_4_3 |   m   |  m_4  | m_4_2 |   4   |  4_2  |  4_3  |   E   |
    +-------+-------+-------+-------+-------+-------+-------+-------+-------+


## c. What are the subgroups of the 4mm point group?

Solution:

4, m, m_4, m_4_2 and m_4_3 are subgroups of 4mm. 

## d. Draw a stereographic projection for the point group.

Solutinon: 
    
Refer to Structure of Materials Chapter 9, Fig 9.7.

## e. Determine the orbit for the general position (x, y, z).

Solution: 
    
The orbit of the generalposition is given by:


```
from sympy import symbols
x, y, z = symbols("x y z")
p = [x, y, z]
for k, v in D.items():
    print np.dot(v, p)
```

    [x y z]
    [x -y z]
    [-y x z]
    [-x y z]
    [y x z]
    [-x -y z]
    [y -x z]
    [-y -x z]


## f. Identify possible special positions and determine the orbits of points lying on these special positions.

Solution:

There are special positions on the 4-fold axis (0, 0, z), the mirror plane (0, y, 0) and the diagonal mirror plane (x, x, z).

The orbit for the special position (0, 0, z) on the 4-fold axis is given by:


```
p = [0, 0, z]
orbit = []
for k, v in D.items():
    orbit.append(str(np.dot(v, p)))
for o in set(orbit):
    print o
```

    [0 0 z]


The orbit for the special position (0, y, 0) on the mirror plane on the a-c plane is given by:


```
p = [0, y, 0]
orbit = []
for k, v in D.items():
    orbit.append(str(np.dot(v, p)))
for o in set(orbit):
    print o
```

    [0 y 0]
    [0 -y 0]
    [-y 0 0]
    [y 0 0]


The orbit for the special position (x, x, z) on the diagonal mirror plane is given by:


```
p = [x, x, z]
orbit = []
for k, v in D.items():
    orbit.append(str(np.dot(v, p)))
for o in set(orbit):
    print o
```

    [-x x z]
    [x x z]
    [-x -x z]
    [x -x z]


**Note that all special positions have orbits that have < 8 elements.**

9b093b6c797f1c91cbaa8da568c69dcba769aa25
ipynb
Jupyter Notebook
problem_sets/PS1 - Qn 8.ipynb
ksyang2013/nano106
222f2c6142f43fc4395d9f9ee833ec88c5106e8d
BSD-3-Clause
2015-04-19T23:24:25.000Z
2022-02-10T15:21:12.000Z
problem_sets/PS1 - Qn 8.ipynb
materialsvirtuallab/nano106
222f2c6142f43fc4395d9f9ee833ec88c5106e8d
BSD-3-Clause
problem_sets/PS1 - Qn 8.ipynb
materialsvirtuallab/nano106
222f2c6142f43fc4395d9f9ee833ec88c5106e8d
BSD-3-Clause
2016-06-30T21:37:14.000Z
2021-02-15T16:36:41.000Z
Qwen/Qwen-72B
1. YES
2. YES