{ "metadata": { "name": "", "signature": "sha256:17d65df3b0c57a8fd111ea8eab4ef3133d5cb21c08bd9fb7e72c33e3a99bce28" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "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." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "a. Write down the 3D matrix representations for the two generators in the tetragonal basis." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Solution:\n", " \n", "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" ] }, { "cell_type": "code", "collapsed": false, "input": [ "D_4 = [[0, -1, 0],\n", " [1, 0, 0],\n", " [0, 0, 1]]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mirror plane maps $\\mathbf{b}$ lattice vector to $\\mathbf{b}'$, where $\\mathbf{b}'$ = -$\\mathbf{b}$. Hence, the matrix is" ] }, { "cell_type": "code", "collapsed": false, "input": [ "D_m = [[1, 0, 0],\n", " [0, -1, 0],\n", " [0, 0, 1]]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "b. Determine the matrix representations for all symmetry elements in the group, and construct a multiplication table for the 4mm point group. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Solution: All symmetry elements can be obtained by the multiplication of the generators." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "\n", "D = {}\n", "D[\"4\"] = np.array(D_4)\n", "D[\"m\"] = np.array(D_m)\n", "D[\"4_2\"] = np.dot(D[\"4\"], D[\"4\"])\n", "D[\"4_3\"] = np.dot(D[\"4\"], D[\"4_2\"])\n", "D[\"E\"] = np.dot(D[\"4\"], D[\"4_3\"])\n", "D[\"m_4\"] = np.dot(D[\"m\"], D[\"4\"])\n", "D[\"m_4_2\"] = np.dot(D[\"m\"], D[\"4_2\"])\n", "D[\"m_4_3\"] = np.dot(D[\"m\"], D[\"4_3\"])\n", "\n", "print \"The complete set of symmetry elements are given by the following matrices:\"\n", "for k, v in D.items():\n", " print \"%s = %s\" % (k, str(v))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The complete set of symmetry elements are given by the following matrices:\n", "E = [[1 0 0]\n", " [0 1 0]\n", " [0 0 1]]\n", "m = [[ 1 0 0]\n", " [ 0 -1 0]\n", " [ 0 0 1]]\n", "4 = [[ 0 -1 0]\n", " [ 1 0 0]\n", " [ 0 0 1]]\n", "m_4_2 = [[-1 0 0]\n", " [ 0 1 0]\n", " [ 0 0 1]]\n", "m_4_3 = [[0 1 0]\n", " [1 0 0]\n", " [0 0 1]]\n", "4_2 = [[-1 0 0]\n", " [ 0 -1 0]\n", " [ 0 0 1]]\n", "4_3 = [[ 0 1 0]\n", " [-1 0 0]\n", " [ 0 0 1]]\n", "m_4 = [[ 0 -1 0]\n", " [-1 0 0]\n", " [ 0 0 1]]\n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The multiplication table is given below:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import itertools\n", "keys = [\"E\", \"4\", \"4_2\", \"4_3\", \"m\", \"m_4\", \"m_4_2\", \"m_4_3\"]\n", "def find_key(m):\n", " for k, v in D.items():\n", " if np.all(v == m):\n", " return k\n", "from prettytable import PrettyTable\n", "\n", "t = PrettyTable([\"\"] + keys)\n", "headers = list(keys)\n", "for k1 in keys:\n", " row = [k1]\n", " for k2 in keys:\n", " prod = np.dot(D[k1], D[k2])\n", " row.append(find_key(prod))\n", " t.add_row(row)\n", "print t" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "+-------+-------+-------+-------+-------+-------+-------+-------+-------+\n", "| | E | 4 | 4_2 | 4_3 | m | m_4 | m_4_2 | m_4_3 |\n", "+-------+-------+-------+-------+-------+-------+-------+-------+-------+\n", "| E | E | 4 | 4_2 | 4_3 | m | m_4 | m_4_2 | m_4_3 |\n", "| 4 | 4 | 4_2 | 4_3 | E | m_4_3 | m | m_4 | m_4_2 |\n", "| 4_2 | 4_2 | 4_3 | E | 4 | m_4_2 | m_4_3 | m | m_4 |\n", "| 4_3 | 4_3 | E | 4 | 4_2 | m_4 | m_4_2 | m_4_3 | m |\n", "| m | m | m_4 | m_4_2 | m_4_3 | E | 4 | 4_2 | 4_3 |\n", "| m_4 | m_4 | m_4_2 | m_4_3 | m | 4_3 | E | 4 | 4_2 |\n", "| m_4_2 | m_4_2 | m_4_3 | m | m_4 | 4_2 | 4_3 | E | 4 |\n", "| m_4_3 | m_4_3 | m | m_4 | m_4_2 | 4 | 4_2 | 4_3 | E |\n", "+-------+-------+-------+-------+-------+-------+-------+-------+-------+\n" ] } ], "prompt_number": 4 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "c. What are the subgroups of the 4mm point group?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Solution:\n", "\n", "4, m, m_4, m_4_2 and m_4_3 are subgroups of 4mm. " ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "d. Draw a stereographic projection for the point group." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Solutinon: \n", " \n", "Refer to Structure of Materials Chapter 9, Fig 9.7." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "e. Determine the orbit for the general position (x, y, z)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Solution: \n", " \n", "The orbit of the generalposition is given by:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy import symbols\n", "x, y, z = symbols(\"x y z\")\n", "p = [x, y, z]\n", "for k, v in D.items():\n", " print np.dot(v, p)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[x y z]\n", "[x -y z]\n", "[-y x z]\n", "[-x y z]\n", "[y x z]\n", "[-x -y z]\n", "[y -x z]\n", "[-y -x z]\n" ] } ], "prompt_number": 5 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "f. Identify possible special positions and determine the orbits of points lying on these special positions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Solution:\n", "\n", "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)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The orbit for the special position (0, 0, z) on the 4-fold axis is given by:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "p = [0, 0, z]\n", "orbit = []\n", "for k, v in D.items():\n", " orbit.append(str(np.dot(v, p)))\n", "for o in set(orbit):\n", " print o" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[0 0 z]\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The orbit for the special position (0, y, 0) on the mirror plane on the a-c plane is given by:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "p = [0, y, 0]\n", "orbit = []\n", "for k, v in D.items():\n", " orbit.append(str(np.dot(v, p)))\n", "for o in set(orbit):\n", " print o" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[0 y 0]\n", "[0 -y 0]\n", "[-y 0 0]\n", "[y 0 0]\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The orbit for the special position (x, x, z) on the diagonal mirror plane is given by:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "p = [x, x, z]\n", "orbit = []\n", "for k, v in D.items():\n", " orbit.append(str(np.dot(v, p)))\n", "for o in set(orbit):\n", " print o" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[-x x z]\n", "[x x z]\n", "[-x -x z]\n", "[x -x z]\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Note that all special positions have orbits that have < 8 elements.**" ] } ], "metadata": {} } ] }