formelsammlung/src/scripts/crystal_lattices.ipynb

442 lines
413 KiB
Plaintext
Raw Normal View History

2024-07-10 07:43:50 +02:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "eaed683c-c6f1-45e4-aaee-ae4e57209f5f",
"metadata": {},
"outputs": [],
"source": [
"import scipy as scp\n",
"from scipy.spatial import Voronoi, voronoi_plot_2d\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits.mplot3d import Axes3D\n",
"from mpl_toolkits.mplot3d.art3d import Poly3DCollection\n",
"%matplotlib widget"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "efd84ecd-9fb3-4d2f-9f7a-47cd1ff09eea",
"metadata": {},
"outputs": [],
"source": [
"class Lattice:\n",
" def __init__(self, *vecs):\n",
" # if the vecs were put in an iterable\n",
" if len(vecs) == 1:\n",
" vecs = vecs[0]\n",
" if len(vecs) == 3:\n",
" pass\n",
" elif len(vecs) == 2:\n",
" pass\n",
" else: raise ValueError(\"Vecs must contain either 2 or 3 vectors\")\n",
" self.dim = len(vecs)\n",
" self.vecs = list(vecs)\n",
" for i, v in enumerate(self.vecs):\n",
" if type(v) != np.ndarray:\n",
" self.vecs[i] = np.array(v)\n",
" if self.vecs[i].shape != (self.dim,):\n",
" raise ValueError(f\"Got {self.dim} vectors, therefore all vectors must be {self.dim} dimensional but vector {i+1} has shape {self.vecs[i].shape}\")\n",
" self.vecs = np.array(self.vecs)\n",
" self.vec_lengths = np.array([np.linalg.norm(v) for v in self.vecs])\n",
" self.center = np.zeros(self.dim)\n",
"\n",
" def get_point(self, *ns):\n",
" if len(ns) != len(self.vecs): raise ValueError(f\"Requires one index for each lattice vector {len(self.vecs)}, but got only {ns}\")\n",
" point = self.center.copy()\n",
" for i, n in enumerate(ns):\n",
" point += n * self.vecs[i]\n",
" return point\n",
"\n",
" \n",
" def get_points_around_center(self, n):\n",
" points = []\n",
" import itertools\n",
" ns = [i for i in range(-n, n+1)]\n",
" for n in itertools.product(*[ns for _ in range(self.dim)]):\n",
" # print(n)\n",
" points.append(self.get_point(*n))\n",
" return points"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "515b9133-233b-4a6a-8b2f-a2fca10fea3d",
"metadata": {},
"outputs": [],
"source": [
"def rot_mat_2D(rad):\n",
" return np.array([[np.cos(rad), -np.sin(rad)], [np.sin(rad), np.cos(rad)]])\n",
"\n",
"\n",
"def get_reciprocal_lattice(lattice: Lattice):\n",
" if lattice.dim == 2:\n",
" rot_90_deg = rot_mat_2D(np.pi / 2)\n",
" a1, a2 = lattice.vecs\n",
" b1 = 2 * np.pi * rot_90_deg @ a2 / (np.dot(a1, rot_90_deg @ a2))\n",
" b2 = 2 * np.pi * rot_90_deg @ a1 / (np.dot(a2, rot_90_deg @ a1))\n",
" return Lattice(b1, b2)\n",
" elif lattice.dim == 3:\n",
" a1, a2, a3 = lattice.vecs\n",
" V = np.dot(a1, np.cross(a2, a3))\n",
" b1 = 2 * np.pi/V * np.cross(a2, a3)\n",
" b2 = 2 * np.pi/V * np.cross(a3, a1)\n",
" b3 = 2 * np.pi/V * np.cross(a1, a2)\n",
" return Lattice(b1, b2, b3)\n",
" else: raise NotImplementedError(f\"Dim must be 2 or 3, but is {lattice.dim}\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "2855d08e-70d8-4ef7-ba19-2c06316caf15",
"metadata": {},
"outputs": [],
"source": [
"\n",
"def get_elementary_cell(lattice: Lattice):\n",
" points = lattice.get_points_around_center(1)\n",
" return points\n",
"\n",
"def get_orthogonal_2D(vec):\n",
" return np.array((vec[1], -vec[0]))\n",
"\n",
"def get_unit_cell_vertices(lattice: Lattice, voronoi: Voronoi):\n",
" \"\"\"regard only voronoi vertices which are closest to the center <=> their norm is <= 0.5*(norm of the unit vectors added together\n",
" \"\"\"\n",
" lattice_vec_norm = np.sqrt(np.sum(lattice.vec_lengths**2))\n",
" return voronoi.vertices[np.linalg.norm(voronoi.vertices, axis=1) <= 0.5 * lattice_vec_norm]\n",
" \n",
"def plot_unit_cell(lattice, fig_ax=None, vec_label=\"a\", subplot_kw={}):\n",
" # get voronoi of the points around the center\n",
" points = get_elementary_cell(lattice)\n",
" voronoi = Voronoi(points)\n",
"\n",
" if fig_ax:\n",
" fig, ax = fig_ax\n",
" else:\n",
" if lattice.dim == 3:\n",
" fig = plt.figure()\n",
" ax = fig.add_subplot(1,1,1, projection=\"3d\") \n",
" else:\n",
" fig, ax = plt.subplots(**subplot_kw) \n",
"\n",
" # unit cell vertices\n",
" cell_points = get_unit_cell_vertices(lattice, voronoi)\n",
" # sort by polar angle for the fill function\n",
" cell_points = list(cell_points)\n",
" # print(cell_points)\n",
" # print([i for i in map(lambda p: np.arctan2(p[1],p[0]), cell_points)])\n",
" if lattice.dim == 2:\n",
" cell_points.sort(key=lambda p: np.arctan2(p[1],p[0]))\n",
" x_cell, y_cell = zip(*cell_points)\n",
" ax.fill(x_cell, y_cell, color=\"#4444\")\n",
" ax.scatter(x_cell, y_cell, color=\"orange\")\n",
" \n",
" # lattice points\n",
" x_lat, y_lat = zip(*lattice.get_points_around_center(3))\n",
" ax.scatter(x_lat, y_lat, color=\"blue\")\n",
" \n",
" # lattice vectors\n",
" arrowprops = dict(arrowstyle=\"-|>,head_width=0.4,head_length=0.8\", color=\"black\", shrinkA=0,shrinkB=0)\n",
" for i, vec in enumerate(lattice.vecs):\n",
" ax.annotate(f\"\", xy=lattice.vecs[i], xytext=lattice.center, arrowprops=arrowprops)\n",
" if vec_label is not None:\n",
" # add name of vector at a perpendicular offset starting at half length\n",
" ax.annotate(r\"$\\vec{\"+f\"{vec_label}}}_{i+1}$\", xy=0.7*lattice.vecs[i], xytext=0.7*lattice.vecs[i] + 0.06*get_orthogonal_2D(lattice.vecs[i]))\n",
" elif lattice.dim == 3:\n",
" ridges = voronoi.ridge_vertices\n",
" for ridge in ridges:\n",
" verts = voronoi.vertices[ridge]\n",
" # print(verts, type(verts), verts.shape, verts.ndim)\n",
" ax.add_collection3d(Poly3DCollection([voronoi.vertices[ridge]], edgecolor=\"black\"))\n",
" ax.set_xlim(-2, 2)\n",
" ax.set_ylim(-2, 2)\n",
" ax.set_zlim(-2, 2)\n",
" else: raise NotImplementedError(f\"Dim must be 2 or 3, but is {lattice.dim}\")\n",
"\n",
" # limit to 2*lattice vectors\n",
" def calc_lim(axis):\n",
" lim = 2.05 * np.max(np.abs(lattice.vecs[axis,:]))\n",
" return -lim, lim\n",
" ax.set_xlim(*calc_lim(0))\n",
" ax.set_ylim(*calc_lim(1))\n",
" if lattice.dim == 3: ax.set_zlim(*calc_lim(2))\n",
" return fig"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "c2faef81-5f2a-4950-b986-e891ddfa7da8",
"metadata": {},
"outputs": [],
"source": [
"sphere_point = lambda rad: np.array([np.cos(rad), np.sin(rad)])\n",
"\n",
"square_lattice = Lattice([1, 0], [0, 1])\n",
"tilted_lattice = Lattice([1, 0.5], [0, 1])\n",
"honeycomb_lattice = Lattice(sphere_point(0), sphere_point(np.pi * 2/3))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a6b6ccf4-34c7-419d-8bcc-f3ce2870ba25",
"metadata": {},
"outputs": [],
"source": [
"# fig, axs = plt.subplots(3, figsize=(4, 12))\n",
"# plot_unit_cell(square_lattice, fig_ax=(fig, axs[0]))\n",
"# plot_unit_cell(tilted_lattice, fig_ax=(fig, axs[1]))\n",
"# plot_unit_cell(honeycomb_lattice, fig_ax=(fig,axs[2]));"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5314dd3a-17a7-402d-b3ee-ddbf69a6c4ed",
"metadata": {},
"outputs": [],
"source": [
"def plot_lattice(lattice: Lattice):\n",
" reci = get_reciprocal_lattice(lattice)\n",
" print(reci.vecs)\n",
" if lattice.dim == 3:\n",
" fig = plt.figure()\n",
" axs = [fig.add_subplot(1,2,i, projection=\"3d\") for i in [1,2]]\n",
" else:\n",
" fig, axs = plt.subplots(1, 2)\n",
" plot_unit_cell(lattice, fig_ax=(fig, axs[0]))\n",
" plot_unit_cell(reci, fig_ax=(fig, axs[1]), vec_label=\"b\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "39a49d00-fc93-4f2a-8645-d5e440e7a092",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 6.28318531e+00 -3.84734139e-16]\n",
" [ 3.84734139e-16 6.28318531e+00]]\n",
"[[ 6.28318531e+00 -3.84734139e-16]\n",
" [-3.14159265e+00 6.28318531e+00]]\n",
"[[6.28318531e+00 3.62759873e+00]\n",
" [4.44252717e-16 7.25519746e+00]]\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d387139d3da141268f8c9c7345f26575",
"version_major": 2,
"version_minor": 0
},
"image/png": "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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,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
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b13b23809cf34187826c182c0cb2dae3",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABZxElEQVR4nO3dfXxT5f0//tdp2qb3KaVt0tICVbkR6qAWQdACdQqiUJXhZGwg+6mTTUToYIruI+AmeDeHD5lj3sGc82Za0G6gwr7YWseNgBSRu6ErtJSW3kATepe0yfn9ERsJTdq0TXLuXs/H41Byck7yvnLlXH33nOtclyCKoggiIiIi0owQqQMgIiIiouBiAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaQwTQCIiIiKNYQJIREREpDFMAImIiIg0hgkgERERkcYwASQiIiLSGCaARERERBrDBJCIiIhIY5gAEhEREWkME0AiIiIijWECSERERKQxTACJiIiINIYJIBEREZHGMAEkIiIi0hgmgEREREQawwSQiIiISGOYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaQwTQCIiIiKNYQJIREREpDFMAImIiIg0hgkgERERkcYwASQiIiLSGCaARERERBrDBJCIiIhIY5gAEhEREWkME0AiIiIijWECSERERKQxTACJiIiINIYJIBEREZHGMAEkIiIi0hgmgEREREQawwSQiIiISGOYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaUyo1AEomcPhwJkzZxAbGwtBEKQOh0hzRFHEhQsXkJqaipAQ5fw9y7aDSFpKbTv8SlSB1atXi2PGjBFjYmLEpKQk8bbbbhOPHTvW7X5FRUXi1VdfLer1ejEjI0P885//3KP3raioEAFw4cJF4qWioqK3zYck2HZw4SKPRWlthz+p4gxgcXExHnjgAVxzzTVob2/HY489hilTpuDIkSOIjo72uE9ZWRluueUW3HfffXjzzTfxn//8B7/61a+QlJSEH/3oRz69b2xs7Hf/qwAQ1+n5v/0N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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABZxElEQVR4nO3dfXxT5f0//tdp2qb3KaVt0tICVbkR6qAWQdACdQqiUJXhZGwg+6mTTUToYIruI+AmeDeHD5lj3sGc82Za0G6gwr7YWseNgBSRu6ErtJSW3kATepe0yfn9ERsJTdq0TXLuXs/H41Byck7yvnLlXH33nOtclyCKoggiIiIi0owQqQMgIiIiouBiAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaQwTQCIiIiKNYQJIREREpDFMAImIiIg0hgkgERERkcYwASQiIiLSGCaARERERBrDBJCIiIhIY5gAEhEREWkME0AiIiIijWECSERERKQxTACJiIiINIYJIBEREZHGMAEkIiIi0hgmgEREREQawwSQiIiISGOYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaQwTQCIiIiKNYQJIREREpDFMAImIiIg0hgkgERERkcYwASQiIiLSGCaARERERBrDBJCIiIhIY5gAEhEREWkME0AiIiIijWECSERERKQxTACJiIiINIYJIBEREZHGMAEkIiIi0hgmgEREREQawwSQiIiISGOYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaUyo1AEomcPhwJkzZxAbGwtBEKQOh0hzRFHEhQsXkJqaipAQ5fw9y7aDSFpKbTv8SlSB1atXi2PGjBFjYmLEpKQk8bbbbhOPHTvW7X5FRUXi1VdfLer1ejEjI0P885//3KP3raioEAFw4cJF4qWioqK3zYck2HZw4SKPRWlthz+p4gxgcXExHnjgAVxzzTVob2/HY489hilTpuDIkSOIjo72uE9ZWRluueUW3HfffXjzzTfxn//8B7/61a+QlJSEH/3oRz69b2xs7Hf/qwAQ1+n5v/0N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
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1f00d6b046d449228a592b5ba2e109a4",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABYyklEQVR4nO3deXxTZb4/8M9p2qZ72tI2XaEdZBHKJiiLls2xikAdKyiXe1n8zXDFkUFgUAe9V9F7kRl1nDKio6gjOCrjFSqiMle5ylIFZBmKUlal0jbdaEuTbjRtcn5/hEZCF9I2ydk+79crrzYn5yTf5zw5T78953meI4iiKIKIiIiINMNP6gCIiIiIyLeYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaQwTQCIiIiKNYQJIREREpDFMAImIiIg0hgkgERERkcYwASQiIiLSGCaARERERBrDBJCIiIhIY5gAEhEREWkME0AiIiIijWECSERERKQxTACJiIiINIYJIBEREZHGMAEkIiIi0hgmgEREREQawwSQiIiISGOYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaQwTQCIiIiKNYQJIREREpDFMAImIiIg0hgkgERERkcYwASQiIiLSGCaARERERBrDBJCIiIhIY5gAEhEREWkME0AiIiIijWECSERERKQxTACJiIiINIYJIBEREZHGMAEkIiIi0hgmgEREREQawwSQiIiISGOYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGuMvdQBKZrfbUVpaivDwcAiCIHU4RJojiiLq6uqQmJgIPz/l/D/LtoNIWkptOzyJCWAvlJaWIiUlReowiDSvuLgYycnJUofhNrYdRPKgtLbDk5gA9kJ4ePjl34oBRLR7/W9/A7KyfBqSx2zfDsyb1/nrLJs8aa9sFgApVxyLytBV26HkOlIzNR9batZ5vSmz7fAkQRRFUeoglMpiscBgMAAw4+pGXBCA5GSgsBDQ6SQJr8dsNiA1FSgp6fh1lk2etFk2CwADzGYzIiLa/xMmV521HUqu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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABYyklEQVR4nO3deXxTZb4/8M9p2qZ72tI2XaEdZBHKJiiLls2xikAdKyiXe1n8zXDFkUFgUAe9V9F7kRl1nDKio6gjOCrjFSqiMle5ylIFZBmKUlal0jbdaEuTbjRtcn5/hEZCF9I2ydk+79crrzYn5yTf5zw5T78953meI4iiKIKIiIiINMNP6gCIiIiIyLeYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaQwTQCIiIiKNYQJIREREpDFMAImIiIg0hgkgERERkcYwASQiIiLSGCaARERERBrDBJCIiIhIY5gAEhEREWkME0AiIiIijWECSERERKQxTACJiIiINIYJIBEREZHGMAEkIiIi0hgmgEREREQawwSQiIiISGOYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGsMEkIiIiEhjmAASERERaQwTQCIiIiKNYQJIREREpDFMAImIiIg0hgkgERERkcYwASQiIiLSGCaARERERBrDBJCIiIhIY5gAEhEREWkME0AiIiIijWECSERERKQxTACJiIiINIYJIBEREZHGMAEkIiIi0hgmgEREREQawwSQiIiISGOYABIRERFpDBNAIiIiIo1hAkhERESkMUwAiYiIiDSGCSARERGRxjABJCIiItIYJoBEREREGuMvdQBKZrfbUVpaivDwcAiCIHU4RJojiiLq6uqQmJgIPz/l/D/LtoNIWkptOzyJCWAvlJaWIiUlReowiDSvuLgYycnJUofhNrYdRPKgtLbDk5gA9kJ4ePjl34oBRLR7/W9/A7KyfBqSx2zfDsyb1/nrLJs8aa9sFgApVxyLytBV26HkOlIzNR9batZ5vSmz7fAkQRRFUeoglMpiscBgMAAw4+pGXBCA5GSgsBDQ6SQJr8dsNiA1FSgp6fh1lk2etFk2CwADzGYzIiLa/xMmV521HUqu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
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_lattice(square_lattice)\n",
"plot_lattice(tilted_lattice)\n",
"plot_lattice(honeycomb_lattice)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "ef0a5d74-739f-4688-ad7f-fed91c39dcaa",
"metadata": {},
"outputs": [],
"source": [
"simple_cubic = Lattice([1,0,0], [0,1,0], [0,0,1])\n",
"graphite = Lattice([0.5,-0.5 * 3**(0.5),0], [0.5,0.5 * 3**(0.5),0], [0,0,1])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "364f3ddb-21d0-4586-8b3b-acad8ba20d9b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[6.28318531 0. 0. ]\n",
" [0. 6.28318531 0. ]\n",
" [0. 0. 6.28318531]]\n",
"[[ 6.28318531 -3.62759873 0. ]\n",
" [ 6.28318531 3.62759873 -0. ]\n",
" [-0. 0. 6.28318531]]\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3eb3e14cd16741d085826e020df23362",
"version_major": 2,
"version_minor": 0
},
"image/png": "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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,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
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9a136d5a50f749dbb2e429adbd10f48e",
"version_major": 2,
"version_minor": 0
},
"image/png": "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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,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
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_lattice(simple_cubic);\n",
"plot_lattice(graphite);"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c6512444-6c86-4e31-bc6a-2c8b1e00c28d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "2dce1256-7afa-4e86-8aff-5db7b13b4d4d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "conda",
"language": "python",
"name": "conda"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}