{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Aharonov-Bohm effect" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Image [CC-BY-SA-3.0](https://creativecommons.org/licenses/by-sa/3.0/deed.en), original by [Kismalac](https://commons.wikimedia.org/wiki/File:AharonovBohmEffect.svg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial, we are going to discuss one of the cornerstone of quantum nanoelectronics,\n", "the Aharonov-Bohm effect. We are going to calculate the conductance of a ring through which one applies a magnetic field.\n", "One interesting aspect of the Aharonov-Bohm effect is that the magnetic field can actually *vanish* in the sample itself. All that is required is that the potential vector does not. This is a very nice proof that in quantum mechanics the electron motion indeed couples to the potential vector, not the magnetic field. This can be seen from the following Gauge transformation: let us consider the Schrodinger equation $H\\Psi = E\\Psi$ with following Hamiltonian,\n", "\n", "$$H = \\frac{1}{2m} [ P - eA(R)]^2 + V(R)$$\n", "\n", "where $B(r) = \\nabla \\times A(r) = 0$ inside the sample itself (but not in the hole of the ring). Then the function\n", "\n", "$$F(r) = \\int_{r_-}^r A(r).dr $$ is well defined independently of the path from $r_-$ to $r$. Let us define,\n", "\n", "$$\\tilde \\Psi(r) = e^{iF(r)} \\Psi(r)$$. \n", "\n", "We find that $\\tilde \\Psi$ obeys the free equation with $H = P^2/2m + V(R)$ to which we add the *boundary condition*,\n", "\n", "$$\\tilde \\Psi(r_+) = e^{iF(r_+)} \\tilde \\Psi(r_-)$$\n", "\n", "with $$F(r_+) = \\frac{B S}{\\hbar/e}$$\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from math import pi\n", "\n", "%run matplotlib_setup.ipy\n", "from matplotlib import pyplot\n", "import numpy as np\n", "import kwant" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "lat=kwant.lattice.square()\n", "L,W=30,16\n", "def myshape(R): return ( \n", " (R[0]**2 + R[1]**2) > (L-W/2)**2 and \n", " (R[0]**2 + R[1]**2) < (L+W/2)**2)\n", "\n", "#L,W=30,16\n", "#def myshape_ellipse(R): return ( \n", "# (R[0]**2/2. + R[1]**2) > (L-W/2)**2 and \n", "# (R[0]**2/2. + R[1]**2) < (L+W/2)**2)\n", "\n", "\n", "H=kwant.Builder()\n", "\n", "H[lat.shape(myshape,(L,0) )]=4\n", "\n", "#H[lat.shape(myshape_ellipse,(int(L*1.14),0)) ]=4\n", "\n", "\n", "H[lat.neighbors()]=1\n", "\n", "def Aharonov_Bohm(site1,site2,phi): return np.exp(-2j*pi*phi)\n", " \n", "for hop in H.hoppings():\n", " if hop[0].tag[0]==1 and hop[0].tag[1]>0 and hop[1].tag[0]==0: \n", " H[hop]=Aharonov_Bohm\n", "\n", "sym=kwant.TranslationalSymmetry(lat.vec((1,0)))\n", "def lead_shape(R): return abs(R[1]) < W/2 and abs(R[0]) <3\n", "Hlead =kwant.Builder(sym)\n", "Hlead[lat.shape(lead_shape,(0,0) )]=4\n", "Hlead[lat.neighbors()]=1\n", "H.attach_lead(Hlead)\n", "H.attach_lead(Hlead.reversed())\n", "kwant.plot(H);" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "\n", "Hf=H.finalized()\n", "data = []\n", "phis = np.linspace(0,1.,50)\n", "for phi in phis:\n", " smatrix = kwant.smatrix(Hf, 3.3,args=[phi])\n", " data.append(smatrix.transmission(1, 0))\n", "pyplot.plot(phis, data,'o');\n", "pyplot.xlabel('$\\phi = BS/(h/e)$')\n", "pyplot.ylabel('g in unit of $(2e^2/h)$');\n", "pyplot.title('Aharonov-Effect')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "We see that the Aharonov-Bohm effect contains several harmonics\n", "$$ g = g_0 + g_1 cos(\\phi) + g_2 cos(2\\phi) + ...$$\n", "* How can we get just one harmonics (as in most experiments)? \n", "* Try L = 100 and W= 12, what do you see?\n", "* The results should not depend on the position of the gauge transform, can you check that?\n", "* Can you make a different sample with an assymetric shape, say a rectangular shape?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Real magnetic field\n", "\n", "In real life it is difficult to put the field only in the hole so experimentalists tend to\n", "apply a uniform field everywhere. Let us modify the script to just do that. You need now to pick up a\n", "phase $\\phi$ on each small square. This can be done with the following piece of code - try to modify your code to incorporate this new pieces." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "from math import pi\n", "from matplotlib import pyplot\n", "import kwant\n", "\n", "lat=kwant.lattice.square()\n", "L,W=100,12\n", "\n", "def myshape(R): return ( \n", " (R[0]**2 + R[1]**2) > (L-W/2)**2 and \n", " (R[0]**2 + R[1]**2) < (L+W/2)**2)\n", "H=kwant.Builder()\n", "H[lat.shape(myshape,(L,0) )]=4\n", "\n", "def Field(site1,site2,phi):\n", " x1,y1=site1.pos\n", " x2,y2=site2.pos\n", " return -np.exp(-0.5j * phi * (x1 - x2) * (y1 + y2))\n", "\n", "H[lat.neighbors()] = Field\n", "\n", "sym=kwant.TranslationalSymmetry(lat.vec((1,0)))\n", "def lead_shape(R): return abs(R[1]) < W/2 and abs(R[0]) <3\n", "Hlead =kwant.Builder(sym)\n", "Hlead[lat.shape(lead_shape,(0,0) )]=4\n", "Hlead[lat.neighbors()]=Field\n", "H.attach_lead(Hlead)\n", "H.attach_lead(Hlead.reversed())\n", "kwant.plot(H);" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "Hf=H.finalized()\n", "data = []\n", "phis = np.linspace(0.,0.0005,50)\n", "for phi in phis:\n", " smatrix = kwant.smatrix(Hf, 3.3,args=[phi])\n", " data.append(smatrix.transmission(1, 0))\n", "pyplot.plot(phis, data);\n", "pyplot.xlabel('$\\phi = Ba^2/(h/e)$')\n", "pyplot.ylabel('g in unit of $(2e^2/h)$');\n", "pyplot.title('Aharonov-Effect')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Do you understand why the x - scale is so much smaller?\n", "* What should happen at higher field?" ] } ], "metadata": { "kernelspec": { "display_name": "IPython 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" }, "name": "AharonovBohm.ipynb" }, "nbformat": 4, "nbformat_minor": 0 }