{ "cells": [ { "cell_type": "markdown", "id": "b11ce980", "metadata": {}, "source": [ "# Quantum mechanics with BraketLab\n", "\n", "Author Audun Skau Hansen ✉️ \n", "\n", "The Hylleraas Centre for Quantum Molecular Sciences, 2022\n", "\n", "---" ] }, { "cell_type": "markdown", "id": "d9bf3f14", "metadata": {}, "source": [ "## Overview\n", "\n", "This is a brief tutorial on some main functionality of BraketLab. The goal is to make you comfortable with using the software to solve exercises in the coming sessions. Check out the full documentation for a more in-depth introduction." ] }, { "cell_type": "markdown", "id": "c6fc3f30", "metadata": {}, "source": [ "## A baby leap\n", "\n", "Let's just jump into the fun:" ] }, { "cell_type": "code", "execution_count": 1, "id": "d44b0693", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d9ab206f48e24adea6fde7239723a127", "version_major": 2, "version_minor": 0 }, "text/plain": [ "BraketView(ao=[1], fragment_shader='uniform vec3 user_color;\\nuniform float time;\\n\\nvarying vec2 vUv;\\nvaryin…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import braketlab as bk\n", "import numpy as np\n", "\n", "# make some kets\n", "p1 = bk.basisbank.get_gto(1.0, 4,-2, position = np.array([-.2,0,0]))\n", "p2 = bk.basisbank.get_gto(1.0, 4,-1, position = np.array([-.1,0,0]))\n", "p3 = bk.basisbank.get_gto(1.0, 4, 0, position = np.array([ .0,0,0]))\n", "p4 = bk.basisbank.get_gto(1.0, 4, 1, position = np.array([ .1,0,0]))\n", "p5 = bk.basisbank.get_gto(1.0, 4, 2, position = np.array([ .2,0,0]))\n", "\n", "# set some energies\n", "p1.energy = [.5]\n", "p2.energy = [.6]\n", "p3.energy = [.7]\n", "p4.energy = [.8]\n", "p5.energy = [.9]\n", "\n", "# display the sum of the kets\n", "(p1+p2+p3+p4+p5).view()" ] }, { "cell_type": "code", "execution_count": null, "id": "5ff80629", "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.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "0c430b3c770b49e9a6a6a7dc53ee0513": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "170f2444cab14c0a8e1ab2abdfd6f609": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "91e8b2edc4f945fcaaa1fdbf5b71503f": { "model_module": "evince", "model_module_version": "^0.23.0", "model_name": "BraketModel", "state": { "_model_module_version": "^0.23.0", "_view_module_version": "^0.23.0", "ao": [ 1 ], "fragment_shader": "uniform vec3 user_color;\nuniform float time;\n\nvarying vec2 vUv;\nvarying vec3 pos;\nvarying vec3 tex;\nvarying float q;\nvarying float csI;\nvarying float csR;\nvarying float cs0;\nvarying float cs1;\nvarying float cs2;\nvarying float cs3;\nvarying float cs4;\nvarying float cs;\n\nvoid main() {\n\n vec2 p = vUv;\n float q = tex[0]*tex[0] +tex[1]*tex[1] +tex[2]*tex[2] ;\n float cs0 = 1.2442006728041328*tex[1]*(tex[0] + 0.20000000000000001)*(7.0*pow(tex[2], 2.0) - pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] + 0.20000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] + 0.20000000000000001, 2.0));\n float cs1 = tex[1]*(-2.6393481986900014*tex[2]*pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] + 0.10000000000000001, 2.0), 1.0) + 6.1584791302766702*pow(tex[2], 3.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] + 0.10000000000000001, 2.0));\n float cs2 = (-4.173175923061522*pow(q, 1.0)*pow(tex[2], 2.0) + 0.41731759230615217*pow(q, 2.0) + 4.8687052435717755*pow(tex[2], 4.0))*exp(-1.0*q);\n float cs3 = 0.8797827328966672*tex[2]*(tex[0] - 0.10000000000000001)*(7.0*pow(tex[2], 2.0) - 3.0*pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] - 0.10000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] - 0.10000000000000001, 2.0));\n float cs4 = -0.62210033640206641*(pow(tex[1], 2.0) - pow(tex[0] - 0.20000000000000001, 2.0))*(7.0*pow(tex[2], 2.0) - pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] - 0.20000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] - 0.20000000000000001, 2.0));\n float csI = -1.0*cs0*sin(0.500000*time) + -1.0*cs1*sin(0.600000*time) + -1.0*cs2*sin(0.700000*time) + -1.0*cs3*sin(0.800000*time) + -1.0*cs4*sin(0.900000*time) ;\n float csR = cs0*cos(0.500000*time) + cs1*cos(0.600000*time) + cs2*cos(0.700000*time) + cs3*cos(0.800000*time) + cs4*cos(0.900000*time) ;\n gl_FragColor = gl_FragColor + vec4(csR, csI, -1.0*csR, .1);\n}", "layout": "IPY_MODEL_170f2444cab14c0a8e1ab2abdfd6f609", "pos": [], "surf": [] } }, "b8f99d90870a4f0fa160146baaa794ba": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d9ab206f48e24adea6fde7239723a127": { "model_module": "evince", "model_module_version": "^0.23.0", "model_name": "BraketModel", "state": { "_model_module_version": "^0.23.0", "_view_module_version": "^0.23.0", "ao": [ 1 ], "fragment_shader": "uniform vec3 user_color;\nuniform float time;\n\nvarying vec2 vUv;\nvarying vec3 pos;\nvarying vec3 tex;\nvarying float q;\nvarying float csI;\nvarying float csR;\nvarying float cs0;\nvarying float cs1;\nvarying float cs2;\nvarying float cs3;\nvarying float cs4;\nvarying float cs;\n\nvoid main() {\n\n vec2 p = vUv;\n float q = tex[0]*tex[0] +tex[1]*tex[1] +tex[2]*tex[2] ;\n float cs0 = 1.2442006728041328*tex[1]*(tex[0] + 0.20000000000000001)*(7.0*pow(tex[2], 2.0) - pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] + 0.20000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] + 0.20000000000000001, 2.0));\n float cs1 = tex[1]*(-2.6393481986900014*tex[2]*pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] + 0.10000000000000001, 2.0), 1.0) + 6.1584791302766702*pow(tex[2], 3.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] + 0.10000000000000001, 2.0));\n float cs2 = (-4.173175923061522*pow(q, 1.0)*pow(tex[2], 2.0) + 0.41731759230615217*pow(q, 2.0) + 4.8687052435717755*pow(tex[2], 4.0))*exp(-1.0*q);\n float cs3 = 0.8797827328966672*tex[2]*(tex[0] - 0.10000000000000001)*(7.0*pow(tex[2], 2.0) - 3.0*pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] - 0.10000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] - 0.10000000000000001, 2.0));\n float cs4 = -0.62210033640206641*(pow(tex[1], 2.0) - pow(tex[0] - 0.20000000000000001, 2.0))*(7.0*pow(tex[2], 2.0) - pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] - 0.20000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] - 0.20000000000000001, 2.0));\n float csI = -1.0*cs0*sin(0.500000*time) + -1.0*cs1*sin(0.600000*time) + -1.0*cs2*sin(0.700000*time) + -1.0*cs3*sin(0.800000*time) + -1.0*cs4*sin(0.900000*time) ;\n float csR = cs0*cos(0.500000*time) + cs1*cos(0.600000*time) + cs2*cos(0.700000*time) + cs3*cos(0.800000*time) + cs4*cos(0.900000*time) ;\n gl_FragColor = gl_FragColor + vec4(csR, csI, -1.0*csR, .1);\n}", "layout": "IPY_MODEL_0c430b3c770b49e9a6a6a7dc53ee0513", "pos": [], "surf": [] } }, "de54679d98704fefb5e57bae6ffbade4": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "ebcd427c6c634618b93c8f7dd1f3fb8a": { "model_module": "evince", "model_module_version": "^0.20.0", "model_name": "BraketModel", "state": { "_model_module_version": "^0.20.0", "_view_module_version": "^0.20.0", "ao": [ 1 ], "fragment_shader": "uniform vec3 user_color;\nuniform float time;\n\nvarying vec2 vUv;\nvarying vec3 pos;\nvarying vec3 tex;\nvarying float q;\nvarying float csI;\nvarying float csR;\nvarying float cs0;\nvarying float cs1;\nvarying float cs2;\nvarying float cs3;\nvarying float cs4;\nvarying float cs;\n\nvoid main() {\n\n vec2 p = vUv;\n float q = tex[0]*tex[0] +tex[1]*tex[1] +tex[2]*tex[2] ;\n float cs0 = 1.2442006728041328*tex[1]*(tex[0] + 0.20000000000000001)*(7.0*pow(tex[2], 2.0) - pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] + 0.20000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] + 0.20000000000000001, 2.0));\n float cs1 = tex[1]*(-2.6393481986900014*tex[2]*pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] + 0.10000000000000001, 2.0), 1.0) + 6.1584791302766702*pow(tex[2], 3.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] + 0.10000000000000001, 2.0));\n float cs2 = (-4.173175923061522*pow(q, 1.0)*pow(tex[2], 2.0) + 0.41731759230615217*pow(q, 2.0) + 4.8687052435717755*pow(tex[2], 4.0))*exp(-1.0*q);\n float cs3 = 0.8797827328966672*tex[2]*(tex[0] - 0.10000000000000001)*(7.0*pow(tex[2], 2.0) - 3.0*pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] - 0.10000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] - 0.10000000000000001, 2.0));\n float cs4 = -0.62210033640206641*(pow(tex[1], 2.0) - pow(tex[0] - 0.20000000000000001, 2.0))*(7.0*pow(tex[2], 2.0) - pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] - 0.20000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] - 0.20000000000000001, 2.0));\n float csI = -1.0*cs0*sin(0.500000*time) + -1.0*cs1*sin(0.600000*time) + -1.0*cs2*sin(0.700000*time) + -1.0*cs3*sin(0.800000*time) + -1.0*cs4*sin(0.900000*time) ;\n float csR = cs0*cos(0.500000*time) + cs1*cos(0.600000*time) + cs2*cos(0.700000*time) + cs3*cos(0.800000*time) + cs4*cos(0.900000*time) ;\n gl_FragColor = gl_FragColor + vec4(csR, csI, -1.0*csR, .1);\n}", "layout": "IPY_MODEL_b8f99d90870a4f0fa160146baaa794ba", "pos": [], "surf": [] } }, "fff6d8b0eee34ad1bec0e811b357ab3d": { "model_module": "evince", "model_module_version": "^0.23.0", "model_name": "BraketModel", "state": { "_model_module_version": "^0.23.0", "_view_module_version": "^0.23.0", "ao": [ 1 ], "fragment_shader": "uniform vec3 user_color;\nuniform float time;\n\nvarying vec2 vUv;\nvarying vec3 pos;\nvarying vec3 tex;\nvarying float q;\nvarying float csI;\nvarying float csR;\nvarying float cs0;\nvarying float cs1;\nvarying float cs2;\nvarying float cs3;\nvarying float cs4;\nvarying float cs;\n\nvoid main() {\n\n vec2 p = vUv;\n float q = tex[0]*tex[0] +tex[1]*tex[1] +tex[2]*tex[2] ;\n float cs0 = 1.2442006728041328*tex[1]*(tex[0] + 0.20000000000000001)*(7.0*pow(tex[2], 2.0) - pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] + 0.20000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] + 0.20000000000000001, 2.0));\n float cs1 = tex[1]*(-2.6393481986900014*tex[2]*pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] + 0.10000000000000001, 2.0), 1.0) + 6.1584791302766702*pow(tex[2], 3.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] + 0.10000000000000001, 2.0));\n float cs2 = (-4.173175923061522*pow(q, 1.0)*pow(tex[2], 2.0) + 0.41731759230615217*pow(q, 2.0) + 4.8687052435717755*pow(tex[2], 4.0))*exp(-1.0*q);\n float cs3 = 0.8797827328966672*tex[2]*(tex[0] - 0.10000000000000001)*(7.0*pow(tex[2], 2.0) - 3.0*pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] - 0.10000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] - 0.10000000000000001, 2.0));\n float cs4 = -0.62210033640206641*(pow(tex[1], 2.0) - pow(tex[0] - 0.20000000000000001, 2.0))*(7.0*pow(tex[2], 2.0) - pow(pow(tex[1], 2.0) + pow(tex[2], 2.0) + pow(tex[0] - 0.20000000000000001, 2.0), 1.0))*exp(-1.0*pow(tex[1], 2.0) - 1.0*pow(tex[2], 2.0) - 1.0*pow(tex[0] - 0.20000000000000001, 2.0));\n float csI = -1.0*cs0*sin(0.500000*time) + -1.0*cs1*sin(0.600000*time) + -1.0*cs2*sin(0.700000*time) + -1.0*cs3*sin(0.800000*time) + -1.0*cs4*sin(0.900000*time) ;\n float csR = cs0*cos(0.500000*time) + cs1*cos(0.600000*time) + cs2*cos(0.700000*time) + cs3*cos(0.800000*time) + cs4*cos(0.900000*time) ;\n gl_FragColor = gl_FragColor + vec4(csR, csI, -1.0*csR, .1);\n}", "layout": "IPY_MODEL_de54679d98704fefb5e57bae6ffbade4", "pos": [], "surf": [] } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }