├── .github └── FUNDING.yml ├── .gitignore ├── LICENSE ├── README.md ├── adv └── linear_update.ipynb ├── img ├── psi.png └── sin.png ├── numpy_1ddft.ipynb ├── numpy_1ddft_jp.ipynb └── utils.py /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: tamuhey 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints/ 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Yohei Tamura 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DFT (Density Functional Theory) tutorial code in Python 2 | 3 | ![](./img/psi.png) 4 | 5 | - [Jupyter Notebook](./numpy_1ddft.ipynb) ([Japanese](./numpy_1ddft_jp.ipynb)) 6 | - [Run in browser](https://colab.research.google.com/github/tamuhey/python_1d_dft/blob/master/numpy_1ddft.ipynb) ([Japanese](https://colab.research.google.com/github/tamuhey/python_1d_dft/blob/master/numpy_1ddft_jp.ipynb)) 7 | - [Simplified Chinese](https://github.com/m3lab-zzl/python_1d_dft/) 8 | 9 | - Goal: write our own Kohn-Sham (KS) DFT code 10 | - Target: a harmonic oscillator including kinetic energy, electrostatic repulsion between the electrons, and the local density approximation for electronic interactions, ignoring correlation. 11 | 12 | ## Refs. 13 | 14 | - http://dcwww.camd.dtu.dk/~askhl/files/python-dft-exercises.pdf 15 | -------------------------------------------------------------------------------- /adv/linear_update.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Update density with Beta in self-consistent loop\n", 8 | "- reference: https://www.researchgate.net/publication/226474665_A_Tutorial_on_Density_Functional_Theory" 9 | ] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": 1, 14 | "metadata": {}, 15 | "outputs": [], 16 | "source": [ 17 | "import numpy as np\n", 18 | "import matplotlib.pyplot as plt\n", 19 | "import seaborn as sns\n", 20 | "from IPython.display import clear_output" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 2, 26 | "metadata": {}, 27 | "outputs": [], 28 | "source": [ 29 | "%run ../utils.py\n", 30 | "%matplotlib inline\n", 31 | "sns.set_style(\"white\")" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 3, 37 | "metadata": {}, 38 | "outputs": [], 39 | "source": [ 40 | "n_grid=200\n", 41 | "num_electron=13\n", 42 | "bound=[-5,5]\n", 43 | "x=np.linspace(*bound,n_grid)\n", 44 | "D, D2=get_d_d2(h=x[1]-x[0],n_grid=n_grid)" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 4, 50 | "metadata": {}, 51 | "outputs": [], 52 | "source": [ 53 | "eig_non, psi_non=np.linalg.eigh(-D2/2)" 54 | ] 55 | }, 56 | { 57 | "cell_type": "code", 58 | "execution_count": 5, 59 | "metadata": {}, 60 | "outputs": [], 61 | "source": [ 62 | "max_iter=1000\n", 63 | "energy_tolerance=1e-5\n", 64 | "log={\"energy\":[float(\"inf\")], \"energy_diff\":[float(\"inf\")]}" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 6, 70 | "metadata": {}, 71 | "outputs": [ 72 | { 73 | "data": { 74 | "image/png": "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\n", 75 | "text/plain": [ 76 | "
" 77 | ] 78 | }, 79 | "metadata": {}, 80 | "output_type": "display_data" 81 | } 82 | ], 83 | "source": [ 84 | "nx=np.full(n_grid, num_electron/float(bound[1]-bound[0]))\n", 85 | "eps=1e-5\n", 86 | "beta=0.1\n", 87 | "edf=[]\n", 88 | "plot_steps=10\n", 89 | "for i in range(max_iter):\n", 90 | " ex_energy, ex_potential=get_exchange(nx,x)\n", 91 | " ha_energy, ha_potential=get_hatree(nx,x, eps=eps)\n", 92 | " \n", 93 | " # Hamiltonian\n", 94 | " H=-D2/2+np.diagflat(ex_potential+ha_potential+x*x)\n", 95 | " \n", 96 | " energy, psi= np.linalg.eigh(H)\n", 97 | " \n", 98 | " # log\n", 99 | " log[\"energy\"].append(energy[0])\n", 100 | " energy_diff=energy[0]-log[\"energy\"][-2]\n", 101 | " log[\"energy_diff\"].append(energy_diff)\n", 102 | " \n", 103 | " # convergence\n", 104 | " if abs(energy_diff) < energy_tolerance:\n", 105 | " break\n", 106 | " \n", 107 | " # update density with beta\n", 108 | " nx=beta*get_nx(num_electron,psi,x) + (1-beta)*nx\n", 109 | " \n", 110 | " edf.append(energy_diff)\n", 111 | " if i % plot_steps == plot_steps-1:\n", 112 | " plt.plot(edf)\n", 113 | " plt.title(f\"step: {i:<5} diff: {edf[-1]:.4f}\")\n", 114 | " plt.pause(0.01)\n", 115 | " \n", 116 | " clear_output(wait=True)\n", 117 | " \n", 118 | "else:\n", 119 | " print(\"not converged\")" 120 | ] 121 | }, 122 | { 123 | "cell_type": "markdown", 124 | "metadata": {}, 125 | "source": [ 126 | "- plot" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": 7, 132 | "metadata": {}, 133 | "outputs": [ 134 | { 135 | "data": { 136 | "image/png": "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\n", 137 | "text/plain": [ 138 | "
" 139 | ] 140 | }, 141 | "metadata": {}, 142 | "output_type": "display_data" 143 | } 144 | ], 145 | "source": [ 146 | "for i in range(5):\n", 147 | " plt.plot(x,psi[:,i], label=f\"{energy[i]:.4f}\")\n", 148 | " plt.legend(loc=1)" 149 | ] 150 | }, 151 | { 152 | "cell_type": "markdown", 153 | "metadata": {}, 154 | "source": [ 155 | "- compare the density to free particles" 156 | ] 157 | }, 158 | { 159 | "cell_type": "code", 160 | "execution_count": 8, 161 | "metadata": {}, 162 | "outputs": [ 163 | { 164 | "data": { 165 | "text/plain": [ 166 | "" 167 | ] 168 | }, 169 | "execution_count": 8, 170 | "metadata": {}, 171 | "output_type": "execute_result" 172 | }, 173 | { 174 | "data": { 175 | "image/png": "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\n", 176 | "text/plain": [ 177 | "
" 178 | ] 179 | }, 180 | "metadata": {}, 181 | "output_type": "display_data" 182 | } 183 | ], 184 | "source": [ 185 | "plt.plot(nx)\n", 186 | "plt.plot(get_nx(num_electron,psi_non,x), label=\"no-interaction\")\n", 187 | "plt.legend()" 188 | ] 189 | } 190 | ], 191 | "metadata": { 192 | "kernelspec": { 193 | "display_name": "Python 3", 194 | "language": "python", 195 | "name": "python3" 196 | }, 197 | "language_info": { 198 | "codemirror_mode": { 199 | "name": "ipython", 200 | "version": 3 201 | }, 202 | "file_extension": ".py", 203 | "mimetype": "text/x-python", 204 | "name": "python", 205 | "nbconvert_exporter": "python", 206 | "pygments_lexer": "ipython3", 207 | "version": "3.6.6" 208 | } 209 | }, 210 | "nbformat": 4, 211 | "nbformat_minor": 2 212 | } 213 | -------------------------------------------------------------------------------- /img/psi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tamuhey/python_1d_dft/80bbcca3d1ad699fa003cae26682fc2e96b45338/img/psi.png -------------------------------------------------------------------------------- /img/sin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tamuhey/python_1d_dft/80bbcca3d1ad699fa003cae26682fc2e96b45338/img/sin.png -------------------------------------------------------------------------------- /utils.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | # integral 3 | def integral(x,y,axis=0): 4 | dx=x[1]-x[0] 5 | return np.sum(y*dx, axis=axis) 6 | 7 | def get_nx(num_electron, psi, x): 8 | # normalization 9 | I=integral(x,psi**2,axis=0) 10 | normed_psi=psi/np.sqrt(I)[None, :] 11 | 12 | # occupation num 13 | fn=[2 for _ in range(num_electron//2)] 14 | if num_electron % 2: 15 | fn.append(1) 16 | 17 | # density 18 | res=np.zeros_like(normed_psi[:,0]) 19 | for ne, psi in zip(fn,normed_psi.T): 20 | res += ne*(psi**2) 21 | return res 22 | 23 | def get_exchange(nx,x): 24 | energy=-3./4.*(3./np.pi)**(1./3.)*integral(x,nx**(4./3.)) 25 | potential=-(3./np.pi)**(1./3.)*nx**(1./3.) 26 | return energy, potential 27 | 28 | def get_hatree(nx,x, eps=1e-1): 29 | h=x[1]-x[0] 30 | energy=np.sum(nx[None,:]*nx[:,None]*h**2/np.sqrt((x[None,:]-x[:,None])**2+eps)/2) 31 | potential=np.sum(nx[None,:]*h/np.sqrt((x[None,:]-x[:,None])**2+eps),axis=-1) 32 | return energy, potential 33 | 34 | def print_log(i,log): 35 | print(f"step: {i:<5} energy: {log['energy'][-1]:<10.4f} energy_diff: {log['energy_diff'][-1]:.10f}") 36 | 37 | def get_d_d2(h, n_grid): 38 | D=-np.eye(n_grid)+np.diagflat(np.ones(n_grid-1),1) 39 | D = D / h 40 | 41 | D2=D.dot(-D.T) 42 | D2[-1,-1]=D2[0,0] 43 | 44 | return D, D2 --------------------------------------------------------------------------------