{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from cmath import exp\n",
    "from math import sin,  cos\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = 16, 9"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Time-evolution operator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def evolve(l, j, hx, v, dt, n):\n",
    "    \"\"\" Evolve the state v in time by n * dt \"\"\"\n",
    "    dim = 1 << l\n",
    "    def tstep_diag(x, dt):\n",
    "        ## Apply diagonal part\n",
    "        for s in range(dim):\n",
    "            jtotal = 0.\n",
    "            for r in range(l-1):\n",
    "                jtotal += -j[r] if ((s >> r)^(s >> (r+1)))&1 else j[r]\n",
    "            x[s] = exp(-1j*jtotal*dt)*x[s]\n",
    "        return x\n",
    "    def tstep_transv(x, dt):\n",
    "        ## Apply transverse part succesively for each site\n",
    "        y =  np.zeros_like(x)\n",
    "        for r in range(l):\n",
    "            cos_v = cos(dt*hx[r])\n",
    "            sin_v = sin(dt*hx[r])\n",
    "            ## diagonal\n",
    "            for s in range(dim):\n",
    "                y[s] = cos_v * x[s]\n",
    "            ## off-diagonal\n",
    "            for s in range(dim):\n",
    "                y[s^(1<<r)] += 1j*sin_v * x[s]\n",
    "            ## swap vectors\n",
    "            tmp = x\n",
    "            x   = y\n",
    "            y   = tmp\n",
    "        return x\n",
    "    v = tstep_diag(v, dt/2.)\n",
    "    for i in range(int(n-1)):\n",
    "        v = tstep_transv(v, dt)\n",
    "        v = tstep_diag(v, dt)\n",
    "    v = tstep_transv(v, dt)\n",
    "    v = tstep_diag(v, dt/2.)\n",
    "    return v"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Measurements"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def magnetization(v, l):\n",
    "    \"\"\" Measure the magnetization per site for the state v \"\"\"\n",
    "    dim = 1 << l\n",
    "    m = np.zeros((l))\n",
    "    for r in range(l):\n",
    "        for s in range(dim):\n",
    "            m[r] += abs(v[s])**2 * 2. * ( bool(s&(1 << r)) -0.5)\n",
    "    return m"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Transverse field only"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106d07128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "l   =  11\n",
    "dim =  1 << l\n",
    "j   =  0.00*np.ones((l-1)) # Ising coupling\n",
    "hx  =  2*np.pi*0.125*np.ones((l)) # transverse field strength Gamma\n",
    "\n",
    "## Starting configuration\n",
    "ind = int('00000000000',base=2) # specify spin configuration: 0 = down, 1 = up\n",
    "v   = np.zeros((dim),dtype=complex)\n",
    "v[ind] = 1.\n",
    "\n",
    "## Parameters for time evolution\n",
    "tend   = 20. # duration of the time evolution\n",
    "tmeas  = 0.5 # time after which a measurment is performed\n",
    "dt     = 0.1 # time step used for the evolution\n",
    "nmeas  = int((tend)/tmeas) # number of measurements\n",
    "nstep  = int((tmeas)/dt) # number of steps between measurments\n",
    "\n",
    "## measure magnetization\n",
    "m=np.zeros((nmeas,l));\n",
    "m[0,:] = magnetization(v, l)\n",
    "\n",
    "## Do time evolution\n",
    "for t in range(1,nmeas):\n",
    "    # print(t*tmeas)\n",
    "    v=evolve(l,j,hx,v,dt,nstep)\n",
    "    m[t,:] = magnetization(v, l)\n",
    "\n",
    "## plot magnetization\n",
    "plt.pcolor(np.array(range(l+1)),np.linspace(0.,tend,nmeas+1),m,\n",
    "           vmin=-1.0, vmax=1.0)\n",
    "plt.xlabel('site')\n",
    "plt.ylabel('time')\n",
    "plt.axis([0,l,0,tend])\n",
    "plt.title(\"Magnetisation, J = \"+str(j[0])+\" , hx = \"+str(hx[0]))\n",
    "plt.colorbar()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Ising coupling and transverse field"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1oAAAIwCAYAAACfuhoWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu4ZWV9H/Dvz0FBdARELgICUQxGjRqNmKhNiGI1V2xr\nrMQYjXli0mjuTb3UBoltE3JvYtJWYykaDV6SeosRJIQ2JFFRsaKCmCg3waHc0UFkhrd/7D1yOJ4z\nc2bPPuvdZ9bn8zz7mb3Xfvda3z1s9l6/+a31rmqtBQAAgPm5V+8AAAAAexuFFgAAwJwptAAAAOZM\noQUAADBnCi0AAIA5U2gBAADMmUILYJ1U1fur6gUbZb17s6o6pqruqiq/ewAMwg8OsCFU1eVV9dWq\neuCy5Z+Y7kAf3SvbNMepVfWmpctaa9/XWnvzIq53jdv+m6p68ZzX+aiq+kBV/b+q2r6G8Y+rqo9W\n1Veq6sKqeuwebL77hSOr6vSqun76/k9f42vOmH7GH7re+QCYH4UWsFG0JF9IcsqOBVX16CT7ZQF2\noFmzO5O8LckuC7iquneSdyV5U5IDp3++u6r2WdeE66SqfirJDyX51iSPSfIDVfWSXbzmKUkeGp9x\ngA1HoQVsJG9O8sIlj1+Y5MylA6rq+6rq41V1S1VdUVWnLnv+x6bdsf9XVa+uqi9U1dOmz51aVW+r\nqjOr6taquriqHr/ktQ+uqndW1XVV9U9V9bPT5c9M8qok/7qqbquqi6bLv94RqqqHVdX5VXXz9PV/\ntmS9v19VV04zX1hVT92N9db0fVxeVV+qqv9ZVQ+YPrfjcLkfm/5dXFdVr5rDf4eZtdYua62dkeQz\naxh+YpJNrbU/aK3d2Vr7wySV5Gkzbr6S/OhKfxdV9ZdV9dtLHr+tqv5kxu2s5seS/E5r7drW2rVJ\nfifJi1YNW7UpyR8meek0OwAbiEIL2Eg+lGRzVR0/PdfmuUn+NPfcCf1ykhe01g5I8v1JfrqqfihJ\nquqRSf4ok67Yg5MckOSIZdv4wSRvnT733un4VFVNH180fe3Tk/x8VT2jtXZ2kv+c5G2ttc2ttW9b\nIftrk5zdWjswyVGZ7EDv8JFMOhwHTbf9jqq6zxrX++OZ7MB/dyadj81JXrdszFOSPDzJSUl+taqO\nX2E9u6WqnlJVN1XVjdM/l96/saqevKfbSPKoJJ9ctuyT0+WzWu3v4sWZFGEnVtXzkzwhyc+ttIKq\nOmUX7/2onbyf/7vk8f/dxXv5pSTnt9Y+tRvvD4AFodACNpodXa1nJLk0yTVLn2yt/Z/W2qen9z+V\n5KxMipAk+VdJ3tNa+4fW2rYkv7rC+i9orZ3dWmvTbT1muvyEJA9qrf2n1tr21trlSf4kyfPWmPvO\nJMdU1ZGtta+11v5+Sea3ttZubq3d1Vr7vST7JllrMfQjSX63tXZFa21rklcmeV7dPelDS/Ka6TY/\nmcnO/Z6c57Qj89+11g5qrT1w+ufS+w9c+v72wP2T3LJs2S2ZFJOzWPXvorW2JclPZ3J44u9lUqxv\nXXElrf3ZLt771Wt8P7dMl32DqnpIkp/Myp9RADYAhRaw0fxpJsXFizLZKb6HqnpSVZ03PTTs5iQ/\nleRB06ePSHLVjrGttduT3LBsFV9acn9rkv2mRcvRSY6cdixurKqbMilqDl1j7l/J5Dv3I9NDEn98\nSeZfrqrP7OiOJHnAksy7ckSSK5Y8viLJPkkOW7Jsy7L3tOLO/QL6ciZ/F0s9IMlte7DOnf1d/GWS\nTUk+21r7hz3YxmqWv58HTJet5PeS/FprbbXnAVhwCi1gQ2mtXZnJpBjfm+QvVhjylkwmUDhyepje\nf8/dhxZem8lhe0mSqrpvkoPXuOmrknx+2rHY0b04oLX2gzui7SL3da21l7TWjsykc/LHVfXQ6flY\n/y7Jc3Z0R5LcuiTzriZBuCbJMUseH5NJ92zLysPno6qeOj1v7NZltx3LnjKHzXw6d3cUd3jMdPl6\n+M+ZnDv24KpatVNZVT+yi/e+2qGDn849u4mPy+rv5elJfquqrq2qa6fL/mFnuQBYLAotYCN6cZKn\nTTtSy90/yU2ttTur6oRMul87vDPJD1bVd9RkRrvT1rCtHQXPR5LcWlX/rqr2q6pNNZmq/Nunz29J\ncuz0XK5vXEnVc6rqyOnDm5PclWR7JofB3Znkhqq6T1X9au55aNxO15vkz5L8YlUdW1X3T/KfkpzV\nWrtrWf6VMp1YVXet9vzOtNYumJ439oBltx3L/m4n2903k8Mjq6r2rar7rDL0/CTbq+pnp383L8uk\n8DxvlfWeWlUrPrdjyE4yfVcmh6S+YPrnH1bVg1caOz3Uc2fvfbVDB9+U5Jeq6oiqOiKTc7DOWGXs\nwzMpyh6bSUGWJD+Q5H/t5P0BsEAUWsBG8fXOTmvtC621j6/0XJKfSfLaqrolyaszmUp8x+s+k+Rn\np8uuyeQcmeuS3LGr7U4Llx/MZKf3C9PXvSF3Hwr2jkx25G+oqo+ukOuJST5cVbdm0nH7udbaFUnO\nTvKBJJdN17s1Sw5vXMN6/0cm55L9nyT/NH390kkclnfElj4+KsmuzqWa67TiVXVMktuTXDxd9+2Z\nnGu34/n3V9UrkqS1dmeSZ2dS+NyUyeGiJ0/Pr1vJQ5KsWuBllb+LqtqcyeyVL22tfWlaJP5JVi+C\nZtJa+++ZTKhycSaTery3tfaGHc9PO2JPmY69ftoFvW56/lhLckNrbWefVQAWSE3O916nlU8On3hT\nksMz+ZfbN7TW/qCqDspkR+eYJJcneW5rbfkJzwDrqqrul0l36bhp0TMqVfX6JO9orX1wlec/luS0\n1tp7hk02m6r6eJKnt9Zu6p0FgMVRVW/M5KiALa215Yek7xjzB5mclvCVJC9qrX1iT7e73h2tbUl+\nqbX2yCTfmeSlVfWIJK9Icm5r7fhMDgF55TrnAEiSVNUPVNV9p0XW7yT55BiLrCSZnjO2WpH1qCSP\nyGQ6+w2htfZ4RRYAKzgjyTNXe7KqvjfJw1prD89kEq3/No+NrmuhNT0E4xPT+19Ockkmh6qcnLsv\nMnpmJoeGAAzh5EwOG7w6ycOy9unZR6OqfiOTwxn/XWvtql2NB4BF1lq7IJND0FdzcqYzGbfWPpzk\ngKo6bCfj12SfPV3BWlXVsZmc2/ChJIdNjzlPa+1LVXXIUDmAcWut/WQm1ydiFa21V2Ry5AEAjMGR\nuef50V+cLtujGXwHmQxjOhPWO5P8/LSztX4nhgEAAKzdSrPS7nG9su4draraJ5Mi682ttXdPF2+p\nqsNaa1uq6vBMZu9a6bUKMgAAWEFrbdXLViyiA6uGmP1uS2vt8N18zdWZzFy7w1GZnGawR4Y4dPB/\nJPlMa+2/LFn2nkym6T09k2l7373C66YuW8doC+6gh/dO0N8FSf7oNclLX9M5SD+//shf7B2huzuy\nb/7mNRfke17z1N5Rutk/W3tH6G5r9h/952DfnV6JYBxe+dIDRv2bkCQZ7/8Cd7vpZ3PPK1mM0Tf3\nDrDbbknymnXexmuS1c6tqqx+PcX3JHlpkrdV1XckuXnHaU57Yl0Lren1QJ6f5OKquiiTFtyrMimw\n3l5VL05yZZIfXs8cAABAf4NNELFEVb01yYlJDq6qK5OcmuQ+SVpr7fWttfdX1fdV1T9mMr37j89j\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106cebfd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "l   =  11\n",
    "dim =  1 << l\n",
    "j   =  1.00*np.ones((l-1)) # Ising coupling\n",
    "hx  =  0.4*np.ones((l)) # transverse field strength Gamma\n",
    "\n",
    "## Starting configuration\n",
    "ind = int('00000100000',base=2) # specify spin configuration: 0 = down, 1 = up\n",
    "v   = np.zeros((dim),dtype=complex)\n",
    "v[ind] = 1.\n",
    "\n",
    "## Parameters for time evolution\n",
    "tend   = 20. # duration of the time evolution\n",
    "tmeas  = 0.5 # time after which a measurment is performed\n",
    "dt     = 0.1 # time step used for the evolution\n",
    "nmeas  = int((tend)/tmeas) # number of measurements\n",
    "nstep  = int((tmeas)/dt) # number of steps between measurments\n",
    "\n",
    "## measure magnetization\n",
    "m=np.zeros((nmeas,l));\n",
    "m[0,:] = magnetization(v, l)\n",
    "\n",
    "## Do time evolution\n",
    "for t in range(1,nmeas):\n",
    "    # print(t*tmeas)\n",
    "    v=evolve(l,j,hx,v,dt,nstep)\n",
    "    m[t,:] = magnetization(v, l)\n",
    "\n",
    "## plot magnetization\n",
    "plt.pcolor(np.array(range(l+1)),np.linspace(0.,tend,nmeas+1),m,\n",
    "           vmin=-1.0, vmax=1.0)\n",
    "plt.xlabel('site')\n",
    "plt.ylabel('time')\n",
    "plt.axis([0,l,0,tend])\n",
    "plt.title(\"Magnetisation, J = \"+str(j[0])+\" , hx = \"+str(hx[0]))\n",
    "plt.colorbar()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Exact solution of 1D transverse field Ising model:\n",
    "https://www.math.ucdavis.edu/~bxn/pfeuty1970.pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "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.4.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}