diff --git a/notebooks/DickeModelExample.ipynb b/notebooks/DickeModelExample.ipynb index 8e88d96..d355d1e 100644 --- a/notebooks/DickeModelExample.ipynb +++ b/notebooks/DickeModelExample.ipynb @@ -4,21 +4,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### DISCLAIMER\n", - "To run this notebook, you'd neet to make changes to pyLIQTR in your local environment. The reason for this is that pyLIQTR's PhaseEstimation class assumes that the Hamiltonian it'd receive as input is a fermionic operator, and it'd unconditionally perform a Jordan-Wigner transformation on it. Since our Hamiltonian is not a Fermionic one, this would cause an error. As such, the following changes need to be made to your environment. In the following path:\n", - "```\n", - "LOCAL_ENV/lib/ENV_PYTHON_VERSION/site-packages/pyLIQTR/PhaseEstimation/pe_gates.py\n", - "```\n", - "perform the following changes:\n", - "\n", - "```python\n", - "self.jw_ham = jordan_wigner(self.trotter_args['mol_ham'])\n", - "```\n", - "will be changed to\n", - "```python\n", - "self.jw_ham = self.trotter_args['mol_ham']\n", - "```\n", - "\n", "# Dicke model in the ultrastrong coupling regime\n", "When studying nano-materials, it is critical to model the interactions between light and matter. These interactions are largely governed by the strength of the coupling between optically active quantum nanoparticles which can be described by two level quantum emitters, and light (photons) which can be represented by a bosonic cavity mode. This type of interaction motivates both the Dicke model and Tavis-Cummings model, which will be outlined below.\n", "\n", @@ -52,28 +37,25 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 9, "metadata": { "tags": [] }, "outputs": [], "source": [ "import time\n", - "import openfermion as of\n", - "import cmath\n", "import numpy as np\n", - "from pyLIQTR.PhaseEstimation.pe import PhaseEstimation\n", - "from networkx import path_graph, set_node_attributes, get_node_attributes, draw, draw_networkx_edge_labels\n", + "from networkx import get_node_attributes, draw\n", "from qca.utils.algo_utils import gsee_resource_estimation\n", - "from qca.utils.utils import circuit_estimate, EstimateMetaData\n", - "from qca.utils.hamiltonian_utils import (generate_two_orbital_nx, nx_to_two_orbital_hamiltonian,\n", + "from qca.utils.utils import EstimateMetaData\n", + "from qca.utils.hamiltonian_utils import (\n", " generate_dicke_model_nx, dicke_model_qubit_hamiltonian, tavis_cummings_model_qubit_hamiltonian,\n", " bosonic_annihilation_operator, bosonic_creation_operator, bosonic_number_operator)" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 10, "metadata": { "tags": [] }, @@ -162,7 +144,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -173,16 +155,30 @@ ], "source": [ "#Generating a 20x20 Fermi Hubbard model with a single band. The ratio between Tunneling and Coulomb parameters can be swept to search for the appropriate mean electron filling.\n", - "\n", "n_s = 3\n", "n_b = 2\n", - "g_dicke = generate_dicke_model_nx(n_s=n_s, n_b=n_b)\n", + "g_dicke = generate_dicke_model_nx(\n", + " n_s=n_s,\n", + " n_b=n_b\n", + ")\n", "\n", "creation = bosonic_creation_operator(n_b)\n", "annihilation = bosonic_annihilation_operator(n_b)\n", "number = bosonic_number_operator(n_b)\n", - "H_dicke = dicke_model_qubit_hamiltonian(n_s = n_s, n_b = n_b, omega_c = 1, omega_o = 1, lam = 1)\n", - "H_tavis_cummings = tavis_cummings_model_qubit_hamiltonian(n_s = n_s, n_b = n_b, omega_c = 1, omega_o = 1, lam = 1)\n", + "H_dicke = dicke_model_qubit_hamiltonian(\n", + " n_s = n_s,\n", + " n_b = n_b,\n", + " omega_c = 1,\n", + " omega_o = 1,\n", + " lam = 1\n", + ")\n", + "H_tavis_cummings = tavis_cummings_model_qubit_hamiltonian(\n", + " n_s = n_s,\n", + " n_b = n_b,\n", + " omega_c = 1,\n", + " omega_o = 1,\n", + " lam = 1\n", + ")\n", "print('creation:')\n", "print(creation)\n", "print()\n", @@ -224,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 11, "metadata": { "tags": [] }, @@ -243,7 +239,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "metadata": { "tags": [] }, @@ -252,7 +248,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", "starting\n" ] } @@ -266,8 +261,13 @@ "lam = 1.5\n", "h_bar = 1\n", "\n", - "ham_dicke = dicke_model_qubit_hamiltonian(n_s = n_s, n_b = n_b, omega_c = omega_c, omega_o = omega_o, lam = lam)\n", - "print(type(ham_dicke))\n", + "ham_dicke = dicke_model_qubit_hamiltonian(\n", + " n_s = n_s,\n", + " n_b = n_b,\n", + " omega_c = omega_c,\n", + " omega_o = omega_o,\n", + " lam = lam\n", + ")\n", "trotter_order_dicke = 2\n", "trotter_steps_dicke = 1\n", "\n", @@ -294,7 +294,6 @@ "print('starting')\n", "total_value = 0\n", "repetitions = 1\n", - "#value_per_circuit = total_value/repetitions\n", "value_per_circuit=total_value / repetitions\n", "dicke_metadata = EstimateMetaData(\n", " id=time.time_ns(),\n", @@ -317,7 +316,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, "metadata": { "tags": [] }, @@ -327,18 +326,18 @@ "output_type": "stream", "text": [ "Estimating Dicke\n", - "Time to generate circuit for GSEE: 0.0002884380519390106 seconds\n", - " Time to decompose high level