ktongue's picture
download
raw
122 kB
{
"metadata": {
"name": "FFT convergence"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab inline\n",
"from sympy.interactive import init_printing\n",
"init_printing()\n",
"from sympy import sqrt, sin, pi, var, integrate, Symbol, S, Integral\n",
"var(\"x y z\")\n",
"n = 3 * ((x-1)**2 + (y-1)**2 + (z-1)**2 - 1) / pi\n",
"Vh = -((x-1)**4 + (y-1)**4 + (z-1)**4) + 2*(x**2+y**2+z**2)\n",
"def laplace(f):\n",
" return f.diff(x, 2) + f.diff(y, 2) + f.diff(z, 2)\n",
"print \"n =\"\n",
"n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
"For more information, type 'help(pylab)'.\n"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"n =\n"
]
},
{
"latex": [
"$$\\frac{3 \\left(x -1\\right)^{2} + 3 \\left(y -1\\right)^{2} + 3 \\left(z -1\\right)^{2} -3}{\\pi}$$"
],
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAL8AAAAjCAYAAADFTts+AAAABHNCSVQICAgIfAhkiAAABM5JREFU\neJzt3FmoVVUcx/HPdcohu2CTSZJDmKUFpZZlg5nUQ0gZRpmGBpFlEZVBFBU+FEE0PPTUQ0REQjM9\nRflSSBCGFqJR0ASRaYUNDqWZ9rDWvWffc890z9n7HLx3fWGz1zp777X+v/Xfw3+ttfchkRiidHXa\ngAYZhrsxJuaf7qAt7WSo6R5qehtiCSbH9NuY00Fb2slQ091WvcOKLDxHpmN5TH+r1EDtYGob6zoV\nYzP5TuruBENNb0Mch/Ex/QEmtaneKVjRprpgBB7L5Dulu1O0Ve/wTPryuFyIB/AXvovbluIbHCnA\nhvHYgE/xZ/xtBiZgT8z/h0O4LNrwfk5119IMD+P5nOoqp5LuI/gHi7BNcbqpr70In9fzdd5662ns\n5TesiukbcSAauwSzWjSiGrdjPY4Kd9ksazEyk+/G4wMs/54626tphvNw7wDra5RauuGVTLoZ3bSm\nvQifN+rrZvVWopbGPszGuJhehn/jju3ocVdqkLOU4j/CKMDIuCxusNz1dbZX0wyP4twG62mWaif/\nczgzppvRTWvai/R5PV83q7cStTT26fBux/6YvkFovIMYVVbgAqwWwoGVWIN3MK1FQ8v5GvNi+hY8\nhZ/xC3blVEclzXtjfh6+zOw7XLhDvSw8RuEkbMnJlizbMFdxuqmufZT+Pn8Cv+ISTMT8HO2g5Ou8\n9dbyrxFlO18gxJv7hZP7ROzLbD8BM/ESrsMjuEholAMtGlqJ7rjeEJciKNfcw1ghBu1hKd4U4tEp\n2Iwr8WMBNu0RYuFnFKebytrLfT4VW+P6JhwWYva86VaMn6v5t9/JvzUud2ATrsDxme2H8GpMX4x3\nY3pVZp+1aj8FPsPrDRp+uMH9CMOE9+k7cXcpRmfye/Fk2XGVNO/TdzAANsb1YiF+hYX4OKbz1P23\n/nffWuSp/Xd9ff59XIYJT71sB7gTvh5ondX828t87FYa054pxGbL8GyVSrYohSXdVfZplEpx4PRo\ncCusr7Gtlmb4sMIxN+OtTH6HcGdplmox/zLc2UK5tKa93OddSjeD04UhyWYpytfl1NPYG/MfFhy5\nM+anCZ2DL4QrqafztQT3C8bPxudCw6zO2XC4WrGP/FqaCQ1XPjIwSZh8IbTBpMz+eXJapp4iqKc9\n6/M5uCvmTxH8fzBne4rwdT2NvVfzTiG+XSRcMddjndAIO3ANvhJCnVlCXLhJ6PidjzeUOhYDYYXw\nGJsrOHyiEEvPEOLeH5ooM8tCfFRlWy3NBI1jhUd+D7uFIbORwkmwE681YVc13T2swYuCs5ploea1\n9/i8S5h32IT3hLvzg0rzLwOhaF+XU0/joOehFo6doH+MnGWjMCyXN6PlM7HWivZEwjqcHNOz8JNw\nN1wgDKONqXJcK9yGswsoN1FG+YhGoi+bhbHnLUL/qAtn4CohBPgj5/omC4MHn+RcbiKRSCQSiUQi\nkUgMOXqmw4921IpEIpFIJBKJxCCjCy8IE2S7hVdGdsV1M69JJBLHDCuFmeJRwivIw4TvhBMdIM3w\ntpdtwhdR1wovzI0T3gzdXOugRDEcK//bM9i4Vfgaappj51/zBh3p5G8/5whvbh4SXpku+iP5RBXS\nyd9+lit9uLFd+OeCRCKRSCQSiUQikUgkEol8+B/rc0CgaGRycAAAAABJRU5ErkJggg==\n",
"prompt_number": 1,
"text": [
" 2 2 2 \n",
"3\u22c5(x - 1) + 3\u22c5(y - 1) + 3\u22c5(z - 1) - 3\n",
"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
" \u03c0 "
]
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print \"Vh =\"\n",
"Vh"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Vh =\n"
]
},
{
"latex": [
"$$2 x^{2} + 2 y^{2} + 2 z^{2} - \\left(x -1\\right)^{4} - \\left(y -1\\right)^{4} - \\left(z -1\\right)^{4}$$"
],
"output_type": "pyout",
"png": "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\n",
"prompt_number": 6,
"text": [
" 2 2 2 4 4 4\n",
"2\u22c5x + 2\u22c5y + 2\u22c5z - (x - 1) - (y - 1) - (z - 1) "
]
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's check charge neutrality:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"integrate(n, (x, 0, 2), (y, 0, 2), (z, 0, 2))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$0$$"
],
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAAwAAAASCAYAAABvqT8MAAAABHNCSVQICAgIfAhkiAAAANtJREFU\nKJHN0r0uhEEUxvGf9VWItTYahSgQPYV2SxfBBbiAbfSidSE60e4trASNjghZGiHbEFnFzpscb84W\nOqd5cp6Z/5nJzMMfa6rWb+MU9xhhBV0MMngJjzgI3jFuMJcBJ3jBTPDa+MJRBtzhIvGv0auaRtFF\nbOEhAZ6wWwfWi74nwBBNzEegWfRzAgCtCHwXHSXAbNHpCLwmG6taKPoRgUGZvjwBeKsDQ/SxlgCb\nuKqaRli4xJ7fcdkoQ86zu66Wow+Dd4ZbIRoxBs/oGEdkx/gz29iXP/d/qR8UhCWn2ReXCwAAAABJ\nRU5ErkJggg==\n",
"prompt_number": 7,
"text": [
"0"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$V_H$ is produced by the charge density $n$:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"laplace(Vh) / (-4*pi)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$- \\frac{- 12 \\left(x -1\\right)^{2} - 12 \\left(y -1\\right)^{2} - 12 \\left(z -1\\right)^{2} + 12}{4 \\pi}$$"
],
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAPIAAAAmCAYAAAD+x8adAAAABHNCSVQICAgIfAhkiAAABQpJREFU\neJzt3VmsJFMcx/HPHdvYZkQwjH0wdhL7ThA8mBFiH4KM2AkhlgS5D8SSDA8kQiIidrEleMALDx4Q\nS+wilkjE9kAiIUSMh39VuqfT9/a9fau6ut3/N+ncc6pPzvnVv/59zql/1TmXJElGnrGmBYwQc3Ap\n1i7ydzaopUlmux1m+/mPPEuwZZF+Fns3qKVJZrsdhvL85zQtYITYDmcU6a+0LmYTbDvAthZgnbb8\nMNmhCWb7+Y88a2H9Iv0KFjakYxssG2B7q+Omtvyw2KEpZvv5r8L6eAZbdRzfH1dhHK/hsI7vTxSO\nNQg9i7FDl7KH4oaa2qS3De5QX2xjIk374eyOY03boQ5faMIPpqKB3vYYOOcLMSvF6FKyHm5vy5+K\nP7B5kV+CXQeoBy7BGm35+bi5xjZ72WAPXFFB+9PRVPJwW7ppO9ThC4Pwg8v61NDLHo3SKXYP/Cvu\nQWBeUebUIl93dLDbBdxR636IiFauUXyOrqHNXja4EbtX0O50NJXche2LdNN2qNMX6vSD8T419LLH\nUAW7PsKB+LrIl0GEL7Fm8WnnYJyLu3EWLsRzWFShpi+wb5E+E7fhB/yMHytsp2QyGyi0fNpWfjUx\nWjwkpr+wEd6tQduH2EfzdujmC3ALfsFB2BQHVKhn0H7QSS+/aJSJev6SR7CiSG8mLlTJPCwv0ifg\nrSL9sLiIVep5sM/6ZtJmSbsNiHujdk7GxnhCq3c+BS/UoGkprplBvf20WTKZLxBR/JPEFHS5VqdW\npZYq/GB8hhpKOv2ismDBJSYfCd/BU9Oob7no8a4r8r+Ki1TytzgZoqd6vkifU4Omf6ZQpsr2Sjpt\nQIzA7ZQ/7KPF/RUcgTdq0PSn7iNhN6pst5cvwDfFZ46Ynfxbg5ap+kHJAlxp1cDkIZjblv8dt06z\n3m5+0SgT9TrHa422c9vKrOhSlphGltOe+RXr2Q4XzKDOftpkYhu82qXs6SLKWfIJ9qpB08m4aAb1\n9tPmdHxhTKuj20I8JqpKS1V+MD4DDUxsj6G6R4bDRU/2spgiHyemUkTPWQZblohQ/DbYDe+LC3lu\nxXqOweMV19mLyWzwk9YzzJKF4sUEwh4L8UENujZra2cQTNUXiLerLi6ObSJ8468KtTThB51MZo9G\nWIb7RK/zpFZIfpGYaqzs+Mwrvh8TkcPVcR7uxeW4FleLSOKCCvUs1hrpq6ZfG5yPIzvqWoSnRRDm\nObxUsaaSB636hlcVVOELO2MnMd1+WwQDuz337VdLlX4w3qeGXvZIRowNTX5P9Zro0Kpmrng6kMyM\nobmvTZrnahGpJl6K+F6MUAfjY61VOVVynhj5kiGlMwqaDD9vi2n0uyLGMYatcZQIyPxWcXtbiiDi\nmxXXmyRJkiRJkiRJMmy0v3WyOx4w9SVyH6jvBYEkSaZBFetaV1ZQR5IkSZIkSZKMOPkcefaxQuwu\n8V3TQpIk6Y/DxcKLIxrWkVTMsK1+SupjPvbEZ00LSaonf8izhwtwf8exMdwj3tH+CZ+LrWs+x2MD\nVZckSU+WinXb8LrW1PossfBiTbGbxRz1bPGa1Ewde0Qnw8VCbCBG3U4eLf4uxXtihdPvA9KVVEj+\nkP//HCt2lLi+yC8Wq6fWFbtNEJvPLyvK5j/2S5IR4FurRq13wYtF+jTxmm4yYmSwa/awhdjYfVOx\nOcHxxfEztPaj+lhsxp4kSZIkSZIkSZIkSZIkSdIM/wEs9jO1OIBD1gAAAABJRU5ErkJggg==\n",
"prompt_number": 8,
"text": [
" \u239b 2 2 2 \u239e\n",
"-\u239d- 12\u22c5(x - 1) - 12\u22c5(y - 1) - 12\u22c5(z - 1) + 12\u23a0\n",
"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
" 4\u22c5\u03c0 "
]
}
],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"_.simplify()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\frac{3 \\left(x -1\\right)^{2} + 3 \\left(y -1\\right)^{2} + 3 \\left(z -1\\right)^{2} -3}{\\pi}$$"
],
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAL8AAAAjCAYAAADFTts+AAAABHNCSVQICAgIfAhkiAAABM5JREFU\neJzt3FmoVVUcx/HPdcohu2CTSZJDmKUFpZZlg5nUQ0gZRpmGBpFlEZVBFBU+FEE0PPTUQ0REQjM9\nRflSSBCGFqJR0ASRaYUNDqWZ9rDWvWffc890z9n7HLx3fWGz1zp777X+v/Xfw3+ttfchkRiidHXa\ngAYZhrsxJuaf7qAt7WSo6R5qehtiCSbH9NuY00Fb2slQ091WvcOKLDxHpmN5TH+r1EDtYGob6zoV\nYzP5TuruBENNb0Mch/Ex/QEmtaneKVjRprpgBB7L5Dulu1O0Ve/wTPryuFyIB/AXvovbluIbHCnA\nhvHYgE/xZ/xtBiZgT8z/h0O4LNrwfk5119IMD+P5nOoqp5LuI/gHi7BNcbqpr70In9fzdd5662ns\n5TesiukbcSAauwSzWjSiGrdjPY4Kd9ksazEyk+/G4wMs/54626tphvNw7wDra5RauuGVTLoZ3bSm\nvQifN+rrZvVWopbGPszGuJhehn/jju3ocVdqkLOU4j/CKMDIuCxusNz1dbZX0wyP4twG62mWaif/\nczgzppvRTWvai/R5PV83q7cStTT26fBux/6YvkFovIMYVVbgAqwWwoGVWIN3MK1FQ8v5GvNi+hY8\nhZ/xC3blVEclzXtjfh6+zOw7XLhDvSw8RuEkbMnJlizbMFdxuqmufZT+Pn8Cv+ISTMT8HO2g5Ou8\n9dbyrxFlO18gxJv7hZP7ROzLbD8BM/ESrsMjuEholAMtGlqJ7rjeEJciKNfcw1ghBu1hKd4U4tEp\n2Iwr8WMBNu0RYuFnFKebytrLfT4VW+P6JhwWYva86VaMn6v5t9/JvzUud2ATrsDxme2H8GpMX4x3\nY3pVZp+1aj8FPsPrDRp+uMH9CMOE9+k7cXcpRmfye/Fk2XGVNO/TdzAANsb1YiF+hYX4OKbz1P23\n/nffWuSp/Xd9ff59XIYJT71sB7gTvh5ondX828t87FYa054pxGbL8GyVSrYohSXdVfZplEpx4PRo\ncCusr7Gtlmb4sMIxN+OtTH6HcGdplmox/zLc2UK5tKa93OddSjeD04UhyWYpytfl1NPYG/MfFhy5\nM+anCZ2DL4QrqafztQT3C8bPxudCw6zO2XC4WrGP/FqaCQ1XPjIwSZh8IbTBpMz+eXJapp4iqKc9\n6/M5uCvmTxH8fzBne4rwdT2NvVfzTiG+XSRcMddjndAIO3ANvhJCnVlCXLhJ6PidjzeUOhYDYYXw\nGJsrOHyiEEvPEOLeH5ooM8tCfFRlWy3NBI1jhUd+D7uFIbORwkmwE681YVc13T2swYuCs5ploea1\n9/i8S5h32IT3hLvzg0rzLwOhaF+XU0/joOehFo6doH+MnGWjMCyXN6PlM7HWivZEwjqcHNOz8JNw\nN1wgDKONqXJcK9yGswsoN1FG+YhGoi+bhbHnLUL/qAtn4CohBPgj5/omC4MHn+RcbiKRSCQSiUQi\nkUgMOXqmw4921IpEIpFIJBKJxCCjCy8IE2S7hVdGdsV1M69JJBLHDCuFmeJRwivIw4TvhBMdIM3w\ntpdtwhdR1wovzI0T3gzdXOugRDEcK//bM9i4Vfgaappj51/zBh3p5G8/5whvbh4SXpku+iP5RBXS\nyd9+lit9uLFd+OeCRCKRSCQSiUQikUgkEol8+B/rc0CgaGRycAAAAABJRU5ErkJggg==\n",
"prompt_number": 9,
"text": [
" 2 2 2 \n",
"3\u22c5(x - 1) + 3\u22c5(y - 1) + 3\u22c5(z - 1) - 3\n",
"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
" \u03c0 "
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Hartree energy $E_H$ is: "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"integrate(Vh*n, (x, 0, 2), (y, 0, 2), (z, 0, 2))/2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\frac{128}{35 \\pi}$$"
],
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAeCAYAAAA2Lt7lAAAABHNCSVQICAgIfAhkiAAAAhNJREFU\nSInt1l1oz1EYB/DPjLHlT65MbrYpF+Z1CmUh7WJJirLClgtL0coupHCBu0WuuBM3Xm7dkBsXaIlw\nNxrJS8lLucDy0ixzcZ7Z6d/GRhq1b/36ne9zznme5zznOec5/GWUFvECLuAW3mfy5WhCIw7ieXxQ\njRYsxjr04PVQxlpxGP2oyuRT0ZHxJnzC7ODHsr6ScPCnKDawEN8wJ/i0GNMU/BHmZ+NPjdZAiRSi\nkuC1MWZJ8D3oxVEcwKLRGijGWRzP+EwpLE/wCmv/xMCO8HRgNQVcRAWm4Aje5fMn/spahvXx3xfK\nKlGH69Kmw6HQuQzPYMIIla+WQnE5FDdiFh5L6ZmjFLeHWsE21Ee7A504iRpcktI1x3R8wBVpT15g\nMq4aPCPj+AcwkM/9Y+rFf4NV0r3einNoCPkZ9OEL7mDp7xp4i+3R3iwd/4JUIyqlkztq5Cd5DZ5G\nux+Tsr4hK9RIkN9FXfgY7U2S5z0oxy5sxWmpHpAy8ETMe4PucKQb54czWIe9UlWqCFkzyqLdgIfh\nWHMYK0N7yPaPdGU7cU+64PIwVknhy6vWBilBatFWrGggRCukZVYHvxGraZdeF+UhL8T/a6ajRXqF\n1Bg8uD8w4F0f7uNl8JpQci3GfA75StzEg+DzpOLTK4V0wXAG7kr53ia9IOqlCtaJGdK+lGIuNmbz\ntxh8pnRhd7GBcYw9vgP3HGdY/swRpAAAAABJRU5ErkJggg==\n",
"prompt_number": 10,
"text": [
"128 \n",
"\u2500\u2500\u2500\u2500\n",
"35\u22c5\u03c0"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are solving a Poisson equation:\n",
"$$\\nabla^2 V_H(x, y, z) = -4\\pi n(x, y, z)$$\n",
"with\n",
"$$n(x, y, z) = {3\\over\\pi} ((x-1)^2 + (y-1)^2 + (z-1)^2 - 1)$$\n",
"on the domain $[0, 2] \\times [0, 2] \\times [0, 2]$ with periodic boundary condition. This charge density is net neutral. The solution is given by:\n",
"$$\n",
"V_H({\\bf x}) = \\int {n({\\bf y})\\over |{\\bf x}-{\\bf y}|} d^3 y\n",
"$$\n",
"where ${\\bf x}=(x, y, z)$. In reciprocal space\n",
"$$\n",
"V_H({\\bf G}) = 4\\pi {n({\\bf G})\\over G^2}\n",
"$$\n",
"where ${\\bf G}$ are the reciprocal space vectors. I am interested in the Hartree energy:\n",
"$$\n",
"E_H = {1\\over 2} \\int {n({\\bf x}) n({\\bf y})\\over |{\\bf x}-{\\bf y}|} d^3 x d^3 y\n",
"= {1\\over 2} \\int V_H({\\bf x}) n({\\bf x}) d^3 x\n",
"$$\n",
"In reciprocal space this becomes (after discretization):\n",
"$$\n",
"E_H = 2\\pi \\sum_{{\\bf G}\\ne 0} {|n({\\bf G})|^2\\over G^2}\n",
"$$\n",
"The ${\\bf G}=0$ term is omitted, which effectively makes the charge density net neutral (and since it is already neutral, then everything is consistent).\n",
"\n",
"For the test problem above, this can be evaluated analytically and one gets:\n",
"$$\n",
"E_H = {128\\over 35\\pi} = 1.16410...\n",
"$$\n",
"Now we implement the FFT solver in NumPy below and plot the convergence graphs with respect to this exact energy.\n",
"\n",
"\n",
"This problem has also been discussed at:\n",
"\n",
"http://scicomp.stackexchange.com/questions/7097/convergence-rate-of-fft-poisson-solver/7169\n",
"\n",
"[Computational Science StackExchange](http://scicomp.stackexchange.com/) is a great site to ask these questions!"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from numpy import empty, pi, meshgrid, linspace, sum\n",
"from numpy.fft import fftn, fftfreq\n",
"E_exact = 128/(35*pi)\n",
"print \"Hartree Energy (exact): %.15f\" % E_exact\n",
"f = open(\"conv.txt\", \"w\")\n",
"for N in range(3, 200, 10):\n",
" print \"N =\", N\n",
" L = 2.\n",
" x1d = linspace(0, L, N+1)[:-1]\n",
" x, y, z = meshgrid(x1d, x1d, x1d)\n",
"\n",
" nr = 3 * ((x-1)**2 + (y-1)**2 + (z-1)**2 - 1) / pi\n",
" ng = fftn(nr) / N**3\n",
"\n",
" G1d = N * fftfreq(N) * 2*pi/L\n",
" kx, ky, kz = meshgrid(G1d, G1d, G1d)\n",
" G2 = kx**2+ky**2+kz**2\n",
" G2[0, 0, 0] = 1 # omit the G=0 term\n",
"\n",
" tmp = 2*pi*abs(ng)**2 / G2\n",
" tmp[0, 0, 0] = 0 # omit the G=0 term\n",
" E = sum(tmp) * L**3\n",
" print \"Hartree Energy (calculated): %.15f\" % E\n",
" f.write(\"%d %.15f\\n\" % (N, E))\n",
"f.close()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Hartree Energy (exact): 1.164104726615006\n",
"N = 3\n",
"Hartree Energy (calculated): 2.446338611821947\n",
"N = 13\n",
"Hartree Energy (calculated): 1.213786470434117\n",
"N = 23\n",
"Hartree Energy (calculated): 1.179663010471846\n",
"N = 33\n",
"Hartree Energy (calculated): 1.171624324575022\n",
"N = 43\n",
"Hartree Energy (calculated): 1.168524684513086"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 53\n",
"Hartree Energy (calculated): 1.167011254992898"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 63\n",
"Hartree Energy (calculated): 1.166160629019379"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 73\n",
"Hartree Energy (calculated): 1.165635416812430"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 83\n",
"Hartree Energy (calculated): 1.165288523120677"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 93\n",
"Hartree Energy (calculated): 1.165047479421731"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 103\n",
"Hartree Energy (calculated): 1.164873217880501"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 113\n",
"Hartree Energy (calculated): 1.164743164819577"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 123\n",
"Hartree Energy (calculated): 1.164643537882899"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 133\n",
"Hartree Energy (calculated): 1.164565535654283"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 143\n",
"Hartree Energy (calculated): 1.164503323719686"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 153\n",
"Hartree Energy (calculated): 1.164452910534660"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 163\n",
"Hartree Energy (calculated): 1.164411490567212"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 173\n",
"Hartree Energy (calculated): 1.164377045217771"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 183\n",
"Hartree Energy (calculated): 1.164348092059736"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"N = 193\n",
"Hartree Energy (calculated): 1.164323522587376"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from pylab import plot, semilogy\n",
"from numpy import loadtxt, pi\n",
"D = loadtxt(\"conv.txt\")\n",
"N = D[:, 0]\n",
"E = D[:, 1]\n",
"E_exact = 128/(35*pi)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"figure(figsize=(8, 6), dpi=80)\n",
"semilogy(N, E-E_exact, \"k-\")\n",
"grid()\n",
"title(\"Convergence of an FFT Poisson solver (semilogy)\")\n",
"xlabel(\"N (number of PW in each direction)\")\n",
"ylabel(\"E - E_exact [a.u.]\")\n",
"savefig(\"fft_convergence_semilogy.png\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nYII=\n"
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"figure(figsize=(8, 6), dpi=80)\n",
"calculated = E-E_exact\n",
"loglog(N, E-E_exact, \"ko\", label=\"calculated\")\n",
"predicted = 1/N**2\n",
"predicted = predicted * (calculated[-1] / predicted[-1])\n",
"loglog(N, predicted, \"g-\", label=\"$1/N^2$\")\n",
"grid()\n",
"title(\"Convergence of an FFT Poisson solver (loglog)\")\n",
"xlabel(\"N (number of PW in each direction)\")\n",
"ylabel(\"E - E_exact [a.u.]\")\n",
"legend()\n",
"savefig(\"fft_convergence_loglog.png\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAGOCAYAAACZjwraAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYVGX/P/D3sAi4IKC4sCgJ5lKaFWphCj1POiguqZko\nmriUfksw/ea3NMzJ0tJcMnpKcyNxyfxJofIwUumoaaFlpqWZkiiiZiKyKIsM9+8PYnLYBOYw58zM\n+3VdXNecZc75zHDPfObc21EJIQSIiIjIZtjJHQARERGZF5M/ERGRjWHyJyIisjFM/kRERDaGyZ+I\niMjGMPkTERHZGCZ/Ipn9+eef6NevH1xdXTF79my5w5HFxYsX0axZM1jyyOPIyEjMmzfPbOebM2cO\nVq5cCQDQ6XTw9fWV5Lh2dnb4448/TD7OM888A61WK0FE1BCY/KlGW7ZsQWBgIJo1awYvLy8MGjQI\nhw4dkjssq/LJJ5+gVatWyM3NxXvvvdeg54qMjISTkxOaNWtm+Nu+fTsAwM/PD40bNzba9s477xge\nu7i4wMHBwbDcrVu3SsdPT0+HnZ2dYZ/77rsPixcvvmdc7dq1Q15eHlQqleSv2VxUKpXZ4v/rr78Q\nHx+PadOmmeV89fHqq68iJiZG7jCoGkz+VK3ly5dj5syZiImJwbVr15CRkYGXXnoJO3fulDs0g5KS\nErlDMNmFCxfQpUsXs5xLpVLh1VdfRV5enuFv1KhRhm27d+822jZnzhzD41WrViEoKMiwfPLkyWrP\nk5OTg7y8PGzduhULFizAnj17zPL65CZ1zYUQospjxsXFISwsDE5OTpKeT0o9e/ZEbm4ufvzxR7lD\noSow+VOVcnJyMH/+fHz00Ud4+umn4eLiAnt7e4SFhRmu5IqKivDyyy/D29sb3t7emDlzJoqLiwGU\nVUP6+Phg+fLlaN26Nby8vBAXFwcASE1NRdu2bY2+1L744gs89NBDAIDS0lK8++67CAgIQMuWLTF6\n9GhkZ2cD+OfKcv369Wjfvj2eeuoplJaW4n//93/h6emJDh064MMPP4SdnR1KS0sNr2Xy5Mnw8vKC\nj48P5s2bZ9gWFxeHJ554ArNnz4aHhwc6dOhgVFV548YNTJw4Ed7e3vDw8MDw4cMN23bv3o0ePXrA\n3d0dffr0qTEZHj58GD179oSbmxt69eqF7777DkDZlfjGjRuxZMkSNGvWDHv37q303KSkJDz88MNo\n3rw52rVrhzfffNOwrfz92LhxI9q3bw9PT08sWrSolv/luqkuEdXksccewwMPPIBff/0VQgi8/fbb\n8PPzQ+vWrTFhwgTk5uYC+Od13P1/8ff3h6urKzp06IAtW7YAAM6dO4fg4GC4ubnB09MT4eHhhnNV\n9x4DQEhICN544w088cQTcHV1hVqtRlZWVpUxX79+HYMHD4a7uztatGiBfv36GV736dOnERISAnd3\ndzz44IPYtWuX0XPLr/y7dOmCpKQkw/qSkhJ4enri+PHjAIDvv/8eQUFBcHd3R48ePbB//36jWGNi\nYtCnTx80adIE58+frxSjVqtFcHBwte97TXFmZWVhyJAhaN68OXr16oWYmBj07du3yuPk5OTgueee\nQ6tWreDn54eFCxca3ot7fe7KX8vd7wMpiCCqQnJysnBwcBB6vb7afebNmycef/xx8ddff4m//vpL\nBAUFiXnz5gkhhNi3b59wcHAQ8+fPFyUlJeK///2vaNy4sbh586YQQgh/f3/x1VdfGY71zDPPiMWL\nFwshhHj//ffF448/LjIzM0VxcbGYOnWqGDNmjBBCiPPnzwuVSiUmTJggbt++LQoKCsTHH38sunbt\nKjIzM0V2drb497//Lezs7AyxP/3002LatGni9u3b4tq1a6JXr15i9erVQgghNmzYIBwdHcXatWtF\naWmp+Pjjj4WXl5chrkGDBonw8HBx8+ZNcefOHXHgwAEhhBDHjh0TrVq1EkeOHBGlpaXi008/FX5+\nfqKoqKjS+5SVlSXc3NzEpk2bhF6vF1u3bhXu7u7ixo0bQgghIiMjDe9bVXQ6nfjll1+EEEKcOHFC\ntG7dWnz55ZdG78cLL7wgCgsLxc8//yycnJzE6dOnqzxWZGSkiImJqXKbn5+f+Prrr6uNY8OGDeKJ\nJ56odvvd8ZSUlIjS0lLx7bffisaNG4u9e/eKdevWiYCAAHH+/HmRn58vRowYIcaPH2/0PL1eL/Lz\n84Wrq6v4/fffhRBCXL16Vfz6669CCCHCw8PFokWLhBBCFBUViUOHDgkh7v0eBwcHi4CAAHH27FlR\nUFAgQkJCxGuvvVbla3jttdfEtGnTRElJiSgpKRHffvutEEKI4uJi4e/vL9555x1x584dsXfvXtGs\nWTNx5swZw3tb/n9csGCBiIiIMBxz9+7domvXrkIIIS5duiRatGghkpOThRBCfPXVV6JFixbi+vXr\n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\nTkSuQmCC\n"
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exercise"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Rerun the above FFT calculation with the following potential:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nr = 3*pi*exp(sin(pi*x)*sin(pi*y)*sin(pi*z))/4"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'pi' is not defined",
"output_type": "pyerr",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-3-52aa5320e001>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mnr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m3\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mpi\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mexp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpi\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0msin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpi\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0msin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpi\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mz\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mNameError\u001b[0m: name 'pi' is not defined"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot convergence study. Why is the convergence rate different?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solution"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from numpy import empty, pi, meshgrid, linspace, sum, exp, sin\n",
"from numpy.fft import fftn, fftfreq\n",
"f = open(\"conv2.txt\", \"w\")\n",
"for N in range(3, 30, 2):\n",
" print \"N =\", N\n",
" L = 2.\n",
" x1d = linspace(0, L, N+1)[:-1]\n",
" x, y, z = meshgrid(x1d, x1d, x1d)\n",
"\n",
" nr = 3*pi*exp(sin(pi*x)*sin(pi*y)*sin(pi*z))/4\n",
" ng = fftn(nr) / N**3\n",
"\n",
" G1d = N * fftfreq(N) * 2*pi/L\n",
" kx, ky, kz = meshgrid(G1d, G1d, G1d)\n",
" G2 = kx**2+ky**2+kz**2\n",
" G2[0, 0, 0] = 1 # omit the G=0 term\n",
"\n",
" tmp = 2*pi*abs(ng)**2 / G2\n",
" tmp[0, 0, 0] = 0 # omit the G=0 term\n",
" E = sum(tmp) * L**3\n",
" print \"Hartree Energy (calculated): %.15f\" % E\n",
" f.write(\"%d %.15f\\n\" % (N, E))\n",
"f.close()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"N = 3\n",
"Hartree Energy (calculated): 1.580426011908313\n",
"N = 5\n",
"Hartree Energy (calculated): 1.414548280420217\n",
"N = 7\n",
"Hartree Energy (calculated): 1.413994578897476\n",
"N = 9\n",
"Hartree Energy (calculated): 1.413991759887669\n",
"N = 11\n",
"Hartree Energy (calculated): 1.413991748461275\n",
"N = 13\n",
"Hartree Energy (calculated): 1.413991748422897\n",
"N = 15\n",
"Hartree Energy (calculated): 1.413991748422800\n",
"N = 17\n",
"Hartree Energy (calculated): 1.413991748422796\n",
"N = 19\n",
"Hartree Energy (calculated): 1.413991748422795\n",
"N = 21\n",
"Hartree Energy (calculated): 1.413991748422802\n",
"N = 23\n",
"Hartree Energy (calculated): 1.413991748422796\n",
"N = 25\n",
"Hartree Energy (calculated): 1.413991748422800\n",
"N = 27\n",
"Hartree Energy (calculated): 1.413991748422803\n",
"N = 29\n",
"Hartree Energy (calculated): 1.413991748422796"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from pylab import plot, semilogy\n",
"from numpy import loadtxt, pi\n",
"D = loadtxt(\"conv2.txt\")\n",
"N = D[:, 0]\n",
"E = D[:, 1]\n",
"E_exact = E[-1]\n",
"\n",
"figure(figsize=(8, 6), dpi=80)\n",
"calculated = E-E_exact\n",
"semilogy(N, E-E_exact, \"ko-\", label=\"calculated\")\n",
"grid()\n",
"title(\"Convergence of an FFT Poisson solver (loglog)\")\n",
"xlabel(\"N (number of PW in each direction)\")\n",
"ylabel(\"E - E_exact [a.u.]\")\n",
"legend()\n",
"savefig(\"fft_convergence_loglog.png\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n9Mslfv8AAAAASUVORK5CYII=\n"
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}

Xet Storage Details

Size:
122 kB
·
Xet hash:
218470d187f3567977566e50c7073c9273f6b70ee8a1659dc4ca30da4b6d6c57

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.