{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# DFT + GWBSE Energy Calculation Using CH4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial explains how to perform calculation to predict electronic excitation using the **GWBSE** method. See [the GW Compendium: A Practical Guide to Theoretical Photoemission Spectroscopy](https://doi.org/10.3389/fchem.2019.00377), for an excellent introduction to the method." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Requirements\n", "* You will need to install **VOTCA** using the instructions described [here](https://github.com/votca/votca/blob/master/share/sphinx/INSTALL.rst)\n", "* Once the installation is completed you need to activate the VOTCA enviroment by running the `VOTCARC.bash` script that has been installed at the bin subfolder for the path that you have provided for the installation step above" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interacting with the XTP command line interface\n", "To run a DFT-GWBSE calculation we will use the [xtp_tools](https://www.votca.org/xtp/xtp_tools_overview.html) calculator. Run the following command to view the help message of `xtp_tools`:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:06.557730Z", "iopub.status.busy": "2024-04-26T05:12:06.557282Z", "iopub.status.idle": "2024-04-26T05:12:06.685433Z", "shell.execute_reply": "2024-04-26T05:12:06.684843Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "==================================================\r\n", "======== VOTCA (http://www.votca.org) ========\r\n", "==================================================\r\n", "\r\n", "please submit bugs to https://github.com/votca/votca/issues\r\n", "\r\n", "xtp_tools, version 2024-dev gitid: 22f1997 (compiled Apr 26 2024, 05:10:04)\r\n", "\r\n", "Runs excitation/charge transport tools\r\n", "\r\n", "\r\n", "\r\n", "Allowed options:\r\n", " -h [ --help ] display this help and exit\r\n", " --verbose be loud and noisy\r\n", " --verbose1 be very loud and noisy\r\n", " -v [ --verbose2 ] be extremly loud and noisy\r\n", " -o [ --options ] arg Tool user options.\r\n", " -t [ --nthreads ] arg (=1) number of threads to create\r\n", " -e [ --execute ] arg Name of Tool to run\r\n", " -l [ --list ] Lists all available Tools\r\n", " -d [ --description ] arg Short description of a Tools\r\n", " -c [ --cmdoptions ] arg Modify options via command line by e.g. '-c \r\n", " xmltag.subtag=value'. Use whitespace to separate \r\n", " multiple options\r\n", " -p [ --printoptions ] arg Prints xml options of a Tool\r\n", "\r\n" ] } ], "source": [ "!xtp_tools --help" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Note\n", "> * In Jupyter the `!` symbol means: *run the following command as a standard unix command*\n", "> * In Jupyter the command `%env` set an environmental variable" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Running a calculation with the default options\n", "To run a DFT-GWBSE calculation we just need to provide the path to the file in XYZ with the molecular coordinates. Check the [dftgwbse defaults](https://www.votca.org/xtp/dftgwbse.html) for further information." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:06.688625Z", "iopub.status.busy": "2024-04-26T05:12:06.688429Z", "iopub.status.idle": "2024-04-26T05:12:12.085790Z", "shell.execute_reply": "2024-04-26T05:12:12.085159Z" } }, "outputs": [], "source": [ "!xtp_tools -c job_name=methane -t 2 -e dftgwbse > dftgwbse.log" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The previous command will run the DFT-GWBSE calculation using the aforementioned defaults and the results are store in the *Current Work Directory* in a file named `methane_summary.xml`. The `-c` option is important and we will come back to it later. It allows changing options form the command line." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Running a calculation using your own input file\n", "Let create a folder to store the input `options` for XTP and use the `-p` option to print an option file, specified by `-o`, with all the options so we can modify it afterwards" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:12.089443Z", "iopub.status.busy": "2024-04-26T05:12:12.089021Z", "iopub.status.idle": "2024-04-26T05:12:12.325599Z", "shell.execute_reply": "2024-04-26T05:12:12.324981Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Writing options for calculator dftgwbse to OPTIONFILES/dftgwbse.xml\r\n", "Done - stopping here\r\n" ] } ], "source": [ "!mkdir -p OPTIONFILES\n", "!xtp_tools -p dftgwbse -o OPTIONFILES/dftgwbse.xml" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You should have a *XML* file with the DFTWGSE options that looks like" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:12.329051Z", "iopub.status.busy": "2024-04-26T05:12:12.328630Z", "iopub.status.idle": "2024-04-26T05:12:12.440281Z", "shell.execute_reply": "2024-04-26T05:12:12.439712Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\r\n", "\r\n", "\tsystem\r\n", "\t\r\n", "\t\txtp\r\n", "\t\t0\r\n", "\t\t1\r\n", "\t\tdef2-tzvp\r\n", "\t\t\r\n", "\t\t\r\n" ] } ], "source": [ "!head -n 10 OPTIONFILES/dftgwbse.xml" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some options are labelled as `OPTIONAL`, either fill them in or delete them if you do not want that functionality" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We created a small options file" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:12.443629Z", "iopub.status.busy": "2024-04-26T05:12:12.443406Z", "iopub.status.idle": "2024-04-26T05:12:12.554986Z", "shell.execute_reply": "2024-04-26T05:12:12.554325Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\r\n", " \r\n", " methane\r\n", " \r\n", " ubecppol\r\n", " aux-ubecppol\r\n", " \r\n", " \r\n", "\r\n" ] } ], "source": [ "!cat dftgwbse2.xml" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:12.558155Z", "iopub.status.busy": "2024-04-26T05:12:12.557931Z", "iopub.status.idle": "2024-04-26T05:12:17.136485Z", "shell.execute_reply": "2024-04-26T05:12:17.135888Z" } }, "outputs": [], "source": [ "!xtp_tools -o dftgwbse2.xml -t 2 -e dftgwbse > dftgwbse2.log" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "XTP will automatically compare the default values with the user-provided and overwrites the defaults with the user input. Also, If I given property does not have a default value you can provide one using the XML file described above." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Partial Charges\n", "We can compute now the partial charges using the `CHELPG` method by default. For more information see the [partialcharges documentation](https://www.votca.org/xtp/partialcharges.html). Once again, we only need to provide the name of the system to compute, which in our case is `methane`." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:17.139753Z", "iopub.status.busy": "2024-04-26T05:12:17.139562Z", "iopub.status.idle": "2024-04-26T05:12:19.722034Z", "shell.execute_reply": "2024-04-26T05:12:19.721415Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "==================================================\r\n", "======== VOTCA (http://www.votca.org) ========\r\n", "==================================================\r\n", "\r\n", "please submit bugs to https://github.com/votca/votca/issues\r\n", "\r\n", "xtp_tools, version 2024-dev gitid: 22f1997 (compiled Apr 26 2024, 05:10:04)\r\n", "\r\n", "Initializing tool\r\n", "... partialcharges Evaluating tool\r\n", "... partialcharges Using 1 threads\r\n", "... ... Loading QM data from methane.orb\r\n", "... ... ===== Running on 1 threads ===== \r\n", "... ... 2024-4-26 5:12:17 Calculated Densities at Numerical Grid, Number of electrons is -2.37461e-08\r\n", "... ... 2024-4-26 5:12:17 Calculating ESP at CHELPG grid points\r\n", "... ... 2024-4-26 5:12:19 Netcharge constrained to 0\r\n", "... ... Sum of fitted charges: 2.42341e-14\r\n", "... ... RMSE of fit: 0.00221585\r\n", "... ... RRMSE of fit: 0.107179\r\n", "... ... El Dipole from fitted charges [e*bohr]:\r\n", "\t\t dx = +0.7278 dy = -0.4713 dz = +0.4706 |d|^2 = +0.9733\r\n", "... ... El Dipole from exact qm density [e*bohr]:\r\n", "\t\t dx = +0.7620 dy = -0.4941 dz = +0.4932 |d|^2 = +1.0681\r\n", "... ... Written charges to methane.mps" ] } ], "source": [ "!xtp_tools -c job_name=methane -e partialcharges" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Spectrum Calculation\n", "Finally, lets compute a convolution of the singlet spectrum using a gaussian function. For doing so, we will modify the default values for the [spectrum calculator](https://www.votca.org/xtp/spectrum.html) to compute the spectrum between 9 and 25 eV, using 1000 points in that energy range. We will use the `-c` option to modify the options accordingly. Instead we could have printed out an options file using the `xtp_tools -p spectrum` command and then modify the entries accordingly and then read them in using the `-o` option." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:19.725322Z", "iopub.status.busy": "2024-04-26T05:12:19.724905Z", "iopub.status.idle": "2024-04-26T05:12:19.861521Z", "shell.execute_reply": "2024-04-26T05:12:19.860904Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "==================================================\r\n", "======== VOTCA (http://www.votca.org) ========\r\n", "==================================================\r\n", "\r\n", "please submit bugs to https://github.com/votca/votca/issues\r\n", "\r\n", "xtp_tools, version 2024-dev gitid: 22f1997 (compiled Apr 26 2024, 05:10:04)\r\n", "\r\n", "Initializing tool\r\n", "... spectrum Evaluating tool\r\n", "... spectrum Using 1 threads\r\n", "... ... Calculating absorption spectrum plot methane.orb\r\n", "... ... Loading QM data from methane.orb\r\n", "... ... Considering 10 excitation with max energy 14.6581 eV / min wave length 84.7405 nm\r\n", "... ... Spectrum in energy range from 9 to 25 eV and with broadening of FWHM 0.2 eV written to file methane_spectrum.dat" ] } ], "source": [ "!xtp_tools -c job_name=methane lower=9 upper=25 points=1000 -e spectrum" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results are stored in the `methane_spectrum.dat` file." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## (Optional) Plot the spectrum" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will use [matplotlib](https://matplotlib.org/), [seaborn](https://seaborn.pydata.org/) and [pandas](https://pandas.pydata.org/) libraries to plot the spectrum. You can install it using [pip](https://pip.pypa.io/en/stable/) like" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:19.864939Z", "iopub.status.busy": "2024-04-26T05:12:19.864554Z", "iopub.status.idle": "2024-04-26T05:12:21.481653Z", "shell.execute_reply": "2024-04-26T05:12:21.481099Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: seaborn in /usr/lib/python3.12/site-packages (0.13.0)\r\n", "Requirement already satisfied: numpy!=1.24.0,>=1.20 in /usr/lib64/python3.12/site-packages (from seaborn) (1.24.4)\r\n", "Requirement already satisfied: pandas>=1.2 in /usr/lib64/python3.12/site-packages (from seaborn) (1.5.3)\r\n", "Requirement already satisfied: matplotlib!=3.6.1,>=3.3 in /usr/lib64/python3.12/site-packages (from seaborn) (3.8.4)\r\n", "Requirement already satisfied: contourpy>=1.0.1 in /usr/lib64/python3.12/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (1.2.0)\r\n", "Requirement already satisfied: cycler>=0.10 in /usr/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (0.11.0)\r\n", "Requirement already satisfied: fonttools>=4.22.0 in /usr/lib64/python3.12/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (4.43.1)\r\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/lib64/python3.12/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (1.4.5)\r\n", "Requirement already satisfied: packaging>=20.0 in /usr/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (23.1)\r\n", "Requirement already satisfied: pillow>=8 in /usr/lib64/python3.12/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (10.3.0)\r\n", "Requirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (3.0.9)\r\n", "Requirement already satisfied: python-dateutil>=2.7 in /usr/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (2.8.2)\r\n", "Requirement already satisfied: pytz>=2020.1 in /usr/lib/python3.12/site-packages (from pandas>=1.2->seaborn) (2024.1)\r\n", "Requirement already satisfied: six>=1.5 in /usr/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.3->seaborn) (1.16.0)\r\n" ] } ], "source": [ "!pip install seaborn --user" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2024-04-26T05:12:21.484852Z", "iopub.status.busy": "2024-04-26T05:12:21.484454Z", "iopub.status.idle": "2024-04-26T05:12:22.637832Z", "shell.execute_reply": "2024-04-26T05:12:22.637158Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "<>:5: SyntaxWarning: invalid escape sequence '\\s'\n", "<>:5: SyntaxWarning: invalid escape sequence '\\s'\n", "/tmp/ipykernel_15118/3151737206.py:5: SyntaxWarning: invalid escape sequence '\\s'\n", " df = pd.read_table(\"methane_spectrum.dat\", comment=\"#\", sep='\\s+',names=columns)\n", "/usr/lib/python3.12/site-packages/seaborn/axisgrid.py:854: FutureWarning: \n", "\n", "The `ci` parameter is deprecated. Use `errorbar=None` for the same effect.\n", "\n", " func(*plot_args, **plot_kwargs)\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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dtttmj9/vrZv367t27dr/vz5mjRpkh577DGVlZUFH8CR5MSc9V37J13fAEyTVNf3D37wA0nS2LFjg12K7i/IUaNGBY89Ho/8fn8q2gnExa2YI3q+Q7q+CWoAZkkqqN95551UtwNICXeMusESosFNOY54kwCgWZIK6mHDhmnFihV65plntHnzZs2fP1/HHXecnn/+efXq1UtDhgxJdTuBuLizvhtsc+lhm0sAZkpqjPrll1/WpZdeqtatW+sf//iHKisrJUkHDhzQ1KlTU9pAIBEx1/qu+0lnMhkA0yQV1L/85S/19NNP69lnn1WrVq2C58877zytWbMmZY0DEhVzCVE25QBgqKSCesOGDRo6dGiD83l5efr222+b2yYgaYHgEqLh590lRMlpAKZJKqi7d++uzz//vMH5d999V7179252o4BkNbV7Fl3fAEyTVFD/7Gc/0+23364PPvhAHo9HO3bs0J///Gfddddduvnmm1PdRiBugVizvr3cngXATEnN+r7nnntUWlqqCy+8UIcPH9bQoUPl8/l01113aeLEialuIxA39/arhhV17Z9scwnANElV1JL0yCOPaO/evfrwww+1cuVKff3113r44YcTeo9p06Zp0KBBat++vbp27arLL79cGzZsSLZJQLBibjBGzWQyAIZKOqglqU2bNho4cKC+853vqF27dgl//bJly3TLLbdo5cqVWrJkiWpqajR8+HAdPHiwOc3CUSzWrG8vm3IAMFRSXd+psnjx4rDjOXPmqGvXrvroo4+iziqvrKwM3rMtibXE0UBwMlmsMWqSGoBhmlVRp1ppaakkqVOnTlGfnzZtmvLz84OPwsLCI9k8GCD27ll1z9P1DcAwGRPUjuOouLhYQ4YMUf/+/aO+ZvLkySotLQ0+SkpKjnArkencHI6c9R3clIOKGoBh0tr1HWrixIn65JNP9O6778Z8jc/nk8/nO4KtgmncitkTY1MOchqAaTIiqG+99VYtXLhQy5cvV48ePdLdHBisvus7/LyXbS4BGCqtQe04jm699Va9+uqrWrp0qXr16pXO5sACMWd9sykHAEOlNahvueUWvfDCC3rttdfUvn177dq1S5KUn5+v1q1bp7NpMFSTs76pqAEYJq2TyWbPnq3S0lJdcMEF6t69e/Axb968dDYLBnMLZu6jBmCLtHd9A6kUiFFRsykHAFNl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3HHHHVq8eLH+9Kc/af369brjjjt066236rXXXjvCLY1t2bJluuWWW7Ry5UotWbJENTU1Gj58uA4ePBh8TaZ/rpu6BhM+1/H8Pbgy+XOdMActSpLz6quvBo8DgYDTrVs359FHHw2eO3z4sJOfn+88/fTTaWhh0yKvIZoPP/zQkeR8+eWXR6ZRCYp1Ddu3b3eOO+4459NPP3WKioqcGTNmHPG2xSvaNVx11VXO9ddfn54GJSHaNZx66qnOQw89FHZuwIABzn/9138dwZYlZs+ePY4kZ9myZY7jmPm5jryGaDL9cx3rGkz6XMeDivoI27Jli3bt2qXhw4cHz/l8Pg0bNkzvv/9+GlvWPKWlpfJ4POrQoUO6mxK3QCCgcePG6e6779app56a7uYkLBAI6H//93910kkn6dJLL1XXrl11zjnnNNrFn4mGDBmihQsX6quvvpLjOHrnnXe0ceNGXXrppeluWkylpaWSpE6dOkky83MdeQ2xXpPJn+to12D65zoagvoI27VrlyTp2GOPDTt/7LHHBp8zzeHDh3Xvvffq2muvNWox/Mcee0zZ2dm67bbb0t2UpOzZs0fl5eV69NFHNWLECP3f//2ffvSjH+mKK67QsmXL0t28uD355JPq16+fevTooZycHI0YMUKzZs3SkCFD0t20qBzHUXFxsYYMGaL+/ftLMu9zHe0aImX65zrWNZj+uY7G6N2zTBa5rZnjOEZs1RmpurpaV199tQKBgGbNmpXu5sTto48+0hNPPKE1a9YY+f9dqq0cJOmHP/yh7rjjDknSmWeeqffff19PP/20hg0bls7mxe3JJ5/UypUrtXDhQhUVFWn58uW6+eab1b17d1188cXpbl4DEydO1CeffKJ33323wXOmfK4buwbJjM91tGuw4XMdDRX1EdatWzdJavCv7D179jT413imq66u1tixY7VlyxYtWbIkI//VHcuKFSu0Z88e9ezZU9nZ2crOztaXX36pO++8U8cff3y6mxeXLl26KDs7W/369Qs7f8opp2TUrO/GHDp0SPfdd5+mT5+uUaNG6fTTT9fEiRN11VVX6de//nW6m9fArbfeqoULF+qdd94J22LXpM91rGtwmfC5jnUNNnyuoyGoj7BevXqpW7duWrJkSfBcVVWVli1bpvPOOy+NLUuM+2HetGmT3nrrLXXu3DndTUrIuHHj9Mkn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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd \n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "columns = [\"E(eV)\", \"epsGaussian\",\"IM(eps)Gaussian\", \"epsLorentz\", \"Im(esp)Lorentz\"] \n", "df = pd.read_table(\"methane_spectrum.dat\", comment=\"#\", sep='\\s+',names=columns) \n", "sns.relplot(x=\"E(eV)\", y=\"epsGaussian\", ci=None, kind=\"line\", data=df) \n", "plt.plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.12.2" } }, "nbformat": 4, "nbformat_minor": 4 }