{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Special aspects\n", "\n", "In this section we will discuss a number of issues and questions relating to core spectroscopies, ranging from the physical effect of a core-transition, to technical aspects relating to lowering computational costs. They are ordered by approximate relevance, with some topics being pertient only for certain cases.\n", "\n", "\n", "(sec:xray_topics_relax)=\n", "## Relaxation\n", "\n", "Core spectroscopies exhibit strong relaxation effects, originating in the significant change in shielding of the nuclear charge arising from the creation/annihilation of a core-hole. These effects need to be properly accounted for in order to get good absolute energies, as the lack of this will mean that, *e.g.* an unrelaxed core-hole system is too high in energy. This explains the previously [observed](sec:xray_calc_iekoop) large error obtained using Koopmans' theorem.\n", "\n", "### Relaxation of core-ionized systems\n", "\n", "Below we see the effects of relaxation for creating a core-hole in the oxygen/carbon 1s of formaldehyde, illustrated by plotting the total electron density:\n", "\n", "```{figure} ../../img/xray/relax_form.png\n", "---\n", "name: relax_form\n", "---\n", "```\n", "\n", "We see that there is a noticable attraction of electron density toward the core-holes, as marked with a **+**. These effects can be modeled with the $Z+1$ approximation, within which the change in screening is modeled by substituting the ionized atom with the next element in the periodic table. This can be illustrated with the following radial distribution plots (using cc-pcvdz basis sets, in order to increase flexibility in the core region):" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove-output" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* Warning * Environment variable OMP_NUM_THREADS not set.\n", "* Warning * Setting OMP_NUM_THREADS to 4.\n" ] } ], "source": [ "import copy\n", "import adcc\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import veloxchem as vlx\n", "\n", "au2ev = 27.211386" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "hide-input" ] }, "outputs": [], "source": [ "def lorentzian(x, y, xmin, xmax, xstep, gamma):\n", " \"\"\"\n", " Lorentzian broadening function\n", "\n", " Call: xi,yi = lorentzian(energies, intensities, start energy,\n", " end energy, energy step, gamma)\n", " \"\"\"\n", " xi = np.arange(xmin, xmax, xstep)\n", " yi = np.zeros(len(xi))\n", " for i in range(len(xi)):\n", " for k in range(len(x)):\n", " yi[i] = (\n", " yi[i]\n", " + y[k] * gamma / ((xi[i] - x[k]) ** 2 + (gamma / 2.0) ** 2) / np.pi\n", " )\n", " return xi, yi" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true, "tags": [ "remove-output" ] }, "outputs": [], "source": [ "water_xyz = \"\"\"3\n", "\n", "O 0.0000000000 0.0000000000 0.1178336003\n", "H -0.7595754146 -0.0000000000 -0.4713344012\n", "H 0.7595754146 0.0000000000 -0.4713344012\n", "\"\"\"\n", "\n", "water_fluorine_xyz = \"\"\"3\n", "\n", "F 0.0000000000 0.0000000000 0.1178336003\n", "H -0.7595754146 -0.0000000000 -0.4713344012\n", "H 0.7595754146 0.0000000000 -0.4713344012\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n",
" jupyter labextension install jupyterlab_3dmol