{ "cells": [ { "cell_type": "markdown", "id": "f5700640", "metadata": {}, "source": [ "# Crystallographic calculations" ] }, { "cell_type": "markdown", "id": "c2578043", "metadata": {}, "source": [ "pyddt provides tools for calculating the atomic scattering amplitude, anomalous scattering factors and structure factors of a crystal.\n", "\n", "This step-by-step tutorial aims to show some details on pyddt implementation, particularly the interpolation scheme of tabulated scattering amplitudes and the structure factor formula, besides performing these calculations using the package." ] }, { "cell_type": "markdown", "id": "e06dbdc0", "metadata": {}, "source": [ "## 1. pyddt implementation" ] }, { "cell_type": "markdown", "id": "f208da36", "metadata": {}, "source": [ "See [Computer Simulation Tools for X-ray Analysis: Scattering and Diffraction Methods](https://link.springer.com/book/10.1007/978-3-319-19554-4) for detailed reference on X-ray scattering theory. " ] }, { "cell_type": "markdown", "id": "db474d7a", "metadata": {}, "source": [ "### 1.1 Atomic scattering factor and resonance amplitude" ] }, { "cell_type": "markdown", "id": "d4e7a61e", "metadata": {}, "source": [ "For an atom with electronic density $\\rho_{a}(r)$, the coherent scattering intensity is given by \n", "\n", "$$I \\propto |f_{0}(Q) + f'(E) + if''(E)|^{2}$$\n", "\n", "where $f_{0} = \\text{FT}\\{\\rho_{a}(r)\\}$ is the **atomic scattering factor** and the **resonance amplitude** $f'(E) + if''(E)$ is related to the absorption and fluorescence processes. These values are theoretically calculated for all atoms and significant ions.\n", "\n", "pyddt uses the tabulated values from the [International Tables of Crystallography](https://onlinelibrary.wiley.com/doi/book/10.1107/97809553602060000001L), considering the linear interpolation of $f'$ and $f''$ for energies ranging from 1004.16 eV and 70 keV. The parametric equation\n", "\n", "$$f_{0}(\\text{sin}\\theta/\\lambda) = f_{0}(Q/4\\pi) = \\sum_{i=1}^{4}a_{i}e^{-b_{i}\\big(\\frac{Q}{4\\pi}\\big)^{2}} + c $$\n", "\n", "is employed for Q < 30 $\\mathring A$$^{-1}$. $a_{i}, b_{i}$ and $c$ are the Cromer-Mann coefficients." ] }, { "cell_type": "markdown", "id": "e4eab177", "metadata": {}, "source": [ "### 1.2 Structure factor" ] }, { "cell_type": "markdown", "id": "8b5b385f", "metadata": {}, "source": [ "Given a crystal, the structure factor of the $hkl$ lattice plane is calculated by\n", "\n", "$$F_{hkl} = \\sum_{a}(f_{0} + f' + if'')_{a}C_{a}e^{-M_{a}}e^{2\\pi i (hx_{a}+ly_{a}+lz_{a})} = |F_{hkl}|e^{i\\delta_{hkl}}$$\n", "\n", "where $a$ summation runs over all atoms inside the unit cell, $C_{a}$ is the occupancy number, and $(x_{a}, y_{a}, z_{a})$ are the fractional coordinates. \n", "\n", "The **isotropic** Debye-Waller factor $$M_{a} = 8\\pi^{2}\\eta_{a}^{2}\\bigg(\\frac{\\text{sin}\\theta}{\\lambda}^{2}\\bigg) $$\n", "represents the crystal disorder, so that $\\eta_{a}$ is the root-mean-square deviation of the $a$-th atom in the direction of $\\mathbf{Q}$. \n", "\n", "* pyddt current version doesn't support **anisotropic** thermal motion.\n", "\n", "* The structure file (*.in* file) must include the B-factors ($\\mathring A$$^2$) of all atoms, defined as \n", "\n", "$$B = 8\\pi^{2}\\eta_{a}^{2}$$" ] }, { "cell_type": "markdown", "id": "7a22a203", "metadata": {}, "source": [ "## 2. Using pyddt" ] }, { "cell_type": "markdown", "id": "4c1cabc4", "metadata": {}, "source": [ "After this brief remarking on the pyddt implementation, let us show how to perform some crystallographic calculations." ] }, { "cell_type": "markdown", "id": "aa0f2ee0", "metadata": {}, "source": [ "### 2.1 Importing packages" ] }, { "cell_type": "markdown", "id": "beaee762", "metadata": {}, "source": [ "Beyond pyddt, we will also use Numpy for generating arrays and matplotlib for plotting." ] }, { "cell_type": "code", "execution_count": 1, "id": "6d2e1f89", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "77b2db3c0b4e492f857efd7ea4678c2e", "version_major": 2, "version_minor": 0 }, "text/plain": [] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "plt.rcParams['font.size'] = '14'\n", "\n", "import sys\n", "sys.path.append('path/to/pyddt')\n", "\n", "import pyddt" ] }, { "cell_type": "markdown", "id": "d3695b32", "metadata": {}, "source": [ "### 2.2 Atomic scattering factors" ] }, { "cell_type": "markdown", "id": "d97ec3fb", "metadata": {}, "source": [ "Let's calculate the atomic scattering factor of selenium and reciprocal vector $Q=8\\pi\\; (\\mathring A$$^{-1})$." ] }, { "cell_type": "code", "execution_count": 2, "id": "ce8fed0a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[4.79787017]])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pyddt.asfQ('Se', 2) # Q/4π = 2/Å" ] }, { "cell_type": "markdown", "id": "67457a10", "metadata": {}, "source": [ "Try it using different atoms, ions, and $Q$ values. The `asfQ` function also works for an array of $Q$ values." ] }, { "cell_type": "code", "execution_count": 3, "id": "be5beed5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([33.9885 , 16.30767336, 7.86524559, 5.59115665, 4.35547504,\n", " 3.55113219, 3.12239028, 2.93518598, 2.86759017, 2.84728523])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q = np.linspace(0, 5, 10) # Q/4π\n", "pyddt.asfQ('Se', q)" ] }, { "cell_type": "markdown", "id": "8a5e80eb", "metadata": {}, "source": [ "What happens for the Na$^{3+}$ ion? " ] }, { "cell_type": "code", "execution_count": 4, "id": "6af59f20", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Na3+ is not included in Cromermann factors. Replaced by Na1+\n" ] }, { "data": { "text/plain": [ "array([[1.03279492]])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pyddt.asfQ('Na3+', 2) " ] }, { "cell_type": "markdown", "id": "25a10814", "metadata": {}, "source": [ "pyddt always replaces the ion that isn't available in the tabulated values with the most similar.\n", "A warning always will be show when this kind of replacement happens. \n", "\n", "See [Analyzing structure factor phases in pure and doped single crystals by synchrotron X-ray Renninger scanning](http://scripts.iucr.org/cgi-bin/paper?S1600576713028677) (appendix A) for obtaining the atomic scattering factors of non-tabulated ions by using the available ions.\n", "\n", "Lastly, let's visualize the atomic scattering factors as a function of $Q$ using matplotlib. " ] }, { "cell_type": "code", "execution_count": 5, "id": "8f5f1d24", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "q = np.linspace(0, 8, 1000)\n", "\n", "fig = plt.figure(figsize=(7, 5))\n", "\n", "plt.plot(q, pyddt.asfQ('Na1+', q), '-', label='Na1+')\n", "plt.plot(q, pyddt.asfQ('Na', q), label='Na')\n", "\n", "plt.xlabel(r'Q/4$\\pi$ (1/angstrom)')\n", "plt.ylabel('Atomic scattering factor f(Q)')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "59e764a0", "metadata": {}, "source": [ "### 2.3 Resonance amplitude - anomalous scattering factors" ] }, { "cell_type": "markdown", "id": "6c2a3536", "metadata": {}, "source": [ "Now, we will show how to obtain the atomic resonance amplitude (also called anomalous scattering factors). The input of `aresE` function is very similar to the `asfQ`. For iron and characteristic radiation, one obtains" ] }, { "cell_type": "code", "execution_count": 6, "id": "9d8eb888", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.1306382948756366+3.1972344171411446j)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pyddt.aresE('Fe', 8048) # 8048 eV" ] }, { "cell_type": "markdown", "id": "4bb93063", "metadata": {}, "source": [ "Considering a range of energies and copper atom, " ] }, { "cell_type": "code", "execution_count": 7, "id": "ad61e367", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.11975181+6.32684898j, 0.09827547+3.9969607j ,\n", " -0.05817156+2.75911135j, -0.26933609+2.02224386j,\n", " -0.49158992+1.54844579j, -0.70484541+1.22527238j,\n", " -0.92480622+0.99511293j, -1.16733754+0.82516188j,\n", " -1.4683844 +0.69590195j, -1.91835961+0.59518187j])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pyddt.aresE('Cu', np.linspace(2000, 8000, 10)) " ] }, { "cell_type": "markdown", "id": "f6a8e669", "metadata": {}, "source": [ "What happens for an ion? Try to calculate for Fe$^{2+}$. Is this result physically meaningful? " ] }, { "cell_type": "code", "execution_count": 8, "id": "777c05ff", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pyddt.aresE('Fe2+', 8048) # 8048 eV" ] }, { "cell_type": "markdown", "id": "8f0106ae", "metadata": {}, "source": [ "The answer is no. The resonance amplitude isn't null for ions, but the tabulated values were only calculated for isolated atoms. \n", "\n", "When calculating the structure factors, **pyddt** will automatically replace the anomalous scattering factor of an ion with the corresponding isolated atom. However, pay attention that this is just an approximation.\n", "\n", "Let's take a look at the characteristic behavior of resonance amplitude near the Fe absorption edge." ] }, { "cell_type": "code", "execution_count": 9, "id": "4e25a09a", "metadata": {}, "outputs": [ { "data": { "image/png": "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G7xirDkwiTyGKyIiEjdJbeGKiIjEigJXREQkBApcERGREChwRUREQqDAFRERCYECV0REJAQKXBERkRAocEVEREKgwBUREQmBAldERCQEClwREZEQKHBFRERCoMAVEREJgQJXREQkBApcERGREChwRUREQqDAFRERCYECV0REJASlQe/AzP4H+BHwG+fcl1rbtqKiwo0ePTrokkREpEgsWLBgk3NuSNR1FEKggWtmRwLTgBfas/3o0aOZP39+kCWJiEgRMbPVUddQKIF1KZvZQOCPwPnA20HtR0REpBgEeQx3BnCHc+6xAPchIiJSFALpUjazC4GxwHnt2HYavtuZysrKIMoRERGJXMED18zG4QdJHeOca2hre+fcDHxrmOrqalfoekQELr0UnnkGDj0Uqqth0iQYPx569oy6MpHuw5wrbMaZ2VRgJtCY9XAJ4IAmoK9zbme+51ZXVzsNmhIpvL33hnfegV27oKbGP1ZeDgcf7MM3vRxwgEJY4sXMFjjnqqOuoxCC6FK+G8hNzZnACnzLtz6AfYpIK2pr4eyz4Te/gRUrYMGCzHLbbfDb3/rtysvhoIN8+KZbwgphkcIoeOA6594B3sl+zMy2AZudc0sKvT8RaVttLfTrBz16wLhxfjn3XL+uqQlefrl5CP/pT3DDDX59dginlwkTFMIiHRX4xBciEq3GRqirg/7986/v0QP2288vn/ykf6ypCV55BebPbzmEJ0yAiRN9t/TEiT6UBw4M4x2JFKdQAtc5d0IY+xGR3dXW+tt+/dr/nB49YN99/ZIbwukAXrgQ7rkHbrop87y9984EcHoZORLMCvNeRIqZWrgiCdeZwM0nO4TPOcc/5hysX+/DN70sWgR33+3XAQwalAnfdBiPHw9lZV2rR6TYKHBFEq5QgZuPGQwf7pfTTmu+z8WLMwG8cCFMn+67tsEf/91/f98NfeCBmWXECLWGJbkUuCIJlw7clo7hBqFfPzjqKL+kNTb6EdLpAF64EB57zI+SThs0qHkAH3igP1asY8OSBApckYRLn3cbRAu3I0pKoKrKL2efnXl882ZYssS3iNPLbbfB1q2ZbUaO3D2Iq6rULS3FRYErknBBdikXwp57wnHH+SXNOXjtteYhvHgxPPSQn7wDoLTUH08eP953T6eXceOgT59o3otIaxS4IgkX98DNxwxGjfLLGWdkHq+vh+XLMwG8dCm88ALcdZcfRZ393OwQHjsW9tnHHyPuEeQlW0RaocAVSbhiDNyWlJVlupSz7dzpjw+/+GLz5bHHYMeO5s8fM8aH7957+9v0z2PGqGUswVLgiiRc+hhumIOmwpaeiGPChOaPNzb6rulXXvHLq69mbp96qvlxYoChQ33wZi+jR/vbykodM5auUeCKJFy6hdu3b7R1RKGkJBOcJ53UfJ1zfsBWOoxXrvTLqlXw7LNwxx2Z48Xgu6JHjMgEcG4ojxjh9yfSEgWuSMLV1voWoOY+bs4MBg/2y+GH776+sRHWrs2EcDqQV66Ev//dr8u+2FrPnr4VnNsyTi9Dh+oc4+5OgSuScOkLF0jHlJT4AK2shOOP3319fb3vrs4O4nQw33MPbNjQfPvevXcP4ez7e+wRwpuSSClwRRKutjbZx2+jUlbmRz+PHZt//bZtmQDObSH/85+wZUvz7QcO9MGbHp2du1RUqIVc7BS4IglXU6MWbhT69vXXEj7ggPzr33mneQing/mVV+DRRzPH3tP69PGt7dGj8wfye9+rY8hxp8AVSTh1KcfToEFwyCF+yeUcvP02rF6df5k/HzZtav6c0lI/I1duEKcDeuRIjbKOmgJXJOEUuMXHzM/Ateee+QMZfJd1S4H8yCOwbl3zQV1mvhXcUpf1qFH6PQmaAlck4WprYdiwqKuQQuvb109rOX58/vX19bBmTf5AnjcP5syBhobmzxk8uHkApweNpReNtO4aBa5IwukYbvdUVpaZSSufxkZ/LeN8gbxsGTz4IGzf3vw55eW+azo3iNPLyJGaras1ClyRhFOXsuRTUgJ77eWXo4/efX16YpDXXsssa9Zkfn744d27rcGPpk6H70UXwamnhvN+ioECVyThFLjSGdkTg7R0HLmhwU8AkhvG6ek033473JrjToErkmC7dvnJ+xW4EoSePf0o6NGjo66kOOhCVSIJlj6XUxNfiESv4IFrZl80sxfMbGtqecbMTi/0fkSkbUm6NJ9IsQuihfs68C3gUKAa+Dtwt5kdFMC+RKQVClyR+Cj4MVzn3D05D11uZhcDRwEvFHp/ItIyBa5IfAQ6aMrMSoCPA/2Ap4Pcl4jsTsdwReIjkMA1swOBZ4BeQC1wpnNucQvbTgOmAVRWVgZRjki3VVPjb9XCFYleUKOUlwMTgSOA3wK3mtmEfBs652Y456qdc9VDhgwJqByR7kldyiLxEUgL1zlXD7ycurvAzA4DLgUuCGJ/IpKfAlckPsI6D7cHUB7SvkQkRYErEh8Fb+Ga2dXAX4E1QH/gXOAEQOfiioRMx3BF4iOILuVhwG2p2y34U4E+6Jx7MIB9iUgramuhVy9/cXIRiVYQ5+FOLfRrikjn6MIFIvGhuZRFEkyBKxIfClyRBKup0aQXInGhwBVJMLVwReJDgSuSYApckfhQ4IokmAJXJD4UuCIJVlurY7gicaHAFUmwmhq1cEXiQoErkmDqUhaJDwWuSEI1NMDOnQpckbhQ4Iok1LZt/laBKxIPClyRhEpfuECDpkTiQYErklC6NJ9IvChwRRJKgSsSLwpckYRS4IrEiwJXJKF0DFckXhS4IgmlFq5IvChwRRJKgSsSLwpckYRS4IrEiwJXJKHSgdu3b7R1iIinwBVJqJoa6N0bSkujrkREQIErkli6cIFIvChwRRJKgSsSLwUPXDP7HzN71sy2mtlGM7vPzCYUej8i0joFrki8BNHCPQG4Hngf8H5gF/CIme0ZwL5EpAU1NZr0QiROCj6cwjl3SvZ9M/sUsAU4Griv0PsTkfxqa2HgwKirEJG0MI7h9k/t5+0Q9iUiKepSFomXMAL3l8BC4Jl8K81smpnNN7P5GzduDKEcke5BgSsSL4EGrpn9HDgGmOKca8y3jXNuhnOu2jlXPWTIkCDLEelWamoUuCJxEtgp8Wb2C+Ac4ETn3KtB7UdE8qut1aApkTgJJHDN7JfA2fiwXRbEPkSkZQ0NUF+vaR1F4qTggWtmvwE+BXwUeNvMhqVW1Trnagu9PxHZXXoeZbVwReIjiGO4X8CPTH4UWJ+1fD2AfYlIHrpSkEj8BHEerhX6NUWkYxS4IvGjuZRFEkiBKxI/ClyRBFLgisSPAlckgRS4IvGjwBVJIAWuSPwocEUSSIErEj8KXJEEUuCKxI8CVySBFLgi8aPAFUmg2lro1QtKA5stXUQ6SoErkkC6NJ9I/ChwRRJIgSsSPwpckQRS4IrEjwJXJIEUuCLxo8AVSaCaGgWuSNwocEUSSC1ckfhR4IokkAJXJH4UuCIJpMAViR8FrkgCKXBF4keBK5IwjY1QV6fAFYkbBa5Iwmzb5m8VuCLxosAVSRhduEAknhS4IgmjwBWJp0AC18yOM7N7zWytmTkzmxrEfkRkdwpckXgKqoXbD1gCfAWoC2gfIpKHAlckngK5WqZz7n7gfgAzuyWIfYhIfgpckXjSMVyRhFHgisRT5IFrZtPMbL6Zzd+4cWPU5YgUPQWuSDxFHrjOuRnOuWrnXPWQIUOiLkek6ClwReIp8sAVkcJS4IrEkwJXJGFqa6G0FMrKoq5ERLIFMkrZzPoBY1N3ewCVZjYR2Oycey2IfYqIl75wgVnUlYhItqBauNXA86mlN3BF6ucrA9qfiKToSkEi8RTUebj/APT3tUgEFLgi8aRjuCIJo8AViScFrkjC1NZC//5RVyEiuRS4IgmjFq5IPClwRRJGgSsST4EMmorKihVw8snQq5dfevfO/NzW/c6sKy/XqRcSPwpckXhKVOCWl8Nxx0FdHezY4Ze6OqipaX4/++empq7vs73B3ZGQTwd6+jb35/SiwJdcClyReEpU4FZWwq23duw5DQ35w7it++3dtqYm/7q6OnCu6++5rCx/GLd2P4h15eXQQwcoIuecAlckrhIVuJ3Rs6dfwh7V6Rzs2tV6kO/cmbnN/bkj6zZvbv15XW3lp/Xs2b6gLi/P/KGQfdvSz22tb2vbnj27T09A+g85Ba5I/HT7wI2KWXRhn2vXrq6HenvXvfMO1Ndnlp07m9/W1/t6Ci0dwmEGfb6fe/ZsXkv6fmlpYf4o0IULROJLgSuUlvqlb9+oK/EaG31Xf0uB3NbPXdm2pgbeeqv1bRsagnnf2QGcG8jtud+zp68RFLgicaTAldgpKfFLr15RV5Kfc2230nN/3rkz80dE+ja9dOZ+bW3+9Q0NMHw4HHhg1J+SiORS4Ip0kFnmWLSISHtpXKmIiEgIFLgiIiIhUOCKiIiEQIErIiISAnOFmO6oQMxsI7C6AC9VAWwqwOuERfUGr9hqLrZ6ofhqVr3BK0TNo5xzQwpRTNRiFbiFYmbznXPVUdfRXqo3eMVWc7HVC8VXs+oNXjHWHCR1KYuIiIRAgSsiIhKCpAbujKgL6CDVG7xiq7nY6oXiq1n1Bq8Yaw5MIo/hioiIxE1SW7giIiKxosAVEREJQawD18zea2a3mtlGM9thZkvN7Pg2nnOgmT1uZnVmttbMvmvW/EqjZjYl9Vo7U7dnRlGvmZ1gZveY2Xoz225mL5jZ+Xm2cXmWqohqHt1CPafmbHe8mS1IvearZnZRRPV+v4V6nZkN7ch76mS9q1p47b+28pxKM7vPzLaZ2SYzu87MynK2Cerz7VC9Znawmc0yszWp/3PLzeybZtYja5u4fb75tr8oZ5s2v0fCqtnMprbyO3xYR95XJ+stMbMfmNnK1O/bSjP7oZm1evGb9nyGFtB3cWw552K5AIOAV4HfA4cDY4APAPu38pwBwBvA7cAE4GNADfC1rG2OAnYBlwP7p253AUdEUO9lwA+Bo4G9gYtTtZybtc0JgAPGA8OylpKIPuPRqXpOyamnLGubMcA24Fepz/hCoAGYEkG9/XLqHAb8A3isI++pCzUPyXnNQ4Am4DMtbF8CLE7VeCgwGVgH/Croz7eT9Z4PXJf6Pd0bOAf/f+6yOH6+qec44HM5z+udtb7N75GQP+PeeX6H/wC8QmocTnveVxfqvQzYDHwo9W/5YeBt4H9beU5k38VxXiIvoJV/sB8B/+zgcy4Gtub85/kOsJbMALG/AA/nPO8RYFbY9bbwOrcDc7Lun5D6j1QRk884/eVZ3co2PwZW5Dz2O+CZqD9jYCTQSPM/atp8TwX8zC8H3mnpixD4YOrLd2TWY+cBO4ABQX6+nam3hef8BFgQx883tY0DPtbK+ja/R6L8jIE+qe0vy3m81ffVhfrmArfmPHYrMLcrn2FQ38VxXuLcpfxR4N9m9hcz22BmC83sS2106xwFPOmcq8t67EFgOP4/fXqbh3Ke9yDwvgjqzWcA/q/HXPPNdz0/amYndrHWtI/S+ZrvTD3nn2b2sZx1LX3G1WbWM6J60y7Af75z8qxr7T11WarOC4Dbcn5Hsx0FvOicW5P12INAOTApa5sgPt/O1JtPS7/Dcfh8035pvrv+WTO7KLsLnPZ9j0RRc9ongL7AzXnWtfa+Ousp4ERLHcYys/HA+4H7W3lOlN/FsRXnwN0b+AK+C/EU4JfA1cAXW3nOMODNnMfezFrX2jbD6JrO1NuMmZ2B7yLNPndtPf6vxSnAWcBy4FEzO7aL9Xa25lrg6/j/9KcBjwJ/MbPzsrZp6TMuxc+tGma97zKzEnwX6B+cczuzVrXnPRXCZHx38I2tbJPvs9uEb5W39Tvc1c83V3vqbcbMDgWmAr/NejhOny/Ad4GzgZOAPwM/w3ebprXne6RQOvwZA9Pwrcs3ch5v63111o/xXdhLzawB+A++xXt9K8+J8rs4vqJuYrfSJVEPPJ3z2I/wf/239JyHgJtzHqvEd7UclfW6n87Z5tPAzrDrzdn2aHwXzMXt2PZ+4N4oPuMWXud64IWs+y8B383Z5rjUv8N7I/yMT0/VML6j76kQCzAbmNfGNjOAv+c8ZvhjW58M8vPtTL0524/D/4F4dVw/3xae901gS9b9Nr9HIvyMD0jVcVpH31cXajwHWJO6PRD4FP6Y7gWtPCey7+I4L3Fu4a4HluY89iL+H60lbwDvyXnsPVnrWtsm96/FjupMvQCY2THAA/gv0d+2tT3wb2DfDle4u07X3EY9LX3Gu+jalUO6Wu80fGDnvkY+hfqMATA/IvojtN2SyffZVeAHU7X1O9zVz/ddHag3vX0VfqDXn51z327HU6L6fFuqZYCZZX9XtPU90mWdrHkaPvz+1o5tc99XZ10D/NQ592fn3GLn3B+AnwP/08pzovwujq04B+4/8X8xZ9uP1i/f9wxwrJn1ynosPcpzVdY2k3OeNxl4utOVep2pFzM7Dh+233fOXdvOfU3Eh09XdarmdtTT0mc83znX0MHXztbpes1sOL6F294vt4kU5jNOmwrsBGa1sd0zwP5mtlfWY5NTz12QtU0Qn2+2qbSv3vQxvX8As51zl7bz9ScSzefbUi078AORoH3fI4UwlQ7UnKrnU/iWY1M7njKR5u+rs/rgD2lka6T1/Ijyuzi+om5it9IlcRj+VIfLgbHAx4EtwBeztrkKeDTr/kD8X0d/xg9FPwvfTZs9FP19+JbAt4Eq/F9pDXT9tKDO1HsC/vSOa2g+lH9I1jb/jR8stC++O+kqfLfMWRF9xp8BzsUP4x+HPzZXD1yatU36tJVrU9t9LrVNV08L6nC9WY9/J7Vtnzzr2nxPXazb8N3AN+ZZ9yVgWdb99GlBf8efLnISfmRnvtOCCvr5drLeA/DH3f6c8zs8LKaf74fwp1FNAPZJfXZbgF9mbdPm90iYNWc9fh4+6CrzrGvzfXWh1luA1/F/sI4GzgQ2Aj/L2iY238VxXiIvoI1/6NOBRfi/0l4Cvkzz885uAVblPOdA4InUc9YD3yNnKD/+nLBlqf/0L1KA8OpMvan7Ls+Svc03gRVAHf64yZO04/hNgDV/Bt+tuy31H2g+cF6e1z0eeA7/F/xK4KIIfycsVcP1Lbxmu95TF2o+MfXveniedd8HXM5jlfhTMbYDb+HPcy0P4/PtaL3p+/mWOH6+wKnA8/hzQrfh/7j5ClCa87w2v0fC/J1IPf44cH8Lr9eu99XJWvvj/7hbjf8eehU/dqJX1jb5/t9F9l0c10UXLxAREQlBnI/hioiIJIYCV0REJAQKXBERkRAocEVEREKgwBUREQmBAldERCQEClwREZEQKHBFQmZmj5nZp7PuuyAuV5ezz6FmtjFnykgRCZECV6QTzOyWVFDmLv9q43mnAyOBPxaojnvN7NEW1u2fqulk59wG4PfAFYXYr4h0nAJXpPMeAd6bs5zWxnO+AtzinMudDL6zbsJfHHx0nnUX4KfjeyR1fybwX2a2Z4H2LSIdoMAV6bydzrk3cpbNLW1sZkPwFyO4r7UXNbNvmdkmMzsydf99Zva4mW03s7Vm9lszG5Da/K/4iwd8Nuc1epJzZRnn3BL81VrO6uT7FZEuUOCKhOcY/MUGluRbad5PgUuA451z/zKzA/EX874XOBgflhOBmwGcc7uAW4GpZpb9//lD+OvozszZzTz8hQ9EJGQKXJHOO9XManOWH7ey/ShgQwvdySX4EP0wcLRz7j+px78B/MU59zPn3Arn3L+Bi4EpqQuYg+9WrsS3ntMuAB5yzq3J2c86/CXWRCRkpVEXIFLEngCm5Tz2Tivb98Zfqiyfn+KvDXpEaoBT2iRgrJmdnfWYpW73wQf4CjN7HDgfeMjMhgOnAOfk2U9dqg4RCZkCV6TztjvnXu7A9puAPVpY9zDwSfygq1uyHu8B/A74RZ7nrM36+SbgxtSAqKn4ayffk+c5e+IvHi4iIVPgioTneWCImVU45zblrLsfuBOYbWbOOXdr6vHngAPaEex3AL8CzsO3dH/vnGvIs90EfMtcREKmY7ginVduZsNyliGtbP88sAE/eGo3zrm5wMeBG7ImxvgxcLiZ3WBmh5jZWDM7w8ym5zy3DvgT8H18V/NNua9vZn3wXdR/69jbFJFCUOCKdN5JwPqc5fmWNk4NlroZ+K9WtpkLfAKYbmafds69AByHH+j0OLAIuAp/KlCu3+G7rJ92zr2YZ/1HgNecc0+2+c5EpODMORd1DSLdRmpk8VLgMOfcypD3PQ+41jn3pzD3KyKeWrgiIUqNQD4ffxpPaFJBfwcwK8z9ikiGWrgiIiIhUAtXREQkBApcERGREChwRUREQqDAFRERCYECV0REJAQKXBERkRD8P050tHhgJrwrAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "e = np.linspace(6000, 8000, 1000)\n", "\n", "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(7, 5), sharex=True)\n", "\n", "ax1.plot(e/1000, np.real(pyddt.aresE('Fe', e)), 'r-', label=\"f'\")\n", "ax2.plot(e/1000, np.imag(pyddt.aresE('Fe', e)), 'b-', label=\"f''\")\n", "\n", "plt.xlabel(r'E (keV)')\n", "fig.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "bfed4e39", "metadata": {}, "source": [ "### 2.3 Structure factor" ] }, { "cell_type": "markdown", "id": "82e54a4d", "metadata": {}, "source": [ "To exemplify the structure factor calculation, let us consider the sodium chloride crystal. You can download its CIF on [Materials Project mp-22862](https://materialsproject.org/materials/mp-22862/). " ] }, { "cell_type": "markdown", "id": "27eec2e7", "metadata": {}, "source": [ "`NaCl.cif`\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "id": "9cfd8477", "metadata": {}, "source": [ "#### 2.3.1 Converting CIF into .in file " ] }, { "cell_type": "markdown", "id": "7bc4b41e", "metadata": {}, "source": [ "The `Crystal`class requires an *.in* file, so we will convert the CIF into the expected format using the `pyddt.to_in()` function." ] }, { "cell_type": "code", "execution_count": 10, "id": "bf53b6f7", "metadata": {}, "outputs": [], "source": [ "pyddt.to_in('NaCl.cif')" ] }, { "cell_type": "markdown", "id": "491d836c", "metadata": {}, "source": [ "In the current folder, two new files are available: `NaCl.in` and `NaCl.struc`. Take a look at them.\n", "\n", "The *.in* file presents the atom or ion symbol followed by its fractional coordinates ($x$, $y$ and $z$), occupancy number and B-factor. The first line shows the lattice parameters ($a$, $b$, $c$, $\\alpha$, $\\beta$ and $\\gamma$). Meanwhile, the *.struc* file presents some structural and electronic properties which might be useful for structural modelling." ] }, { "cell_type": "markdown", "id": "f653f819", "metadata": {}, "source": [ "#### 2.3.2 Crystal object" ] }, { "cell_type": "markdown", "id": "7b87303b", "metadata": {}, "source": [ "The next step is generating a `crystal` object." ] }, { "cell_type": "code", "execution_count": 11, "id": "5f8c1e96", "metadata": {}, "outputs": [], "source": [ "nacl = pyddt.Crystal('NaCl.in')" ] }, { "cell_type": "markdown", "id": "199f8589", "metadata": {}, "source": [ "Once this object was created, we can check its lattice and structure. " ] }, { "cell_type": "code", "execution_count": 12, "id": "58b6bf4f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 5.6917, 5.6917, 5.6917, 90. , 90. , 90. ])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nacl.structure.lattice" ] }, { "cell_type": "code", "execution_count": 13, "id": "bdd83391", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['Na', 'Na', 'Na', 'Na', 'Cl', 'Cl', 'Cl', 'Cl'], dtype='" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "E = np.arange(3000, 12500, 500) # eV\n", "\n", "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(7, 5), sharex=True)\n", "\n", "ax1.plot(E, np.angle(nacl.Fhkl(E, [1, 1, 1]))*180/np.pi)\n", "ax2.plot(E, np.absolute(nacl.Fhkl(E, [1, 1, 1]))*180/np.pi)\n", "\n", "plt.xlabel('Energy (eV)')\n", "\n", "ax1.set_ylabel('Phase (deg)')\n", "ax2.set_ylabel('Absolute value')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "id": "1f03dbbf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "phase = -168.935091990334219 90.000000000000003504 degrees\n" ] } ], "source": [ "F = nacl.Fhkl(8048, [[1, 1, 3], [0, 0, 1]])\n", "print('phase = ', *np.angle(F)*180/np.pi, 'degrees')" ] }, { "cell_type": "markdown", "id": "ce44bfe4", "metadata": {}, "source": [ "#### 2.3.3 Structure factor list " ] }, { "cell_type": "markdown", "id": "b8852903", "metadata": {}, "source": [ "By the end, let us calculate the structure factor of all reflections. " ] }, { "cell_type": "code", "execution_count": 19, "id": "9127d45c", "metadata": {}, "outputs": [], "source": [ "hkl, f, d = nacl.diffraction(8048) # Miller indices, structure factors and interplanar distance" ] }, { "cell_type": "code", "execution_count": 20, "id": "a3db9a90", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 0., -2.],\n", " [ 0., -2., 0.],\n", " [-2., 0., 0.],\n", " ...,\n", " [-5., 0., -1.],\n", " [ 1., -1., 0.],\n", " [ 0., -5., -3.]])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hkl" ] }, { "cell_type": "code", "execution_count": 21, "id": "061e8e5a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2.84585 , 2.84585 , 2.84585 , ..., 1.11623421, 4.02463967,\n", " 0.9761185 ])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d # angstrom" ] }, { "cell_type": "markdown", "id": "79c2e3b0", "metadata": {}, "source": [ "----" ] }, { "cell_type": "markdown", "id": "9251780e", "metadata": {}, "source": [ "In the next tutorial, we will generate structural models by using the `Structure` class and use them as `Crystal` objects for planning X-ray dynamical diffraction experiments. " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "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.10.7" } }, "nbformat": 4, "nbformat_minor": 5 }