{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Optimization of an X-Gate for a Transmon Qubit" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "matplotlib 3.1.0\n", "matplotlib.pylab 1.16.4\n", "qutip 4.4.1\n", "krotov 0.3.0+dev\n", "scipy 1.2.1\n", "numpy 1.16.4\n", "CPython 3.6.9\n", "IPython 7.7.0\n" ] } ], "source": [ "# NBVAL_IGNORE_OUTPUT\n", "%load_ext watermark\n", "import os\n", "import qutip\n", "import numpy as np\n", "import scipy\n", "import matplotlib\n", "import matplotlib.pylab as plt\n", "import krotov\n", "from scipy.fftpack import fft\n", "from scipy.interpolate import interp1d\n", "%watermark -v --iversions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\newcommand{tr}[0]{\\operatorname{tr}}\n", "\\newcommand{diag}[0]{\\operatorname{diag}}\n", "\\newcommand{abs}[0]{\\operatorname{abs}}\n", "\\newcommand{pop}[0]{\\operatorname{pop}}\n", "\\newcommand{aux}[0]{\\text{aux}}\n", "\\newcommand{opt}[0]{\\text{opt}}\n", "\\newcommand{tgt}[0]{\\text{tgt}}\n", "\\newcommand{init}[0]{\\text{init}}\n", "\\newcommand{lab}[0]{\\text{lab}}\n", "\\newcommand{rwa}[0]{\\text{rwa}}\n", "\\newcommand{bra}[1]{\\langle#1\\vert}\n", "\\newcommand{ket}[1]{\\vert#1\\rangle}\n", "\\newcommand{Bra}[1]{\\left\\langle#1\\right\\vert}\n", "\\newcommand{Ket}[1]{\\left\\vert#1\\right\\rangle}\n", "\\newcommand{Braket}[2]{\\left\\langle #1\\vphantom{#2} \\mid #2\\vphantom{#1}\\right\\rangle}\n", "\\newcommand{op}[1]{\\hat{#1}}\n", "\\newcommand{Op}[1]{\\hat{#1}}\n", "\\newcommand{dd}[0]{\\,\\text{d}}\n", "\\newcommand{Liouville}[0]{\\mathcal{L}}\n", "\\newcommand{DynMap}[0]{\\mathcal{E}}\n", "\\newcommand{identity}[0]{\\mathbf{1}}\n", "\\newcommand{Norm}[1]{\\lVert#1\\rVert}\n", "\\newcommand{Abs}[1]{\\left\\vert#1\\right\\vert}\n", "\\newcommand{avg}[1]{\\langle#1\\rangle}\n", "\\newcommand{Avg}[1]{\\left\\langle#1\\right\\rangle}\n", "\\newcommand{AbsSq}[1]{\\left\\vert#1\\right\\vert^2}\n", "\\newcommand{Re}[0]{\\operatorname{Re}}\n", "\\newcommand{Im}[0]{\\operatorname{Im}}$\n", "\n", "In the previous examples, we have only optimized for state-to-state\n", "transitions, i.e., for a single objective. This example shows the optimization\n", "of a simple quantum gate, which requires multiple objectives to be fulfilled\n", "simultaneously (one for each state in the logical basis). We consider a\n", "superconducting \"transmon\" qubit and implement a single-qubit Pauli-X gate." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The transmon Hamiltonian" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The effective Hamiltonian of a single transmon depends on the capacitive energy\n", "$E_C=e^2/2C$ and the Josephson energy $E_J$, an energy due to the Josephson\n", "junction working as a nonlinear inductor periodic with the flux $\\Phi$. In the\n", "so-called transmon limit, the ratio between these two energies lies around\n", "$E_J / E_C \\approx 45$. The Hamiltonian for the transmon is\n", "\n", "$$\n", " \\op{H}_{0} = 4 E_C (\\hat{n}-n_g)^2 - E_J \\cos(\\hat{\\Phi})\n", "$$\n", "\n", "where $\\hat{n}$ is the number operator, which counts the relative number of Cooper pairs\n", "capacitively stored in the junction, and $n_g$ is the effective offset charge\n", "measured in Cooper pair charge units. The equation can be written in a truncated\n", "charge basis defined by the number operator $\\op{n} \\ket{n} = n \\ket{n}$ such\n", "that\n", "\n", "$$\n", " \\op{H}_{0}\n", " = 4 E_C \\sum_{j=-N} ^N (j-n_g)^2 \\ket{j} \\bra{j}\n", " - \\frac{E_J}{2} \\sum_{j=-N}^{N-1}\n", " (\\ket{j+1} \\bra{j} + \\ket{j} \\bra{j+1}).\n", "$$\n", "\n", "A voltage $V(t)$ applied to the circuit couples to the charge Hamiltonian\n", "$\\op{q}$, which in the (truncated) charge basis reads\n", "\n", "$$\n", " \\op{H}_1 = \\op{q} = \\sum_{j=-N} ^N -2n \\ket{n} \\bra{n}\\,.\n", "$$\n", "\n", "The factor 2 is due to the charge carriers in a superconductor being Cooper\n", "pairs. The total Hamiltonian is\n", "\n", "$$\n", " \\op{H} = \\op{H}_{0} + V(t) \\cdot \\op{H}_{1}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use a Gaussian voltage profile as the guess pulse:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "tlist = np.linspace(0, 10, 1000)\n", "\n", "def eps0(t, args):\n", " T = tlist[-1]\n", " return 4 * np.exp(-40.0 * (t / T - 0.5) ** 2)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def plot_pulse(pulse, tlist, xlimit=None):\n", " fig, ax = plt.subplots()\n", " if callable(pulse):\n", " pulse = np.array([pulse(t, None) for t in tlist])\n", " ax.plot(tlist, pulse)\n", " ax.set_xlabel('time (ns)')\n", " ax.set_ylabel('pulse amplitude')\n", " if xlimit is not None:\n", " ax.set_xlim(xlimit)\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pulse(eps0, tlist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The complete Hamiltonian is instantiated as\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def transmon_hamiltonian(Ec=0.386, EjEc=45, nstates=8, ng=0.0, T=10.0):\n", " \"\"\"Transmon Hamiltonian\n", "\n", " Args:\n", " Ec: capacitive energy\n", " EjEc: ratio `Ej` / `Ec`\n", " nstates: defines the maximum and minimum states for the basis. The\n", " truncated basis will have a total of ``2*nstates + 1`` states\n", "\n", " ng: offset charge\n", " T: gate duration\n", " \"\"\"\n", "\n", " Ej = EjEc * Ec\n", " n = np.arange(-nstates, nstates + 1)\n", " up = np.diag(np.ones(2 * nstates), k=-1)\n", " do = up.T\n", " H0 = qutip.Qobj(np.diag(4 * Ec * (n - ng) ** 2) - Ej * (up + do) / 2.0)\n", " H1 = qutip.Qobj(-2 * np.diag(n))\n", "\n", " return [H0, [H1, eps0]]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "H = transmon_hamiltonian()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define the logical basis $\\ket{0_l}$ and $\\ket{1_l}$ (not to be confused with\n", "the charge states $\\ket{n=0}$ and $\\ket{n=1}$) as the eigenstates of the drift\n", "Hamiltonian $\\op{H}_0$ with the lowest energy. The optimization goal is to find a\n", "potential $V_{opt}(t)$ such that after a given final time $T$ implements an\n", "X-gate on this logical basis.\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Energy of qubit transition is 6.914\n" ] } ], "source": [ "def logical_basis(H):\n", " H0 = H[0]\n", " eigenvals, eigenvecs = scipy.linalg.eig(H0.full())\n", " ndx = np.argsort(eigenvals.real)\n", " E = eigenvals[ndx].real\n", " V = eigenvecs[:, ndx]\n", " psi0 = qutip.Qobj(V[:, 0])\n", " psi1 = qutip.Qobj(V[:, 1])\n", " w01 = E[1] - E[0] # Transition energy between states\n", " print(\"Energy of qubit transition is %.3f\" % w01)\n", " return psi0, psi1\n", "\n", "psi0, psi1 = logical_basis(H)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also introduce the projectors $P_i = \\ket{\\psi _i}\\bra{\\psi _i}$ for the logical\n", "states $\\ket{\\psi _i} \\in \\{\\ket{0_l}, \\ket{1_l}\\}$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "proj0 = qutip.ket2dm(psi0)\n", "proj1 = qutip.ket2dm(psi1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The key insight for the realization of a quantum gate $\\Op{O}$ is that\n", "(by virtue of linearity)\n", "\n", "$$\\ket{\\Psi(t=0)} \\rightarrow \\ket{\\Psi(t=T)}\n", " = \\Op{U}(T, \\epsilon(t))\\ket{\\Psi(0)}\n", " = \\Op{O} \\ket{\\Psi(0)}\n", "$$\n", "\n", "is fulfilled for an arbitrary state $\\Ket{\\Psi(t=0)}$ if an only if\n", "$\\Op{U}(T, \\epsilon(t))\\ket{k} = \\Op{O} \\ket{k}$ for every state $\\ket{k}$ in\n", "logical basis, for the time evolution operator $\\Op{U}(T, \\epsilon(t))$ from\n", "$t=0$ to $t=T$ under the same control $\\epsilon(t)$.\n", "\n", "The function `krotov.gate_objectives` automatically sets up the corresponding\n", "objectives $\\forall \\ket{k}: \\ket{k} \\rightarrow \\Op{O} \\ket{k}$:\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { "data": { "text/plain": [ "[Objective[|Ψ₀(17)⟩ to |Ψ₁(17)⟩ via [H₀[17,17], [H₁[17,17], u₁(t)]]],\n", " Objective[|Ψ₁(17)⟩ to |Ψ₀(17)⟩ via [H₀[17,17], [H₁[17,17], u₁(t)]]]]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "objectives = krotov.gate_objectives(\n", " basis_states=[psi0, psi1], gate=qutip.operators.sigmax(), H=H\n", ")\n", "\n", "objectives" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dynamics of the guess pulse\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "guess_dynamics = [\n", " objectives[x].mesolve(tlist, e_ops=[proj0, proj1]) for x in [0, 1]\n", "]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def plot_population(result):\n", " '''Representation of the expected values for the initial states'''\n", " fig, ax = plt.subplots()\n", " ax.plot(result.times, result.expect[0], label='0')\n", " ax.plot(result.times, result.expect[1], label='1')\n", " ax.legend()\n", " ax.set_xlabel('time')\n", " ax.set_ylabel('population')\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:29:10.291810Z", "start_time": "2019-01-31T00:29:09.942317Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(guess_dynamics[0])\n", "plot_population(guess_dynamics[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define the desired shape of the update and the factor $\\lambda_a$, and then start the optimization" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def S(t):\n", " \"\"\"Scales the Krotov methods update of the pulse value at the time t\"\"\"\n", " return krotov.shapes.flattop(\n", " t, t_start=0.0, t_stop=10.0, t_rise=0.5, func='sinsq'\n", " )\n", "\n", "pulse_options = {H[1][1]: dict(lambda_a=1, update_shape=S)}\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " iter. J_T g_a_int J Delta_J_T Delta J secs\n", " 0 1.00e+00 0.00e+00 1.00e+00 n/a n/a 1\n", " 1 2.80e-01 3.41e-01 6.22e-01 -7.20e-01 -3.78e-01 6\n", " 2 2.12e-01 3.06e-02 2.43e-01 -6.81e-02 -3.75e-02 6\n", " 3 1.35e-01 3.28e-02 1.68e-01 -7.72e-02 -4.44e-02 6\n", " 4 9.79e-02 1.56e-02 1.13e-01 -3.71e-02 -2.15e-02 6\n", " 5 7.13e-02 1.11e-02 8.25e-02 -2.65e-02 -1.54e-02 5\n" ] } ], "source": [ "oct_result = krotov.optimize_pulses(\n", " objectives,\n", " pulse_options,\n", " tlist,\n", " propagator=krotov.propagators.expm,\n", " chi_constructor=krotov.functionals.chis_re,\n", " info_hook=krotov.info_hooks.print_table(\n", " J_T=krotov.functionals.J_T_re,\n", " show_g_a_int_per_pulse=True,\n", " unicode=False,\n", " ),\n", " check_convergence=krotov.convergence.Or(\n", " krotov.convergence.value_below(1e-3, name='J_T'),\n", " krotov.convergence.delta_below(1e-5),\n", " krotov.convergence.check_monotonic_error,\n", " ),\n", " iter_stop=5,\n", " parallel_map=(\n", " qutip.parallel_map,\n", " qutip.parallel_map,\n", " krotov.parallelization.parallel_map_fw_prop_step,\n", " ),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(this takes a while ...)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "lines_to_next_cell": 2, "scrolled": false }, "outputs": [], "source": [ "dumpfile = \"./transmonxgate_oct_result.dump\"\n", "if os.path.isfile(dumpfile):\n", " oct_result = krotov.result.Result.load(dumpfile, objectives)\n", "else:\n", " oct_result = krotov.optimize_pulses(\n", " objectives,\n", " pulse_options,\n", " tlist,\n", " propagator=krotov.propagators.expm,\n", " chi_constructor=krotov.functionals.chis_re,\n", " info_hook=krotov.info_hooks.print_table(\n", " J_T=krotov.functionals.J_T_re,\n", " show_g_a_int_per_pulse=True,\n", " unicode=False,\n", " ),\n", " check_convergence=krotov.convergence.Or(\n", " krotov.convergence.value_below(1e-3, name='J_T'),\n", " krotov.convergence.delta_below(1e-5),\n", " krotov.convergence.check_monotonic_error,\n", " ),\n", " iter_stop=1000,\n", " parallel_map=(\n", " qutip.parallel_map,\n", " qutip.parallel_map,\n", " krotov.parallelization.parallel_map_fw_prop_step,\n", " ),\n", " continue_from=oct_result\n", " )\n", " oct_result.dump(dumpfile)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Krotov Optimization Result\n", "--------------------------\n", "- Started at 2019-04-12 17:45:43\n", "- Number of objectives: 2\n", "- Number of iterations: 398\n", "- Reason for termination: Reached convergence: Δ(('info_vals', T[-1]),('info_vals', T[-2])) < 1e-05\n", "- Ended at 2019-04-12 18:20:47" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "oct_result" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def plot_convergence(result):\n", " fig, ax = plt.subplots()\n", " ax.semilogy(result.iters, np.array(result.info_vals))\n", " ax.set_xlabel('OCT iteration')\n", " ax.set_ylabel('error')\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_convergence(oct_result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimized pulse and dynamics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We obtain the following optimized pulse:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pulse(oct_result.optimized_controls[0], tlist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The oscillations in the control shape indicate non-negligible spectral broadening:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_spectrum(pulse, tlist, xlim=None):\n", "\n", " if callable(pulse):\n", " pulse = np.array([pulse(t, None) for t in tlist])\n", "\n", " dt = tlist[1] - tlist[0]\n", " n = len(tlist)\n", "\n", " w = np.fft.fftfreq(n, d=dt/(2.0*np.pi))\n", " # the factor 2π in the normalization means that \n", " # the spectrum is in units of angular frequency,\n", " # which is normally what we want\n", " \n", " spectrum = np.fft.fft(pulse) / n\n", " # normalizing the spectrum with n means that\n", " # the y-axis is independent of dt\n", " \n", " # we assume a real-valued pulse, so we throw away\n", " # the half of the spectrum with negative frequencies\n", " w = w[range(int(n / 2))]\n", " spectrum = np.abs(spectrum[range(int(n / 2))])\n", "\n", " fig, ax = plt.subplots()\n", " ax.plot(w, spectrum, '-o')\n", " ax.set_xlabel(r'$\\omega$')\n", " ax.set_ylabel('amplitude (arb. units)')\n", " if xlim is not None:\n", " ax.set_xlim(*xlim)\n", " plt.show(fig)\n", "\n", "\n", "plot_spectrum(oct_result.optimized_controls[0], tlist, xlim=(0, 40))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lastly, we verify that the pulse produces the desired dynamics $\\ket{0_l} \\rightarrow \\ket{1_l}$ and $\\ket{1_l} \\rightarrow \\ket{0_l}$: " ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:10.080643Z", "start_time": "2019-01-31T00:30:08.679560Z" } }, "outputs": [], "source": [ "opt_dynamics = [\n", " oct_result.optimized_objectives[x].mesolve(tlist, e_ops=[proj0, proj1])\n", " for x in [0, 1]\n", "]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:12.041672Z", "start_time": "2019-01-31T00:30:10.083759Z" } }, "outputs": [], "source": [ "opt_states = [\n", " #oct_result.optimized_objectives[x].mesolve(tlist) for x in [0, 1]\n", " # To make sure the problem really originates with qutip.mesolve,\n", " # we use qutip.mesolve instead of the Objective.mesolve wrapper\n", " qutip.mesolve(\n", " H=oct_result.optimized_objectives[x].H,\n", " rho0=oct_result.optimized_objectives[x].initial_state,\n", " tlist=tlist,\n", " )\n", " for x in [0, 1]\n", "]" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:12.263068Z", "start_time": "2019-01-31T00:30:12.043673Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(opt_dynamics[0])" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:12.460131Z", "start_time": "2019-01-31T00:30:12.266370Z" }, "lines_to_next_cell": 2 }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(opt_dynamics[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looking only at the population dynamics does not verify that the we have a *coherent* gate, i.e. that the basis transforms with the same global phase." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "def relative_phase(result):\n", "\n", " overlap_0 = np.angle(result[0].states[-1].overlap(psi1))\n", " overlap_1 = np.angle(result[1].states[-1].overlap(psi0))\n", "\n", " rel_phase = (overlap_0 - overlap_1) % (2 * np.pi)\n", " print(\"Final relative phase / 2π = %.2e\" % rel_phase)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Final relative phase / 2π = 5.55e-03\n" ] } ], "source": [ "relative_phase(opt_states)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Comparison with results obtained with QuTiP 4.3.1 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The file `opt_states_qutip431.dump` is the result of dumping the result of cell 23 when this notebook is run with QuTiP 4.3.1 instead of 4.4.1." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "with open(\"opt_states_qutip431.dump\", 'rb') as dump_fh:\n", " opt_states_qutip431 = pickle.load(dump_fh)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Final relative phase / 2π = 5.00e-03\n" ] } ], "source": [ "relative_phase(opt_states_qutip431)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "opt_states_qutip441 = opt_states" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.1465669591537164e-07" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 - abs(opt_states_qutip431[0].states[-1].overlap(opt_states_qutip441[0].states[-1]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Time Discretization Error" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the optimized pulse shows some oscillations (cf. the spectrum above),\n", "it is a good idea to check for any discretization error. To this end, we also\n", "propagate the optimization result using the same propagator that\n", "was used in the optimization (instead of `qutip.mesolve`). The main difference\n", "between the two propagations is that `mesolve` assumes piecewise constant\n", "pulses that switch between two points in `tlist`, whereas `propagate` assumes\n", "that pulses are constant on the intervals of `tlist`, and thus switches *on*\n", "the points in `tlist`." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:15.558501Z", "start_time": "2019-01-31T00:30:12.715401Z" } }, "outputs": [], "source": [ "opt_dynamics2 = [\n", " oct_result.optimized_objectives[x].propagate(\n", " tlist, e_ops=[proj0, proj1], propagator=krotov.propagators.expm\n", " )\n", " for x in [0, 1]\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The difference between the two propagations gives an indication of the error\n", "due to the choice of the piecewise constant time discretization. If this error\n", "were unacceptably large, we would need a smaller time step." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:15.565275Z", "start_time": "2019-01-31T00:30:15.560602Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time discretization error = 1.87e-05\n" ] } ], "source": [ "print(\n", " \"Time discretization error = %.2e\" %\n", " abs(opt_dynamics2[0].expect[1][-1] - opt_dynamics[0].expect[1][-1])\n", ")" ] } ], "metadata": { "hide_input": false, "jupytext": { "formats": "" }, "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.6.9" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }