{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Ising Model\n", "\n", "\n", "Below we sketch algorithm for the two dimensional Ising model\n", "\\begin{equation}\n", "H = -\\frac{1}{2}\\sum_{ij} J_{ij} S_i S_j.\n", "\\end{equation}\n", "We will take $J_{ij}=1$ for the nearest neighbors and $0$\n", "otherwise. $S_i$ can take the values $\\pm 1$.\n", "\n", "On an $L\\times L$ lattice, we can choose\n", "$$\\omega_{XX'}=1/L^2 $$ if $X$ and $X'$ differ by one spin flip, and\n", "$\\omega_{XX'}=0$ otherwise. This can be realized by selecting a spin\n", "at random and try to flip it.\n", "\n", "The energy diference $\\Delta E = E(X')-E(X)$ in this case is cheap to\n", "calculate because it depends only on the nearest neighbour bonds. If\n", "$\\Delta E <0$ the trial state is accepted and if $\\Delta E>0$, the\n", "trial step is accepted with probability $\\exp(-\\beta \\Delta E)$. \n", "\n", "\n", "Keep in mind\n", "- One can keep track of total energy and total magnetization at\n", " every step. The total energy and magnetization needs to be computed\n", " from the scratch only at the beginning. After that they can be\n", " updated (add difference due to spin flip).\n", "- the quantity $\\exp(-\\beta\\Delta E)$ takes only 5 different values\n", " at fixed temperature. It is advisable to store those five numbers\n", " and not recompute them at every step.\n", "- Simulation can be started with random configuration\n", " corresponding to infinite temperature. The temperature can be slowly\n", " decreased through transition which is around $\\beta J\\approx 0.44$.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Algorithm\n", "\n", "- Choose temperature $T$ and precompute the exponents $[\\exp(-8J/T),\\exp(-4J/T),1,\\exp(4J/T),\\exp(8J/T)]$.\n", "\n", "- Generate a random configuration $X_0$ (this is equivalent to infinite temperature).\n", "\n", "- Compute the energy and magnetization of the configuration $X_0$.\n", " \n", "- Iterate the following steps many times\n", " \n", " - Select randomly a spin and compute the Weiss-field felt by\n", " that spin, i.e., $W_i = \\sum_{j\\; neighbor\\; i} J_{ij} S_j$.\n", " The energy cost to flip the spin is $\\Delta E = 2 S_i W_i$. Use\n", " the precomputed exponents to evaluate acceptance probability\n", " $P = min(1,\\exp(-\\Delta E/T))$.\n", " - Accept the trial step with probability $P$. If accepted,\n", " update spin lattice configuration, update the current energy ($E = E\n", " + \\Delta E$), and the current magnetization $M = M - 2 S_i$.\n", " - Ones the Markow chain equilibrates, meassure the total\n", " energy and magnetization (also $E^2$, and $M^2$) every few Monte Carlo\n", " steps. {\\textit{\\textbf{Be carefull:} Do not meassure only the\n", " accepted steps. Every step counts. Meassure outside the\n", " acceptance loop. }}\n", " \n", "- Print the following quantities:\n", " - $\\langle E\\rangle$, $\\langle M\\rangle$\n", " - $c_V = (\\langle E^2\\rangle -\\langle E\\rangle^2)/T^2$\n", " - $\\chi = (\\langle M^2\\rangle -\\langle M\\rangle^2)/T$\n", "\n", "\n", "The relation for specific heat can be derived from the following\n", "identity\n", "\\begin{equation}\n", "C_v = \\frac{\\partial \\langle E\\rangle}{\\partial T} =\n", "\\frac{\\partial}{\\partial T}\\left( \\frac{\\textrm{Tr}(e^{-E/T}E)}{\\textrm{Tr}(e^{-E/T})} \\right)\n", "\\end{equation}\n", "and similar equation exists for $\\chi$.\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Simulation of the Ising model" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from numba import jit\n", "from numpy import *\n", "from numpy import random\n", "\n", "N = 20 # size of the Ising system N x N\n", "\n", "@jit(nopython=True)\n", "def CEnergy(latt):\n", " \"Energy of a 2D Ising lattice at particular configuration\"\n", " Ene = 0\n", " N = len(latt)\n", " for i in range(N):\n", " for j in range(N):\n", " S = latt[i,j]\n", " # right above left below\n", " WF = latt[(i+1)%N, j] + latt[i,(j+1)%N] + latt[(i-1)%N,j] + latt[i,(j-1)%N]\n", " Ene += -WF*S # Each neighbor gives energy -J==-1\n", " return Ene/2. # Each pair counted twice\n", "\n", "\n", "def RandomL(N):\n", " \"Radom lattice, corresponding to infinite temerature\"\n", " #random.randint\n", " return array(sign(2*random.random((N,N))-1),dtype=int)\n", "\n", "def Exponents(T):\n", " PW = zeros(9, dtype=float)\n", " # Precomputed exponents : PW[4+x]=exp(-x*2/T)\n", " PW[4+4] = exp(-4.*2/T)\n", " PW[4+2] = exp(-2.*2/T)\n", " PW[4+0] = 1.0\n", " PW[4-2] = exp( 2.*2/T)\n", " PW[4-4] = exp( 4.*2/T)\n", " return PW" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1]\n", " [ 1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1]\n", " [-1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1]\n", " [-1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1]\n", " [-1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1]\n", " [ 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1]\n", " [-1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1]\n", " [-1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1]\n", " [-1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1]\n", " [-1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1]\n", " [ 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1]\n", " [ 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1]\n", " [ 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1]\n", " [ 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1]\n", " [-1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1]\n", " [ 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1]\n", " [ 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1]\n", " [-1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1]\n", " [ 1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1]\n", " [ 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1]]\n", "Energy= -8.0\n", "Exponents= [3.39803455e+01 0.00000000e+00 5.82926629e+00 0.00000000e+00\n", " 1.00000000e+00 0.00000000e+00 1.71548176e-01 0.00000000e+00\n", " 2.94287767e-02]\n" ] } ], "source": [ "latt = RandomL(N)\n", "print(latt)\n", "print('Energy=', CEnergy(latt))\n", "T=2.269\n", "PW = Exponents(T)\n", "\n", "print('Exponents=', PW)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "@jit(nopython=True)\n", "def SamplePython(Nitt, latt, PW, warm, measure):\n", " \"Monte Carlo sampling for the Ising model in Pythons\"\n", " Ene = CEnergy(latt) # Starting energy\n", " Mn = sum(latt) # Starting magnetization\n", " N = len(latt)\n", " n_accept = 0 # how often we accept\n", " N1=0 # Measurements\n", " E1,M1,E2,M2=0.0,0.0,0.0,0.0\n", " \n", " N2 = N*N\n", " for itt in range(Nitt):\n", " t1,t2 = random.rand(2) # one random number for random spin, the other for accepting the step with probability.\n", " t = int(t1*N2)\n", " (i,j) = (t % N, int(t/N))\n", " S = latt[i,j]\n", " WF = latt[(i+1)%N, j] + latt[i,(j+1)%N] + latt[(i-1)%N,j] + latt[i,(j-1)%N]\n", " # new configuration -S, old configuration S => magnetization change -2*S\n", " # energy change = (-J)*WF*(-S) - (-J)*WF*(S) = 2*J*WF*S\n", " # We will prepare : PW[4+x]=exp(-x*2/T)\n", " # P = exp(-2*WF*S/T) = exp(-(WF*S)*2/T) == PW[4+WF*S],\n", " # because PW[4+x]=exp(-x*2/T)\n", " P = PW[4+S*WF] # exp(-dE/T)\n", " if P>t2: #random.rand(): # flip the spin\n", " latt[i,j] = -S\n", " Ene += 2*S*WF\n", " Mn -= 2*S\n", " n_accept += 1\n", " \n", " if itt>warm and itt%measure==0:\n", " N1 += 1\n", " E1 += Ene\n", " M1 += Mn\n", " E2 += Ene*Ene\n", " M2 += Mn*Mn\n", " \n", " E,M, E2a, M2a = E1/N1, M1/N1, E2/N1, M2/N1 # , \n", " cv = (E2a-E**2)/T**2 # cv =(-^2)/T^2\n", " chi = (M2a-M**2)/T # chi=(-^2)/T\n", " return (M/N2, E/N2, cv/N2, chi/N2, n_accept/Nitt)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "= 0.0008137585279641207 = -0.0036002430488528193 cv= 1.6069034702218936 chi= 70.65938686079888 p_accept= 0.1902246\n" ] } ], "source": [ "from numpy import random\n", "\n", "Nitt = 5000000 # total number of Monte Carlo steps\n", "warm = 1000 # Number of warmup steps\n", "measure=5 # How often to take a measurement\n", "\n", "\n", "(M, E, cv, chi, p_accept) = SamplePython(Nitt, latt, PW, warm, measure)\n", "print('=', M/(N*N), '=', E/(N*N) , 'cv=', cv, 'chi=',chi, 'p_accept=', p_accept)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "T= 3.5000 M=-0.0018 E=-0.6596 cv= 0.5910 chi= 2.7307 p_accept= 0.5481\n", "T= 3.3966 M= 0.0025 E=-0.6864 cv= 0.5970 chi= 2.9004 p_accept= 0.5323\n", "T= 3.2931 M= 0.0070 E=-0.7172 cv= 0.6254 chi= 3.3216 p_accept= 0.5152\n", "T= 3.1897 M= 0.0074 E=-0.7508 cv= 0.6493 chi= 3.8418 p_accept= 0.4966\n", "T= 3.0862 M=-0.0015 E=-0.7855 cv= 0.6732 chi= 4.3061 p_accept= 0.4781\n", "T= 2.9828 M=-0.0073 E=-0.8224 cv= 0.6893 chi= 5.4311 p_accept= 0.4580\n", "T= 2.8793 M=-0.0034 E=-0.8692 cv= 0.7298 chi= 6.8063 p_accept= 0.4341\n", "T= 2.7759 M=-0.0174 E=-0.9269 cv= 0.8122 chi= 8.4824 p_accept= 0.4066\n", "T= 2.6724 M=-0.0333 E=-0.9819 cv= 0.8767 chi=11.4143 p_accept= 0.3791\n", "T= 2.5690 M= 0.0659 E=-1.0650 cv= 1.0584 chi=19.0296 p_accept= 0.3420\n", "T= 2.4655 M= 0.1172 E=-1.1532 cv= 1.2916 chi=28.2185 p_accept= 0.3032\n", "T= 2.3621 M=-0.1289 E=-1.2784 cv= 1.6454 chi=50.3603 p_accept= 0.2524\n", "T= 2.2586 M= 0.1942 E=-1.4665 cv= 1.5967 chi=89.8242 p_accept= 0.1803\n", "T= 2.1552 M= 0.8302 E=-1.6086 cv= 1.0273 chi= 2.4898 p_accept= 0.1278\n", "T= 2.0517 M= 0.8836 E=-1.6972 cv= 0.7395 chi= 0.9042 p_accept= 0.0960\n", "T= 1.9483 M= 0.9278 E=-1.7829 cv= 0.4728 chi= 0.2107 p_accept= 0.0664\n", "T= 1.8448 M= 0.9490 E=-1.8378 cv= 0.3305 chi= 0.1187 p_accept= 0.0482\n", "T= 1.7414 M= 0.9652 E=-1.8836 cv= 0.2252 chi= 0.0640 p_accept= 0.0337\n", "T= 1.6379 M= 0.9766 E=-1.9189 cv= 0.1504 chi= 0.0402 p_accept= 0.0230\n", "T= 1.5345 M= 0.9842 E=-1.9436 cv= 0.1034 chi= 0.0227 p_accept= 0.0155\n", "T= 1.4310 M= 0.9901 E=-1.9634 cv= 0.0624 chi= 0.0122 p_accept= 0.0098\n", "T= 1.3276 M= 0.9941 E=-1.9779 cv= 0.0364 chi= 0.0064 p_accept= 0.0059\n", "T= 1.2241 M= 0.9966 E=-1.9869 cv= 0.0217 chi= 0.0036 p_accept= 0.0034\n", "T= 1.1207 M= 0.9982 E=-1.9931 cv= 0.0113 chi= 0.0018 p_accept= 0.0018\n", "T= 1.0172 M= 0.9992 E=-1.9968 cv= 0.0052 chi= 0.0008 p_accept= 0.0008\n", "T= 0.9138 M= 0.9997 E=-1.9987 cv= 0.0021 chi= 0.0003 p_accept= 0.0003\n", "T= 0.8103 M= 0.9999 E=-1.9996 cv= 0.0006 chi= 0.0001 p_accept= 0.0001\n", "T= 0.7069 M= 1.0000 E=-1.9999 cv= 0.0001 chi= 0.0000 p_accept= 0.0000\n", "T= 0.6034 M= 1.0000 E=-2.0000 cv= 0.0000 chi= 0.0000 p_accept= 0.0000\n", "T= 0.5000 M= 1.0000 E=-2.0000 cv= 0.0000 chi= 0.0000 p_accept= 0.0000\n" ] } ], "source": [ "from numpy import random\n", "wT = linspace(3.5,0.5,30)\n", "wMag=[]\n", "wEne=[]\n", "wCv=[]\n", "wChi=[]\n", "N=20\n", "latt = RandomL(N)\n", "Nitt = 5000000 # total number of Monte Carlo steps at each temperature\n", "warm = 1000 # Number of warmup steps\n", "measure=5 # How often to take a measurement\n", "\n", "for T in wT:\n", " # Precomputed exponents : PW[4+x]=exp(-x*2/T)\n", " PW = Exponents(T)\n", " (M, E, cv, chi, p_accept) = SamplePython(Nitt, latt, PW, warm, measure)\n", " wMag.append( M )\n", " wEne.append( E )\n", " wCv.append( cv )\n", " wChi.append( chi )\n", " print('T=%7.4f M=%7.4f E=%7.4f cv=%7.4f chi=%7.4f p_accept=%7.4f' % (T,M,E,cv,chi,p_accept))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from pylab import *\n", "%matplotlib inline\n", "\n", "plot(wT, wEne, label='E(T)')\n", "plot(wT, wCv, label='cv(T)')\n", "plot(wT, wMag, label='M(T)')\n", "xlabel('T')\n", "legend(loc='best')\n", "show()\n", "plot(wT, wChi, label='chi(T)')\n", "xlabel('T')\n", "legend(loc='best')\n", "show() " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.8.5" } }, "nbformat": 4, "nbformat_minor": 2 }