From 53fe90d81d17a34d89a76b59fdd2520f3ba9439b Mon Sep 17 00:00:00 2001 From: Taylor Date: Wed, 11 Oct 2023 10:14:11 +0200 Subject: [PATCH] Revised the text of interactive and theory notebooks. Removed code related to orientation sync for now. --- notebook/band-theory/brillouin_zone.ipynb | 180 ++++++------------ .../theory/theory_brillouin_zone.ipynb | 41 ++-- 2 files changed, 83 insertions(+), 138 deletions(-) diff --git a/notebook/band-theory/brillouin_zone.ipynb b/notebook/band-theory/brillouin_zone.ipynb index bc93fda..f3d4c36 100644 --- a/notebook/band-theory/brillouin_zone.ipynb +++ b/notebook/band-theory/brillouin_zone.ipynb @@ -63,8 +63,8 @@ " $$\\vec{a}_1 \\cdot \\vec{b}_1 = 2 \\pi \\vec{a}_1 \\cdot \\frac{\\vec{a}_2 \\times \\vec{a}_3}{\\vec{a}_1 \\cdot (\\vec{a}_2 \\times \\vec{a}_3)} = 2 \\pi$$\n", " $$\\vec{a}_2 \\cdot \\vec{b}_1 =2 \\pi \\vec{a}_2 \\cdot \\frac{\\vec{a}_2 \\times \\vec{a}_3}{\\vec{a}_1 \\cdot (\\vec{a}_2 \\times \\vec{a}_3)} = 0$$\n", " $$\\vec{a}_3 \\cdot \\vec{b}_1 =2 \\pi \\vec{a}_3 \\cdot \\frac{\\vec{a}_2 \\times \\vec{a}_3}{\\vec{a}_1 \\cdot (\\vec{a}_2 \\times \\vec{a}_3)} = 0$$\n", - " Similarly, one can compute for other reciprocal lattice vector $\\vec{b}_2$ and \n", - " $\\vec{b}_3$. In summary, we have the relation as $\\vec{a}_i \\cdot \\vec{b}_j = 2\\pi \\delta _{ij}$.\n", + " One can carry out similar computations for the other reciprocal lattice vectors $\\vec{b}_2$ and \n", + " $\\vec{b}_3$. In summary, we have the relationship $\\vec{a}_i \\cdot \\vec{b}_j = 2\\pi \\delta _{ij}$.\n", " \n", " \n", "
  • What is the volume of the primitive cell in reciprocal space? How it is related \n", @@ -75,7 +75,7 @@ " $$\\Omega_b = \\vec{b}_1 \\cdot (\\vec{b}_2 \\times \\vec{b}_3) = \n", " 2\\pi \\frac{\\vec{a}_2 \\times \\vec{a}_3}{\\vec{a}_1 \\cdot (\\vec{a}_2 \\times \\vec{a}_3)}\n", " (\\vec{b}_2 \\times \\vec{b}_3)$$\n", - " According to the Lagrange's identity, one can show:\n", + " According to Lagrange's identity, one can show:\n", " $$(\\vec{a}_2 \\times \\vec{a}_3) \\cdot (\\vec{b}_2 \\times \\vec{b}_3) =\n", " (\\vec{a}_2 \\cdot \\vec{b}_2)(\\vec{a}_3 \\cdot \\vec{b}_3) - \n", " (\\vec{a}_2 \\cdot \\vec{b}_3)(\\vec{a}_3 \\cdot \\vec{b}_2) = 2\\pi \\cdot 2\\pi - 0 = 4\\pi^2$$\n", @@ -91,8 +91,9 @@ " \"drawing\"\n", "
    Figure 1. Demonstration of the procedure for constructing the primitive lattice vectors for the body-centered cubic (BCC) structure.
    \n", " \n", + " \n", " For a BCC structure, as shown in the Figure 1, the primitive lattice vectors can\n", - " be constructed as:\n", + " be written as:\n", " $$\\vec{a}_1 = \\frac{a}{2} (\\vec{x}+\\vec{y}-\\vec{z})$$\n", " $$\\vec{a}_2 = \\frac{a}{2} (-\\vec{x}+\\vec{y}+\\vec{z})$$\n", " $$\\vec{a}_3 = \\frac{a}{2} (\\vec{x}-\\vec{y}+\\vec{z})$$\n", @@ -100,15 +101,15 @@ " The corresponding reciprocal lattice vectors are:\n", " $$\\vec{b}_1 = 2\\pi \\frac{\\vec{a}_2 \\times \\vec{a}_3}\n", " {\\vec{a}_1 (\\vec{a}_2 \\times \\vec{a}_3)} = \\frac{2\\pi}{\\Omega}\n", - " (\\vec{a}_2 \\times \\vec{a}_3) = \\frac{\\pi a^2}{\\Omega} (x + y)$$\n", + " (\\vec{a}_2 \\times \\vec{a}_3) = \\frac{\\pi a^2}{\\Omega} (\\vec{x} + \\vec{y})$$\n", " \n", " $$\\vec{b}_2 = 2\\pi \\frac{\\vec{a}_3 \\times \\vec{a}_1}\n", " {\\vec{a}_1 (\\vec{a}_2 \\times \\vec{a}_3)} = \\frac{2\\pi}{\\Omega}\n", - " (\\vec{a}_3 \\times \\vec{a}_1) = \\frac{\\pi a^2}{\\Omega} (y + z)$$\n", + " (\\vec{a}_3 \\times \\vec{a}_1) = \\frac{\\pi a^2}{\\Omega} (\\vec{y} + \\vec{z})$$\n", " \n", " $$\\vec{b}_1 = 2\\pi \\frac{\\vec{a}_1 \\times \\vec{a}_2}\n", " {\\vec{a}_1 (\\vec{a}_2 \\times \\vec{a}_3)} = \\frac{2\\pi}{\\Omega}\n", - " (\\vec{a}_2 \\times \\vec{a}_3) = \\frac{\\pi a^2}{\\Omega} (x + y)$$\n", + " (\\vec{a}_1 \\times \\vec{a}_2) = \\frac{\\pi a^2}{\\Omega} (\\vec{x} + \\vec{y})$$\n", " \n", "
    \n", " \"drawing\"\n", @@ -135,7 +136,7 @@ " \n", " $$\\vec{b}_1 = 2\\pi \\frac{\\vec{a}_1 \\times \\vec{a}_2}\n", " {\\vec{a}_1 \\cdot (\\vec{a}_2 \\times \\vec{a}_3)} = \\frac{2\\pi}{\\Omega}\n", - " (\\vec{a}_2 \\times \\vec{a}_3) = \\frac{\\pi a^2}{2 \\Omega}\n", + " (\\vec{a}_1 \\times \\vec{a}_2) = \\frac{\\pi a^2}{2 \\Omega}\n", " (\\vec{x}-\\vec{y}+\\vec{z})$$\n", " \n", " One can see that the reciprocal lattice vectors of the BCC structure are simply \n", @@ -144,7 +145,8 @@ " has the same structure as the Wigner-Seitz primitive cell of FCC.\n", " And the 1st Brillouin zone of the FCC lattice has the same structure as the\n", " the Wigner-Seitz primitive cell of BCC.\n", - " \n", + " \n", + " \n", "
  • \n", "" ] @@ -159,7 +161,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "posted-injection", "metadata": {}, "outputs": [], @@ -186,7 +188,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "5bd45845-7969-4808-aba4-8f60f850f139", "metadata": {}, "outputs": [], @@ -246,13 +248,56 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "e813f33a-8d73-469f-8b9b-ec4e93763abc", "metadata": { "scrolled": true, "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1befff4a7c964e37810b483e84aad4bf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(HTML(value=\"
    St…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3e93345b0a1f4bc1af661d861e18840f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(NGLWidget(), VBox(children=(BZVisualizer(cell=[[1.8, 0.0, 0.0], [0.0, 1.8, 0.0], [0.0, 0.0, 1.8…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a065a7edbc64470ad4426cc22bcd937", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(VBox(children=(Text(value='Crystal family'), RadioButtons(options=('Cubic', 'Hexagonal', 'Rhomb…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "\"\"\"\n", "now contents are dropdwn menus. \n", @@ -316,63 +361,6 @@ " param_dict[crystal_family+'-'+centering]['gamma'] = gamma\n", " \n", "\n", - "\n", - "def on_orientation_sync(c):\n", - " ngl_dict=m.__dict__['_trait_values']\n", - " init_ngl_matrix= np.array([24.451005287902106, 0.0, 0.0, -3.5999999046325684, 0.0, 24.451005287902106, 0.0, -3.5999999046325684, 0.0, 0.0, 24.451005287902106, -3.5999999046325684, 0.0, 0.0, 0.0, 1.0]).reshape((4,4))\n", - " temp = (np.linalg.inv(init_ngl_matrix))@np.array(ngl_dict[\"_camera_orientation\"]).reshape(4,4).T\n", - " temp2 = (np.array(ngl_dict[\"_camera_orientation\"]).reshape(4,4).T)@(np.linalg.inv(init_ngl_matrix))\n", - " ngl_extmat=np.array(ngl_dict[\"_camera_orientation\"]).reshape(4,4).T\n", - " init_worldmatrix = np.array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,10.471975511965978,1]).reshape((4,4)).T\n", - " ngl_extmat = init_worldmatrix@temp\n", - "# orientation = init_worldmatrix@temp\n", - "# orientation = temp@init_worldmatrix\n", - "# ngl_extmat = temp@np.linalg.inv(init_worldmatrix)\n", - "# ngl_extmat = temp@init_worldmatrix\n", - "\n", - "# ngl_extmat = temp2@init_worldmatrix\n", - "\n", - " R=ngl_extmat[0:3,0:3]\n", - " T=ngl_extmat[0:3,-1]\n", - " campos=list(-(R.T)@T) \n", - " camdir=list((R.T)@np.array([0,0,1]))\n", - " cam_dict={\"campos\":campos, \"camdir\":camdir}\n", - "\n", - "# # orientation=temp\n", - "# # orientation = orientation.T\n", - "# orientation = orientation.flatten()\n", - "# orientation[-1] = 1\n", - "# orientation[12]=0.\n", - "# orientation[13]=0.\n", - "# orientation[14]=0.\n", - "# orientation *=1/100.\n", - "# orientation[3] =0.\n", - "# orientation[7] =0.\n", - "# orientation[11]=0.\n", - "\n", - "# orientation -= np.array([24.451005287902106, 0.0, 0.0, -3.5999999046325684, 0.0, 24.451005287902106, 0.0, -3.5999999046325684, 0.0, 0.0, 24.451005287902106, -3.5999999046325684, 0.0, 0.0, 0.0, 0.0])\n", - "# orientation += np.array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,10.471975511965978,0])\n", - " # orientation=[0.7500277180472348,5.551115123125783e-17,0.6614063971272561,0,0.5078318190417079,0.6406823725596474,-0.5758758035029177,0,-0.4237514197376189,0.7678060285588679,0.48052953788400066,0,-4.437514490653162,8.040445929008314,5.0320935534975835,1]\n", - "# orientation = [0.7683450340620741,-5.551115123125783e-17,0.6400358651139405,0,0.5491434688219112,0.5136687465056196,-0.659231271644166,0,-0.32876642055171756,0.8579885890053234,0.39467483053048313,0,-3.964409288439841,8.830108018321802,3.6037858154548483,1]\n", - " # orientation = [0.9709872600909863,0,0.2391312207575565,0,0.23913122075743692,0.0000010000000000287557,-0.9709872600905007,0,-2.3913122074170623e-7,0.9999999999995,9.709872600405234e-7,0,-0.000002504176287919244,10.471975511960737,0.000010168154810102051,1]\n", - " w.orientation=cam_dict\n", - "# w.orientation = list(orientation)\n", - " # with output:\n", - " # #print(\"set orientation ={}\".format(w.orientation))\n", - " # ngl_dict=m.__dict__['_trait_values']\n", - " \n", - "# print(\"w = {}\\n\".format(w.__dict__))\n", - "# print(\"init_world_matrix= {}\".format(init_worldmatrix))\n", - "\n", - "# print(\"init_ngl_matrix= {}\".format(init_ngl_matrix))\n", - " \n", - "# print(\"np.array(ngl_dict[\\\"_camera_orientation\\\"]).reshape(4,4).T = {}\\n\".format(np.array(ngl_dict[\"_camera_orientation\"]).reshape(4,4).T))\n", - "# print(\"camdict={}\".format(cam_dict))\n", - "# print(\"(np.linalg.inv(init_ngl_matrix)@np.array(ngl_dict[\\\"_camera_orientation\\\"]).reshape(4,4)).T{}\".format(np.linalg.inv(init_ngl_matrix)@np.array(ngl_dict[\"_camera_orientation\"]).reshape(4,4)))\n", - " # set the bz visualizer camera orientation equal to this\n", - "\n", - "\n", - "\n", "output = Output(layout=Layout(width=\"400px\"))\n", "a_slider=widgets.FloatSlider(\n", " value=3.5,\n", @@ -531,16 +519,11 @@ " # then we will need some logic to prevent overriding them when we change crystal\n", " # structure or centering\n", " \n", - " # if type(change['owner']) == widgets.widget_selection.RadioButtons:\n", - " # save_lat_params=False\n", - " # print(\"reset sliders: type(change[owner]) = {}\".format(type(change['owner'])))\n", - " # if change['owner'] = \n", + " \n", " crystal_family_radio.unobserve(reset_sliders, names='value')\n", "\n", " crystal_family = crystal_family_radio.value\n", - " # with output:\n", - " # print(\"crystal family = {}\".format(crystal_family))\n", - " \n", + " \n", " a_slider.unobserve(compute_BZ,names='value')\n", " b_slider.unobserve(compute_BZ,names='value')\n", " c_slider.unobserve(compute_BZ,names='value')\n", @@ -821,9 +804,6 @@ " global m,c1, crystal_family_radio,w, real_lattice\n", " \n", " crystal_family = crystal_family_radio.value\n", - " # with output:\n", - " # print(\"compute_bz. crystal fam = {}, c == {}\\n\".format(crystal_family,c))\n", - "\n", " \n", " try:\n", " a_slider.unobserve(compute_BZ,names='value')\n", @@ -988,45 +968,12 @@ "gamma_slider.observe(compute_BZ,names='value')\n", "\n", "\n", - "# bt_compute.on_click(compute_BZ);\n", "\n", "label1 = HTML(value = f\"
    Structure
    \")\n", "label2 = HTML(value = f\"
    Brillouin zone
    \")\n", "\n", - "# orientation_sync_button = Button(description=\"Sync orientations\")\n", - "# orientation_sync_button.on_click(on_orientation_sync)\n", - "# display(HBox([label1, label2]), HBox([m, VBox([w,orientation_sync_button])]), HBox([col0, col1,col2]))\n", - "display(HBox([label1, label2]), HBox([m, VBox([w])]), HBox([col0, col1,col2]))\n", "\n", - "# display(orientation_sync_button)\n", - "# try the following [0.7500277180472348,5.551115123125783e-17,0.6614063971272561,0,0.5078318190417079,0.6406823725596474,-0.5758758035029177,0,-0.4237514197376189,0.7678060285588679,0.48052953788400066,0,-4.437514490653162,8.040445929008314,5.0320935534975835,1]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "52fcce72", - "metadata": {}, - "outputs": [], - "source": [ - "#[1,0,0,0,0,1,0,0,0,0,1,0,0,0,10.471975511965978,1] is init world vec\n", - "# [24.451005287902106, 0.0, 0.0, -3.5999999046325684, 0.0, 24.451005287902106, 0.0, -3.5999999046325684, 0.0, 0.0, 24.451005287902106, -3.5999999046325684, 0.0, 0.0, 0.0, 1.0\n", - "# is init orientation\n", - "# np.array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,10.471975511965978,1]).reshape((4,4)).T" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "74673cfe", - "metadata": {}, - "outputs": [], - "source": [ - "# a = np.array([[24.45100529 , 0. , 0. , -3.5999999 ],\n", - "# [ 0. , 24.45100529, 0. , -3.5999999 ],\n", - "# [ 0. , 0. , 24.45100529 ,-3.5999999 ],\n", - "# [ 0. , 0. , 0. , 1. ]])\n", - "# np.linalg.inv(a)@a" + "display(HBox([label1, label2]), HBox([m, VBox([w])]), HBox([col0, col1,col2]))\n" ] }, { @@ -1042,8 +989,7 @@ "### Interactive figures\n", "\n", "There are two visualizers for the real space lattice structure (top left) and its 1st Brillouin zone in reciprocal space (top right) respectively. One can left-click\n", - "and rotate both structures. Middle wheel of the mouse can zoom in and zoom out\n", - "the structures. In the 1st Brillouin zone visualizer, the high symmetry points\n", + "and rotate both structures. The mousewheel can be used to zoom in and zoom out. In the 1st Brillouin zone visualizer, the high symmetry points\n", "are also shown in the figure.\n", "\n", "### Controls\n", @@ -1080,7 +1026,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.10.9" } }, "nbformat": 4, diff --git a/notebook/band-theory/theory/theory_brillouin_zone.ipynb b/notebook/band-theory/theory/theory_brillouin_zone.ipynb index 31fe602..9283e06 100644 --- a/notebook/band-theory/theory/theory_brillouin_zone.ipynb +++ b/notebook/band-theory/theory/theory_brillouin_zone.ipynb @@ -21,9 +21,9 @@ "source": [ "## **Introduction**\n", "\n", - "The concept of the reciprocal space and reciprocal lattice was first introduced by [Paul Peter Ewald](https://en.wikipedia.org/wiki/Paul_Peter_Ewald) (German crystallographer and physicist) in 1921 [[Annalen der Physik, 369, 3, 253 (1921)]](https://onlinelibrary.wiley.com/doi/10.1002/andp.19213690304). The concept of reciprocal space is very helpful to understand the X-ray diffraction. It is also one of the core concept in the solid state physics.\n", + "The concept of the reciprocal space and the reciprocal lattice was first introduced by [Paul Peter Ewald](https://en.wikipedia.org/wiki/Paul_Peter_Ewald) (German crystallographer and physicist) in 1921 [[Annalen der Physik, 369, 3, 253 (1921)]](https://onlinelibrary.wiley.com/doi/10.1002/andp.19213690304). The concept is invaluable, for example, when one is trying to interpret X-ray diffraction patterns. It is also one of the core conceptual tools employed in solid state physics.\n", "\n", - "The Wigner–Seitz construction is a method to build the primitive cell. In the reciprocal space, the Wigner-Seitze primitive cell is called the 1st Brillouin zone." + "The Wigner–Seitz construction is a method to build the primitive cell in real space. Its counterpart in reciprocal space (i.e. transformation of the Wigner-Seitz cell to reciprocal space) is called the 1st Brillouin zone." ] }, { @@ -33,20 +33,20 @@ "source": [ "## **Reciprocal space and reciprocal lattice**\n", "\n", - "Let's define $\\vec{a}_1$, $\\vec{a}_2$ and $\\vec{a}_3$ as a set of primitive vectors for the direction of the lattice. The lattice vector $\\vec{R}_l$ can be written as:\n", + "Let's define $\\vec{a}_1$, $\\vec{a}_2$ and $\\vec{a}_3$ as a set of primitive vectors describing the real-space lattice. The lattice vector $\\vec{R}_l$ can be written as:\n", "\n", "$$\\vec{R}_l = (l_1\\vec{a}_1 + l_2\\vec{a}_2 + l_3\\vec{a}_3)$$\n", "\n", "The volume of the lattice cell is computed as:\n", "\n", - "$$\\Omega = \\vec{a}_1 (\\vec{a}_2 \\times \\vec{a}_3)$$\n", + "$$\\Omega = \\vec{a}_1 \\cdot (\\vec{a}_2 \\times \\vec{a}_3)$$\n", "\n", - "Now, let's define another set of primitive vectors: $\\vec{b}_1$, $\\vec{b}_2$, $\\vec{b}_3$. If they satisfy the relation with $\\vec{a}_1$, $\\vec{a}_2$, $\\vec{a}_3$ as:\n", + "Now, let's define another set of primitive vectors, $\\vec{b}_1$, $\\vec{b}_2$ and $\\vec{b}_3$ which satisfy the relationship\n", "\n", - "$$\\vec{a}_i \\vec{b}_j = 2\\pi \\delta_{ij} $$\n", + "$$\\vec{a}_i \\cdot \\vec{b}_j = 2\\pi \\delta_{ij} $$\n", "\n", - "$\\delta_{ij}$ is the Dirac delta function, which equals to 1 when $i=j$ and equals\n", - "to 0 when $i \\neq j$, both sets of primitive vectors are reciprocal lattice vectors to each others. The primitive vectors $\\vec{b}_1$, $\\vec{b}_2$, $\\vec{b}_3$ can be constructed as:\n", + "Here, $\\delta_{ij}$ is the Dirac delta function, which equals to 1 when $i=j$ and equals\n", + "to 0 when $i \\neq j$. Such as set of vectors $\\{\\vec{b}_1$, $\\vec{b}_2$, $\\vec{b}_3\\}$ are referred to as the reciprocal lattice vectors corresponding to $\\{\\vec{a}_1, \\vec{a}_2,\\vec{a}_3\\}$. The reciprocal lattice vectors can be explicitly constructed as:\n", "\n", "$$\\vec{b}_1 = 2\\pi \\frac{\\vec{a}_2 \\times \\vec{a}_3}{\\vec{a}_1 (\\vec{a}_2 \\times \\vec{a}_3)}$$\n", "$$\\vec{b}_2 = 2\\pi \\frac{\\vec{a}_3 \\times \\vec{a}_1}{\\vec{a}_1 (\\vec{a}_2 \\times \\vec{a}_3)}$$\n", @@ -60,21 +60,20 @@ "source": [ "## **Wigner–Seitz cell**\n", "\n", - "For the soild state systems, there are many ways to construct the primitive cell\n", + "For soild-state systems, there are many ways to construct the primitive cell\n", "according to the symmetry of the lattice.\n", - "The most common method is called Wigner-Seitz cell, which is named after two physicists [Eugene Wigner](https://en.wikipedia.org/wiki/Eugene_Wigner) and \n", + "The most common method is called the Wigner-Seitz construction, which is named after two physicists [Eugene Wigner](https://en.wikipedia.org/wiki/Eugene_Wigner) and \n", "[Frederick Seitz](https://en.wikipedia.org/wiki/Frederick_Seitz).\n", - "The Wigner-Seitz cell around a lattice point is closer than any other lattice points, which is the defination of the Wigner-Seitz cell.\n", + "The Wigner-Seitz cell is defined as the locus of point in real space which are closer to a given point on the crystalline lattice than any of the other lattice points.\n", "\n", - "For a 2D lattice grid (as shown in Figure 1), connect one random lattice point to all its nearest \n", - "neighbor lattice points (all the blue line). Then bisection each blue line with a line (the red line) and \n", - "the smallest polyhedron is the boundary of the Wigner-Seitz cell. The animination of the construction method\n", - "is in the right of Figure 1. We can use the same method to construct the Wigner-Seitz cell in three dimension lattice space.\n", + "For a 2D lattice (as shown in Figure 1), the Wigner-Seitz cell can be produced via the following steps. First, connect one random lattice point to all its nearest \n", + "neighbor lattice points (the blue lines). Then bisect each blue line with another line (the red line). The smallest polyhedron formed in this way is the boundary of the Wigner-Seitz cell. An animination perorming this construction\n", + "is illustrated in the right of Figure 1. We can use the same method to construct the Wigner-Seitz cell for a three dimensional lattice.\n", "\n", "
    \n", " \"drawing\"\n", " \"drawing\"\n", - "
    Figure 1. Demonstration of the construction of the Wigner-Seitz cell in two \n", + "
    Figure 1. Demonstration of the construction of the Wigner-Seitz cell in a two \n", " dimensional system. Figure and animination are adpoted from \n", " Wikipedia.
    \n", "
    " @@ -91,14 +90,14 @@ "[Léon Brillouin](https://en.wikipedia.org/wiki/L%C3%A9on_Brillouin).\n", "The 1st Brillouin zone is the Wigner-Seitz primitive cell in the **reciprocal lattice**.\n", "As shown in Figure 2, the pink area shows the 1st Brillouin zone. The second Brillouin zone\n", - "is constructed by drawing perpendicular bisectors of the reciprocal lattice group to the second \n", - "nearest lattice points. The region of the second Brillouin zone is the polyhedron without the \n", - "area of the 1st Brillouin zone, which is the yellow area in the Figure 2. The green and red areas together are the 3rd Brillouin zone.\n", + "is constructed by drawing perpendicular bisectors of the group of reciprocal lattice vectors connecting to the second \n", + "nearest neighbour lattice points. The region corresponding to the second Brillouin zone is the polyhedron with the \n", + "area of the 1st Brillouin zone removed; this is the yellow area in the Figure 2. The green and red areas together constitute the 3rd Brillouin zone.\n", "\n", "
    \n", " \"drawing\"\n", "
    Figure 2. Demonstration of the construction of the 1st, 2nd and 3rd \n", - " Brillouin zone for two-dimensional lattice.
    \n", + " Brillouin zones for a two-dimensional lattice.\n", "
    " ] }, @@ -127,7 +126,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.10.9" } }, "nbformat": 4,