{ "cells": [ { "cell_type": "markdown", "id": "qubit-decay-title", "metadata": {}, "source": [ "# Qubit Decay with `mesolve`\n", "\n", "This tutorial builds the smallest open quantum system in OpenQuantumSim: a two-level atom with spontaneous emission. It compares the excited-state population against the analytic result $P_e(t)=e^{-\\gamma t}$." ] }, { "cell_type": "code", "execution_count": null, "id": "qubit-decay-imports", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import openquantumsim as oqs" ] }, { "cell_type": "code", "execution_count": null, "id": "qubit-decay-system", "metadata": {}, "outputs": [], "source": [ "gamma = 0.35\n", "atom = oqs.SpinSpace(0.5, label=\"atom\")\n", "\n", "H = 0.0 * oqs.sigmaz(atom)\n", "collapse = np.sqrt(gamma) * oqs.sigmam(atom)\n", "excited = oqs.basis(atom, \"up\")\n", "rho0 = oqs.ket2dm(excited)\n", "P_excited = oqs.Operator(oqs.ket2dm(excited), atom, \"P_excited\")\n", "times = np.linspace(0.0, 6.0, 61)" ] }, { "cell_type": "markdown", "id": "qubit-decay-backend-note", "metadata": {}, "source": [ "`mesolve` uses the Julia backend. Run `python setup_julia.py` once before executing this notebook locally." ] }, { "cell_type": "code", "execution_count": null, "id": "qubit-decay-run", "metadata": {}, "outputs": [], "source": [ "result = oqs.mesolve(\n", " H,\n", " rho0,\n", " times,\n", " c_ops=[collapse],\n", " e_ops=[P_excited],\n", " options=oqs.Options(rtol=1e-9, atol=1e-11),\n", ")\n", "\n", "analytic = np.exp(-gamma * times)\n", "np.max(np.abs(result.expect[0].real - analytic))" ] }, { "cell_type": "code", "execution_count": null, "id": "qubit-decay-plot", "metadata": {}, "outputs": [], "source": [ "ax = oqs.expect_plot(times, result.expect[0], label=\"OpenQuantumSim\")\n", "ax.plot(times, analytic, \"--\", label=\"analytic\")\n", "ax.legend()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "pygments_lexer": "ipython3" } }, "nbformat": 4, "nbformat_minor": 5 }