{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Tutorial 7: Simulating Qiskit Metal `design` objects with `palace` using `SQDMetal`\n", "\n", "In this tutorial, we will cover how to do electrostatic and eigenmode simulations of a qubit-cavity system using `palace`.\n", "\n", "**Requirements:**\n", "\n", "- [ ] Ensure that [SQDMetal](https://github.com/sqdlab/SQDMetal) is installed in your environment.\n", "- [ ] Ensure that [palace](https://github.com/awslabs/palace) is installed in your environment. Instructions [here](https://lfl-lab.github.io/SQuADDS/source/resources/palace.html)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import os\n", "os.environ[\"KMP_DUPLICATE_LIB_OK\"]=\"TRUE\"\n", "os.environ[\"PMIX_MCA_gds\"]=\"hash\"\n", "\n", "import gmsh\n", "gmsh.initialize()\n", "\n", "os.makedirs('sims', exist_ok=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define the path to the `palace` executable" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "path_to_palace = 'path/to/palace'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Electrostatic Simulation\n", "\n", "### Extracting the Capacitance Matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Importing the relevant modules" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import qiskit_metal as metal\n", "from qiskit_metal import designs, draw\n", "from qiskit_metal import MetalGUI, Dict, open_docs\n", "from qiskit_metal.toolbox_metal import math_and_overrides\n", "from qiskit_metal.qlibrary.core import QComponent\n", "from collections import OrderedDict\n", "from qiskit_metal.qlibrary.tlines.meandered import RouteMeander\n", "from qiskit_metal.qlibrary.tlines.straight_path import RouteStraight\n", "from qiskit_metal.qlibrary.tlines.pathfinder import RoutePathfinder\n", "from qiskit_metal.qlibrary.terminations.launchpad_wb import LaunchpadWirebond\n", "from qiskit_metal.qlibrary.terminations.open_to_ground import OpenToGround\n", "from qiskit_metal.qlibrary.terminations.short_to_ground import ShortToGround\n", "from qiskit_metal.qlibrary.couplers.coupled_line_tee import CoupledLineTee\n", "from qiskit_metal.qlibrary.qubits.transmon_cross import TransmonCross\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to get the cap matrix for a system with TransmonCross, claw and ground (similar to the simulations we ran to build `SQuADDS_DB`)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from squadds import SQuADDS_DB, Analyzer" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# First, get a design from SQuADDS \n", "db = SQuADDS_DB() \n", "db.select_system(\"qubit\") \n", "db.select_qubit(\"TransmonCross\") \n", "df = db.create_system_df()\n", "analyzer = Analyzer(db) \n", " \n", "# Define target parameters for your qubit \n", "target_params = { \n", " \"qubit_frequency_GHz\": 4.2, # Example value \n", " \"anharmonicity_MHz\": -200 # Example value \n", "} \n", " \n", "# Find the closest design \n", "results = analyzer.find_closest(target_params, num_top=1) \n", "best_device = results.iloc[0] \n", " \n", "# Get the design options \n", "qubit_options = best_device[\"design_options\"] \n", " \n", " " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "10:56AM 27s CRITICAL [_qt_message_handler]: line: 0, func: None(), file: None WARNING: Populating font family aliases took 269 ms. Replace uses of missing font family \"Courier\" with one that exists to avoid this cost. \n", "\n" ] }, { "data": { "image/png": "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8ePNrxeLxT799NMh1RCfW7OXU0LTG/d9K95v6DsLr6enp6en5+DBg/S/8ZOiB5qSvGPHjr1795rvxp83noE+zs5qSdxOEgT85QAhE2Wku9XQ12PKiuuPbiKElHLE6TyFvksfutIG5pUBIRNNkUEYl9GSK2MYxtatW51O5znnnHPo0CH243j0l75XVlxFUdJ8hzpJYLZfEGgW7eFuRcbDzhyy5DEMIxgM0jDqlMmTpnz1XTp3Ms3tSefpspVMNEUGYVxGAOdj2rRpO3fu9Pl8RUVFNTU11iscKpdeeum77747aLfPy8v78Y9/vGPHjo6ODkVR9u7d29nZmZ4WwjLQN928ebMsy2eeeWaa25NlLFmy5NZbb8X4lhWCweDy5ctvuOGG4W5IKgzUv0RRzMvLS6d78cYbb5x77rnpXDOVfRiG8fzzz99+++3D3ZDMpqam5ujRoxdddNFwN2RAAFyZ7u7usWPHOp3OYZmlccYZZzzwwAMul2vXrl033njj/v37X375ZXq7ueKKK2bMmLF06dKjR4/+6Ec/ojtB0BVSDz/88Pbt2xctWpT+BlshNzf32WefHSgbcl1dnSiKI0aMSHOrsowNGzbU1tZiYN8KsVhsx44d+/btG+6GDBm6iUy/bxmGsXz58nROF9i5c+fq1atTXnKCUNavX3/kyJHhbkVm09ra2tHR8eGHHw53Q3pzyy230BcArsyOHTtGjhzpdrsPHTpkvbahsnv37oMHD7755ptLlix58MEHf/CDH8yYMWPz5s2jRo367ne/+8wzzzzwwAMbN27ct29fIBC49NJLq6qqWltbt2zZsmzZsvS31iILFixYsGDBQO9u3rzZZrP1Sp2MDJXnnnvu5ptvxjEmKwSDwddffz3l6e0I5fXXXz/nnHPSvGwqyzAM47nnnrv11luHuyGZzYEDB44dO3bhhRcOd0P6Yf369cT6Yuxp06Z985vfnDVr1ujRo88//3yIhg0NXdfpyh2O444cObJ///6CggJCSH5+viAIVVVVq1evLioq2r179549e+hoH82/MqTExBnBzJkzJ0+e/N577/3mN79Zt24dDrSnxi233KKq6rJly5599tnhbkumcuDAgZaWFnP2PZICW7duraurM6chIyng9/tffPHFcDjc0NAw3G3JYPbs2bNixYq6urqhLnZOJ1Zdma1bt7777rvt7e3v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hx9++M033/zzn/+cOXPmuXPnxo4dKxKJjh49GhIS8sUXX0yaNKmtrW3s2LEIoaqqKpfLFRERcd9997W2tp49ezYmJkYikajVapvN1tnZmZKScvLkSaPRqFKpxo4dazQaT548iX/zFy9e/NJLLz3++ONHjx6NiYlJSkpqamrqfdFzcnLef//93bt3411sL7300qlTpwYPHlxSUhIfHz9o0KAffvihra2tuLj4s88++/bbb4cMGdLS0pKVlVVSUvL555/X1NS8/fbbOp0OIVRUVBQVFZWVldXe3r5p06apU6fOmzevpqYmPT2dpumjR48GBATs3Lmzrq5uzZo1Dodj9OjRPp+vqqpq5syZr7zyyqhRo8rLy7dv375x48Z+fI0AAODG8Dyv0WjUavUNhjIkSf5UkhpN07enbZBKpQoPD+/q6goPD798+XJ4eHh5eblarR42bFhISMihQ4fMZvO0adNIkoyPj2cYJicnx+l0Hjx4MC0t7fjx4xkZGWVlZWPHjj169OhtGC3oF36/v7KycuTIkR6Px2az4aqJFovl/Pnzb7311oMPPmi1Wm0220svvYQQIghi48aNw4cP93g8zc3Nf/vb33bu3Nne3h4TE/Pf//3fSUlJs2fPNhgMODVKrVa3trYuXLjw3//+t81mCwsL27p16/vvv48QysnJIQjiqaeeomn6008/bW5ujouLe+GFF3ChtlmzZlVXV7/yyis8z0dHR8+ePRtXLrFarZs3b66srExNTX300UcRQjKZbPv27W1tbTt37lyzZs3LL78cFBSUnp4+fPjwwsJCfIEcx+Xm5n799dfjxo3z+/0EQWzYsCE1NdXtdnd0dHz11VchISFisXjUqFGLFi3CqVqHDx+urKxE/8lev8OXgAEA4Bf9Qg2YOxnLsr///e9zcnKWL1+elZU1ePDguXPnJiQkLF68mGXZP//5z48//nhiYuLgwYMZhvnDH/4QEhKSnp6em5v729/+NikpacOGDYMHD87Ly+vv6wC3VllZWUpKSkZGxsaNG4cOHZqZmXns2DGapnNzc8+dO3fq1KmUlJS4uDiEUEhISEZGxooVK2bNmvWvf/1r9uzZOp1u2rRpBQUFc+fORQidPXt22rRpbrd706ZNq1evTkxMHDduXERERFVVVUNDw5w5c/Ajrl+/nuO4pUuXTp8+/dy5cw8//HBJSUnv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", "text/plain": [ "" ] }, "metadata": { "image/png": { "width": 500 } }, "output_type": "display_data" } ], "source": [ "# Set up chip design as planar\n", "design = designs.DesignPlanar({}, overwrite_enabled=True)\n", "\n", "\n", "# Create GUI\n", "gui = MetalGUI(design)\n", "\n", "# Qubit and a claw\n", "# Create the TransmonCross object with the modified options \n", "# Update only the position parameters \n", "qubit_options[\"pos_x\"] = '0.6075mm' \n", "qubit_options[\"pos_y\"] = '-1.464' \n", "Q1 = TransmonCross(design, 'Q1', options=qubit_options)\n", "\n", "gui.rebuild()\n", "design.rebuild()\n", "gui.autoscale()\n", "gui.screenshot('sims/qubit.png')\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Call the `SQDMetal` objects. Change the hyper-parameters as needed for a more accurate simulation." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from SQDMetal.PALACE.Capacitance_Simulation import PALACE_Capacitance_Simulation\n", "\n", "user_defined_options = {\n", " \"mesh_refinement\": 0, #refines mesh in PALACE - essetially divides every mesh element in half\n", " \"dielectric_material\": \"silicon\", #choose dielectric material - 'silicon' or 'sapphire'\n", " \"solver_order\": 1, #increasing solver order increases accuracy of simulation, but significantly increases sim time\n", " \"solver_tol\": 1.0e-8, #error residual tolerance for iterative solver\n", " \"solver_maxits\": 500, #number of solver iterations\n", " \"mesh_max\": 120e-6, #maxiumum element size for the mesh in mm\n", " \"mesh_sampling\": 150, #number of points to mesh along a geometry\n", " \"fillet_resolution\":12, #number of vertices per quarter turn on a filleted path\n", " \"num_cpus\": 10, #number of CPU cores to use for simulation\n", " \"palace_dir\":path_to_palace\n", " }" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "#Creat the Palace Eigenmode simulation\n", "cap_sim = PALACE_Capacitance_Simulation(name = 'xmon_cap_sim_GMSH', #name of simulation\n", " metal_design = design, #feed in qiskit metal design\n", " sim_parent_directory = \"sims/\", #choose directory where mesh file, config file and HPC batch file will be saved\n", " mode = 'simPC', #choose simulation mode 'HPC' or 'simPC' \n", " meshing = 'GMSH', #choose meshing 'GMSH' or 'COMSOL'\n", " user_options = user_defined_options, #provide options chosen above\n", " view_design_gmsh_gui = False, #view design in GMSH gui \n", " create_files = True,\n", " ) #create mesh, config and HPC batch files\n", "\n", "cap_sim.add_metallic(1, threshold=1e-10, fuse_threshold=1e-10)\n", "cap_sim.add_ground_plane(threshold=1e-10)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To generate a fine mesh around our region of interest, we can use the `fine_mesh_in_rectangle` method by first getting the bounds of the region of interest." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.3675, -1.704 , 0.9277, -1.224 ])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bounds = design.components[\"Q1\"].qgeometry_bounds()\n", "bounds" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "#Fine-mesh the transmon cross qubit region\n", "cap_sim.fine_mesh_in_rectangle(bounds[0]*1e-3, bounds[1]*1e-3, bounds[2]*1e-3, bounds[3]*1e-3, mesh_sampling=100, mesh_min=10e-3, mesh_max=125e-3)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "cap_sim.prepare_simulation()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can check to see if all the metal components are correctly identified" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjE2IDAgb2JqCjw8IC9DIDE3IDAgUiAvUCAxOCAwIFIgL2QgMTkgMCBSIC9mb3VyIDIwIDAgUiAvaCAyMSAwIFIgL2kgMjIgMCBSCi9tIDIzIDAgUiAvbiAyNSAwIFIgL28gMjYgMCBSIC9vbmUgMjcgMCBSIC9wIDI4IDAgUiAvcGFyZW5sZWZ0IDI5IDAgUgovcGFyZW5yaWdodCAzMCAwIFIgL3MgMzEgMCBSIC9zcGFjZSAzMiAwIFIgL3QgMzMgMCBSIC90aHJlZSAzNCAwIFIKL3R3byAzNSAwIFIgL3plcm8gMzYgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAxNSAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9UeXBlIC9FeHRHU3RhdGUgL0NBIDAgL2NhIDEgPj4KL0EyIDw8IC9UeXBlIC9FeHRHU3RhdGUgL0NBIDEgL2NhIDAuNSA+PgovQTMgPDwgL1R5cGUgL0V4dEdTdGF0ZSAvQ0EgMSAvY2EgMSA+PgovQTQgPDwgL1R5cGUgL0V4dEdTdGF0ZSAvQ0EgMC41IC9jYSAxID4+Ci9BNSA8PCAvVHlwZSAvRXh0R1N0YXRlIC9DQSAwLjggL2NhIDAuOCA+PgovQTYgPDwgL1R5cGUgL0V4dEdTdGF0ZSAvQ0EgMC41IC9jYSAwLjUgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0YxLURlamFWdVNhbnMtbWludXMgMjQgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvS2lkcyBbIDExIDAgUiBdIC9Db3VudCAxID4+CmVuZG9iagozNyAwIG9iago8PCAvQ3JlYXRvciAoTWF0cGxvdGxpYiB2My43LjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My43LjEpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNTA1MDkxMDU2MzMtMDcnMDAnKSA+PgplbmRvYmoKeHJlZgowIDM4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDA5Nzc5IDAwMDAwIG4gCjAwMDAwMDkzODkgMDAwMDAgbiAKMDAwMDAwOTQyMSAwMDAwMCBuIAowMDAwMDA5Njg4IDAwMDAwIG4gCjAwMDAwMDk3MDkgMDAwMDAgbiAKMDAwMDAwOTczMCAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzNDIgMDAwMDAgbiAKMDAwMDAwMjM1OCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDIzMzcgMDAwMDAgbiAKMDAwMDAwODA4OSAwMDAwMCBuIAowMDAwMDA3ODgyIDAwMDAwIG4gCjAwMDAwMDc0NTIgMDAwMDAgbiAKMDAwMDAwOTE0MiAwMDAwMCBuIAowMDAwMDAyMzc4IDAwMDAwIG4gCjAwMDAwMDI2ODYgMDAwMDAgbiAKMDAwMDAwMjkyOSAwMDAwMCBuIAowMDAwMDAzMjMzIDAwMDAwIG4gCjAwMDAwMDMzOTkgMDAwMDAgbiAKMDAwMDAwMzYzNiAwMDAwMCBuIAowMDAwMDAzNzgwIDAwMDAwIG4gCjAwMDAwMDQxMTEgMDAwMDAgbiAKMDAwMDAwNDI4MyAwMDAwMCBuIAowMDAwMDA0NTE5IDAwMDAwIG4gCjAwMDAwMDQ4MTAgMDAwMDAgbiAKMDAwMDAwNDk2NSAwMDAwMCBuIAowMDAwMDA1Mjc3IDAwMDAwIG4gCjAwMDAwMDU1MDAgMDAwMDAgbiAKMDAwMDAwNTcyNCAwMDAwMCBuIAowMDAwMDA2MTMxIDAwMDAwIG4gCjAwMDAwMDYyMjEgMDAwMDAgbiAKMDAwMDAwNjQyNyAwMDAwMCBuIAowMDAwMDA2ODQwIDAwMDAwIG4gCjAwMDAwMDcxNjQgMDAwMDAgbiAKMDAwMDAwOTgzOSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDM4IC9Sb290IDEgMCBSIC9JbmZvIDM3IDAgUiA+PgpzdGFydHhyZWYKOTk5NgolJUVPRgo=", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2025-05-09T10:56:33.598051\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.7.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cap_sim.display_conductor_indices()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarly, you can verify the mesh is correct by visualizing the mesh" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from SQDMetal.PALACE.Utilities.GMSH_Navigator import GMSH_Navigator\n", "\n", "gmsh_nav = GMSH_Navigator(cap_sim.path_mesh)\n", "gmsh_nav.open_GUI()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If all looks good, you can run the simulation" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ">> /opt/homebrew/bin/mpirun -n 10 /Users/shanto/LFL/palace/build/bin/palace-arm64.bin xmon_cap_sim_GMSH.json\n", "\n", "_____________ _______\n", "_____ __ \\____ __ /____ ____________\n", "____ /_/ / __ ` / / __ ` / ___/ _ \\\n", "___ _____/ /_/ / / /_/ / /__/ ___/\n", " /__/ \\___,__/__/\\___,__/\\_____\\_____/\n", "\n", "Git changeset ID: v0.13.0-117-g748660c\n", "Running with 10 MPI processes\n", "Device configuration: cpu\n", "Memory configuration: host-std\n", "libCEED backend: /cpu/self/xsmm/blocked\n", "\n", "Added 370 elements in 2 iterations of local bisection for under-resolved interior boundaries\n", "Added 7772 duplicate vertices for interior boundaries in the mesh\n", "Added 16409 duplicate boundary elements for interior boundaries in the mesh\n", "Added 4040 boundary elements for material interfaces to the mesh\n", "Finished partitioning mesh into 10 subdomains\n", "\n", "Characteristic length and time scales:\n", " L₀ = 1.080e-02 m, t₀ = 3.602e-02 ns\n", "\n", "Mesh curvature order: 1\n", "Mesh bounding box:\n", " (Xmin, Ymin, Zmin) = (-5.400e-03, -3.600e-03, -7.500e-04) m\n", " (Xmax, Ymax, Zmax) = (+5.400e-03, +3.600e-03, +7.500e-04) m\n", "\n", "Parallel Mesh Stats:\n", "\n", " minimum average maximum total\n", " vertices 7317 7930 8452 79302\n", " edges 48210 49983 51459 499834\n", " faces 78292 80749 81761 807495\n", " elements 37664 38696 39104 386961\n", " neighbors 3 5 8\n", "\n", " minimum maximum\n", " h 0.000584563 0.0221754\n", " kappa 1.01738 11.038\n", "\n", "Configuring Dirichlet BC at attributes:\n", " 7, 1-3\n", "\n", "Assembling system matrices, number of global unknowns:\n", " H1 (p = 1): 79302, ND (p = 1): 499834, RT (p = 1): 807495\n", " Operator assembly level: Partial\n", " Mesh geometries:\n", " Tetrahedron: P = 6, Q = 4 (quadrature order = 2)\n", "\n", "Assembling multigrid hierarchy:\n", " Level 0 (p = 1): 79302 unknowns, 1106246 NNZ\n", "\n", "Computing electrostatic fields for 3 terminal boundaries\n", "\n", "It 1/3: Index = 1 (elapsed time = 0.00e+00 s)\n", "\n", " Residual norms for PCG solve\n", " 0 KSP residual norm ||r||_B = 1.988684e+01\n", " 1 KSP residual norm ||r||_B = 1.837414e+00\n", " 2 KSP residual norm ||r||_B = 1.983657e-01\n", " 3 KSP residual norm ||r||_B = 3.419571e-02\n", " 4 KSP residual norm ||r||_B = 5.789597e-03\n", " 5 KSP residual norm ||r||_B = 9.852163e-04\n", " 6 KSP residual norm ||r||_B = 1.591972e-04\n", " 7 KSP residual norm ||r||_B = 2.552636e-05\n", " 8 KSP residual norm ||r||_B = 4.115681e-06\n", " 9 KSP residual norm ||r||_B = 6.433529e-07\n", "PCG solver converged in 9 iterations (avg. reduction factor: 1.199e-01)\n", " Sol. ||V|| = 1.771402e+02 (||RHS|| = 1.249406e+02)\n", " Field energy E = 1.623e+00 J\n", " Updating solution error estimates\n", " Wrote fields to disk for terminal 1\n", "\n", "It 2/3: Index = 2 (elapsed time = 1.84e+00 s)\n", "\n", " Residual norms for PCG solve\n", " 0 KSP residual norm ||r||_B = 7.922711e-01\n", " 1 KSP residual norm ||r||_B = 9.323078e-02\n", " 2 KSP residual norm ||r||_B = 1.729449e-02\n", " 3 KSP residual norm ||r||_B = 3.058624e-03\n", " 4 KSP residual norm ||r||_B = 5.001449e-04\n", " 5 KSP residual norm ||r||_B = 7.652439e-05\n", " 6 KSP residual norm ||r||_B = 1.278920e-05\n", " 7 KSP residual norm ||r||_B = 2.138215e-06\n", " 8 KSP residual norm ||r||_B = 3.791235e-07\n", " 9 KSP residual norm ||r||_B = 5.810660e-08\n", "PCG solver converged in 9 iterations (avg. reduction factor: 1.156e-01)\n", " Sol. ||V|| = 1.815373e+01 (||RHS|| = 1.571705e+01)\n", " Field energy E = 4.690e-02 J\n", " Updating solution error estimates\n", " Wrote fields to disk for terminal 2\n", "\n", "It 3/3: Index = 3 (elapsed time = 3.91e+00 s)\n", "\n", " Residual norms for PCG solve\n", " 0 KSP residual norm ||r||_B = 1.827577e+00\n", " 1 KSP residual norm ||r||_B = 2.482739e-01\n", " 2 KSP residual norm ||r||_B = 5.061395e-02\n", " 3 KSP residual norm ||r||_B = 8.430108e-03\n", " 4 KSP residual norm ||r||_B = 1.436960e-03\n", " 5 KSP residual norm ||r||_B = 2.233266e-04\n", " 6 KSP residual norm ||r||_B = 3.373019e-05\n", " 7 KSP residual norm ||r||_B = 5.487292e-06\n", " 8 KSP residual norm ||r||_B = 8.790012e-07\n", " 9 KSP residual norm ||r||_B = 1.564078e-07\n", "PCG solver converged in 9 iterations (avg. reduction factor: 1.221e-01)\n", " Sol. ||V|| = 3.808964e+01 (||RHS|| = 2.584756e+01)\n", " Field energy E = 2.554e-02 J\n", " Updating solution error estimates\n", " Wrote fields to disk for terminal 3\n", "\n", "Completed 0 iterations of adaptive mesh refinement (AMR):\n", " Indicator norm = 5.083e-01, global unknowns = 79302\n", " Max. iterations = 0, tol. = 1.000e-02\n", "\n", "Elapsed Time Report (s) Min. Max. Avg.\n", "==============================================================\n", "Initialization 8.135 8.142 8.138\n", "Operator Construction 0.322 0.331 0.327\n", "Linear Solve 0.282 0.360 0.324\n", " Setup 0.018 0.018 0.018\n", " Preconditioner 0.743 0.821 0.780\n", "Estimation 0.052 0.086 0.070\n", " Construction 2.220 2.224 2.221\n", " Solve 1.884 1.885 1.885\n", "Postprocessing 0.325 0.366 0.336\n", "Disk IO 4.913 4.941 4.927\n", "--------------------------------------------------------------\n", "Total 19.130 19.158 19.147\n", "\n", "Error in plotting: 'Data array (V) not present in this dataset.'\n" ] } ], "source": [ "cap_matrix =cap_sim.run()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
groundclawcross
ground8.616470e-12-2.423222e-13-1.236023e-13
claw-2.423222e-132.489785e-13-4.868061e-15
cross-1.236023e-13-4.868061e-151.355619e-13
\n", "
" ], "text/plain": [ " ground claw cross\n", "ground 8.616470e-12 -2.423222e-13 -1.236023e-13\n", "claw -2.423222e-13 2.489785e-13 -4.868061e-15\n", "cross -1.236023e-13 -4.868061e-15 1.355619e-13" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cdf = pd.DataFrame(cap_matrix)\n", "\n", "# get rid of the first column\n", "cdf = cdf.iloc[:, 1:]\n", " \n", "# assigning the columns and indices based on our geometry\n", "cdf.columns = [\"ground\", \"claw\", \"cross\"]\n", "cdf.index = [\"ground\", \"claw\", \"cross\"]\n", "cdf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above dataframe is the capacitance matrix for our system in Farads. \n", "\n", "To get a more accurate result - consider a higher order solver and a finer mesh.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Eigenmodal Simulation\n", "\n", "### For a qubit-cavity system" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# Import useful packages\n", "import qiskit_metal as metal\n", "from qiskit_metal import designs, draw\n", "from qiskit_metal import MetalGUI, Dict, open_docs\n", "from qiskit_metal.toolbox_metal import math_and_overrides\n", "from qiskit_metal.qlibrary.core import QComponent\n", "from collections import OrderedDict\n", "from squadds.components.qubits import TransmonCross\n", "from qiskit_metal.qlibrary.tlines.meandered import RouteMeander\n", "from qiskit_metal.qlibrary.tlines.straight_path import RouteStraight\n", "from qiskit_metal.qlibrary.tlines.pathfinder import RoutePathfinder\n", "from qiskit_metal.qlibrary.terminations.launchpad_wb import LaunchpadWirebond\n", "from qiskit_metal.qlibrary.terminations.open_to_ground import OpenToGround\n", "from qiskit_metal.qlibrary.terminations.short_to_ground import ShortToGround\n", "from qiskit_metal.qlibrary.couplers.coupled_line_tee import CoupledLineTee\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this example lets use an example geometry from [Tutorial 5](https://lfl-lab.github.io/SQuADDS/source/tutorials/Tutorial-5_Designing_a_fab_ready_chip_with_SQuADDS.html#Making-the-Design) and build the design with `SQDMetal`" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "df8f1e1d94f24776ba956e197de4ccc0", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Generating train split: 0 examples [00:00, ? examples/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "db.unselect_all()\n", "db.select_system([\"cavity_claw\", \"qubit\"])\n", "db.select_qubit(\"TransmonCross\")\n", "db.select_cavity_claw(\"RouteMeander\")\n", "db.select_resonator_type(\"quarter\")\n", "df = db.create_system_df()\n", "\n", "analyzer.reload_db()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time taken to add the coupled H params: 4.038266897201538 seconds\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
index_qcrenderer_options_qubitsetup_qubitsimulator_qubitclaw_to_clawclaw_to_groundcross_to_clawcross_to_crosscross_to_groundground_to_ground...group_cavity_clawinstitution_cavity_clawmiscuploader_cavity_clawdesign_optionsECEJqubit_frequency_GHzanharmonicity_MHzg_MHz
125141900{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name...{'auto_increase_solution_order': True, 'enable...Ansys HFSS102.5035894.667797.2447100.07658100.07658246.94274...LFLUSCNoneEthan Zheng{'cavity_claw_options': {'coupler_type': 'CLT'...0.18048810.2780243.66213-205.10983998.903433
\n", "

1 rows × 41 columns

\n", "
" ], "text/plain": [ " index_qc renderer_options_qubit \\\n", "12514 1900 {'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... \n", "\n", " setup_qubit simulator_qubit \\\n", "12514 {'auto_increase_solution_order': True, 'enable... Ansys HFSS \n", "\n", " claw_to_claw claw_to_ground cross_to_claw cross_to_cross \\\n", "12514 102.50358 94.66779 7.2447 100.07658 \n", "\n", " cross_to_ground ground_to_ground ... group_cavity_claw \\\n", "12514 100.07658 246.94274 ... LFL \n", "\n", " institution_cavity_claw misc uploader_cavity_claw \\\n", "12514 USC None Ethan Zheng \n", "\n", " design_options EC EJ \\\n", "12514 {'cavity_claw_options': {'coupler_type': 'CLT'... 0.180488 10.278024 \n", "\n", " qubit_frequency_GHz anharmonicity_MHz g_MHz \n", "12514 3.66213 -205.109839 98.903433 \n", "\n", "[1 rows x 41 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "target_params = {\n", " \"qubit_frequency_GHz\": 3.7,\n", " \"resonator_type\":\"quarter\",\n", " \"anharmonicity_MHz\": -210,\n", " \"g_MHz\": 100 # should provide a big punchout shift\n", " }\n", "\n", "# computing the cavity frequency desired as per the design requirements\n", "target_params[\"cavity_frequency_GHz\"] = 2*(target_params[\"qubit_frequency_GHz\"]+target_params[\"anharmonicity_MHz\"]/1000)\n", "\n", "results = analyzer.find_closest(target_params=target_params,num_top=1,metric=\"Euclidean\")\n", "results" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "data_qubit = analyzer.get_qubit_options(results)\n", "data_cpw = analyzer.get_cpw_options(results)\n", "data_coupler = analyzer.get_coupler_options(results)\n", "LJs = analyzer.get_Ljs(results) # in nH" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Creating a new `design` and `gui` object since we are running this in the same notebook. " ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "# First delete components \n", "design.delete_all_components() \n", " \n", "# Close the GUI \n", "gui.main_window.close() \n", " \n", "# Forced garbage collection \n", "gui = None \n", "design = None" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "design = designs.DesignPlanar({}, overwrite_enabled=True)\n", "gui = MetalGUI(design)\n", "\n", "\n", "# Set up chip dimensions \n", "design.chips.main.size.size_x = '4.6mm'\n", "design.chips.main.size.size_y = '2.4mm'\n", "design.chips.main.size.size_z = '-280um'\n", "design.chips.main.size.center_x = '0mm'\n", "design.chips.main.size.center_y = '-1mm'\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets create the qubit with a junction and a claw\n", "\n", "### Qubit" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "from SQDMetal.Comps.Xmon import Xmon\n", "from SQDMetal.Comps.Junctions import JunctionDolanPinStretch\n", "from SQDMetal.Comps.Capacitors import CapacitorProngPin" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# Calculate vBar_gap and hBar_gap\n", "def extract_um(value: str) -> float:\n", " \"\"\"Extract float from '30um'.\"\"\"\n", " return float(value.replace('um', ''))\n", "\n", "# Unpack parameters from data_qubit\n", "cross_width = extract_um(data_qubit['cross_width'][0]) \n", "cross_length = extract_um(data_qubit['cross_length'][0]) \n", "cross_gap = extract_um(data_qubit['cross_gap'][0]) \n", "\n", "# Now create the Xmon\n", "xmon = Xmon(\n", " design,\n", " 'xmon',\n", " options=Dict(\n", " pos_x = '0.375mm',\n", " pos_y = '-1.3',\n", " hBar_width = f\"{cross_width}um\",\n", " vBar_width = f\"{cross_width}um\",\n", " vBar_gap = f\"{cross_gap}um\",\n", " hBar_gap = f\"{cross_gap}um\",\n", " cross_width = f\"{2*cross_length}um\",\n", " cross_height = f\"{2*cross_length}um\",\n", " gap_up = data_qubit['cross_gap'][0],\n", " gap_left = data_qubit['cross_gap'][0],\n", " gap_right = data_qubit['cross_gap'][0],\n", " gap_down = data_qubit['cross_gap'][0]\n", " )\n", ")" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "# Claw\n", "prong_length = extract_um(data_qubit['claw_length'][0]) - extract_um(data_qubit['claw_width'][0])\n", "pin_gap_side = extract_um(data_qubit['claw_gap'][0])+extract_um(data_qubit['cross_gap'][0])+extract_um(data_qubit['ground_spacing'][0])\n", "\n", "claw = CapacitorProngPin(\n", " design,\n", " 'claw',\n", " options=Dict(\n", " pin_inputs=Dict(start_pin=Dict(component='xmon', pin='up')),\n", " prong_width = data_qubit['claw_width'][0],\n", " pad_thickness = data_qubit['claw_width'][0],\n", " gap_front = data_qubit['cross_gap'][0],\n", " gap_back = data_qubit['claw_gap'][0],\n", " gap_side = data_qubit['claw_gap'][0],\n", " prong_length = f\"{prong_length}um\",\n", " pin_gap_side = f\"{pin_gap_side}um\"\n", " )\n", ")\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "# Junction\n", "junction = JunctionDolanPinStretch(design, 'junction', options=Dict(pin_inputs=Dict(start_pin=Dict(component=f'xmon',pin='right')),\n", " dist_extend=data_qubit['cross_gap'][0],\n", " layer=2,\n", " finger_width='0.4um', t_pad_size='0.385um',\n", " squid_width='5.4um', prong_width='0.9um'))\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now lets add the resonator and feedline" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "# Lauchpad 1\n", "x1 = '-2mm'\n", "y1 = '0mm'\n", "launch_options1 = dict(chip='main', pos_x=x1, pos_y=y1, orientation='360', lead_length='30um', pad_height='103um', \n", " pad_width='103um', pad_gap='60um', trace_width = data_cpw[\"trace_width\"], trace_gap = data_cpw[\"trace_gap\"])\n", "LP1 = LaunchpadWirebond(design, 'LP1', options = launch_options1)\n", "\n", "# Launchpad 2\n", "x2 = '2mm'\n", "y1 = '0mm'\n", "launch_options2 = dict(chip='main', pos_x=x2, pos_y=y1, orientation='180', lead_length='30um', pad_height='103um', \n", " pad_width='103um', pad_gap='60um', trace_width = data_cpw[\"trace_width\"], trace_gap = data_cpw[\"trace_gap\"])\n", "LP2 = LaunchpadWirebond(design, 'LP2', options = launch_options2)\n", "\n", "# Using path finder to connect the two launchpads\n", "feedline = RoutePathfinder(design, 'feedline', options = dict(chip='main', trace_width = data_cpw[\"trace_width\"],\n", " trace_gap = data_cpw[\"trace_gap\"],\n", " fillet='90um', \n", " hfss_wire_bonds = True,\n", " lead=dict(end_straight='0.1mm'),\n", " pin_inputs=Dict(\n", " start_pin=Dict(\n", " component='LP1',\n", " pin='tie'),\n", " end_pin=Dict(\n", " component='LP2',\n", " pin='tie')\n", " )))\n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "#open to ground for resonator\n", "otg1 = OpenToGround(design, 'otg1', options=dict(chip='main', pos_x='-0.2mm', pos_y='-40um', orientation = 180))\n", "\n", "\n", "# Resonator and feedline gap width (W) and center conductor width (S) \n", "design.variables['cpw_width'] = data_cpw[\"trace_width\"] \n", "design.variables['cpw_gap'] = data_cpw[\"trace_gap\"] \n", "\n", "# Use RouteMeander to fix the total length of the resonator\n", "res1 = RouteMeander(design, 'resonator', Dict(\n", " trace_width ='10um',\n", " trace_gap ='6um',\n", " total_length='3.7mm',\n", " hfss_wire_bonds = False,\n", " fillet='99.9 um',\n", " lead = dict(start_straight='300um'),\n", " pin_inputs=Dict(\n", " start_pin=Dict(component= 'otg1', pin= 'open'),\n", " end_pin=Dict(component= 'claw', pin= 'a')), ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check the design" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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Bw7MmDFj5syZq1evliTpRz/6kaqqGzduzM/P/9vf/pbChZQiGRtjfO7cubVr1y5evLi8vNxkMvl8Po7jMjMzjx49yvP8Zz/72WAweP78+RkzZrhcrs7OVFWPWZatra0tLi7Oz8+/5557eJ7fv3//0qVLFy1adODAgczMTEEQvF5vYWGhYRi33HJLdnb2tGnTUi8skd8wDJ7nH3zwwf/+7//evn27ruvV1dUmk+nJJ5+MxWJnzpwhR1++fHlJSYnZbC4pKQkGg+vWrauvr8/MzBRFcenSpfF4nOf5rKys2trayZMnv/7664sXL969e/fgIw6nWrW3ty9fvlyW5WXLlnm93gcffBAAenp6cnJybrnlFp7n//CHPyCEZs2apapqYWHh3LlzlyxZYjaba2trrVbrF7/4xfPnzx86dOjUqVODz3GwGWk43ZdhGFEUiUpEAqE0TUMIiaKoKEo6XiriQSN9Rok1SFVVskH0eJ7n04wW4jiO47ikMCSyWxAEIlU6M1AoFAolHUZwMMGFYAWr1bpnzx6Xy1VUVGQYhsvlYhjmtddeG7EroaZpO3fudLlcq1evdrlcHMedO3euoqKip6cnPz8/Go36fCM3HmIYxmw2i6JYWFioKEpnZyexEplMJq/X6/P52tvbHQ6HrusdHR0sy7Ism5eXN6InIoWDCSFUVFR0/vz54uLiRCLR1dUFAG+++WYoFOJ53mw29/T07Nu3LyMjo729PbUeQ7BarZFIxOVyYYxbWlpEUTx69OiJEyfcbjfP84IgJFUuj8fz2muvtba2jjhnV1fX66+/XlxcjDEWRZHjPu4J5XA4Ghoa3n///eTIqqqq/fv3a5qGMe7p6WltbfV4PO3t7XV1dTabbc+ePU6nMxqNvvnmm1VVVQ8++ODBgwMr9xAGOMWSnD59etOmTb/73e82bdp06tSpwsLCvr6+WCwWDAZfeeWVjIwMMqypqWnfvn29vb3FxcWyLHd1dRHPV01Nzdtvv11QUDB45iEdTEMq0CzLfvazn7333nsff/zx+fPnP/74408++eSsWbO2bdu2devWRx99dMT1BICHH34YADZt2jRlypQvf/nLmzZtKisr+9znPvcP//APxcXFTz755P3337969eoR53G5XE8//fTDDz9855135ufnP/bYY0899VRJScnTTz/92GOPrVq1Kh1hKBQKhZIO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pzG0cblcp06dEggEcHKpr693uVwAABzHeTwejL+uq6uDqSAAACaTiaIolmUxDDOZTOHh4WFhYb0+Y6FbAkcE90NYYEFKyxFoMzZ39EWwLMtWVlZevHhRKpXSNA0ncz6fD2d7Ho+HYRhMI15fX88wDLw11NXVwZlfqVTq9fqA+NWumDLOjrb64vz+9WI0Gjdv3mwwGN55553rr78+MzOzrq6utbV11apVtbW1paWlTU1NpaWlEonET8MGDzzwwMcff/z111/fcMMNDz30kMViiYiIUKlUzz77bEhIyKpVq1paWv7+978///zzAIDa2tqXX3751KlTW7duXbFiBYZhK1euTEtLO3HiRF5eXkhIyEMPPSSTyRYtWkRR1N13352dnY1h2LRp0woLC7/66qtJkyb997//Xb9+fXZ29qJFi6RS6datW10u1+rVq2maLi4u9tdJDUFYlvV2mXgnFPd+7fmREL+mWHS5XIWFhXa7PS4uzrdmI68MR6AUedyBvDIcgVLkcUevgmUYpr29vaysTCqVYhhGeOXL7Xbm9563YeOWlpZAFRfyzzR3zz33NDY2rl+//umnn/7ss89qamo++uijP/3pT5s3by4qKgoLC9u8eXN+fj/tpG4JDw/Py8sDAJw9ezYsLCwuLu7jjz/+8MMPly1btmrVqhMnTshkstmzZ+t0urVr18bHx0ulUs93jUbjqFGj/vSnP02ZMmXMmDG5ublarfapp56KiooKCQk5f/787t27582bt2LFiri4uMTExIiICABAYmKiVqvNy8t78803b7755gcffPD5558/cOCAH09qqCEQCORyX2W5fIBhmEQiMZvNtbW1vvfPo2mLI3AcR3YMRyCl5QjkleEO34IlSTInJ+fcuXMikWg4hiv5Z6aDu7KhjUaSpFAo5PP5TqczKipKp9MBDmKnL1++PG3aNADA1KlTKyoqAABOp5MkSR6Ph+N4S0vLDz/8UFFR0dLSQpKk1Wr1ntPh4ojL5WIYpry8fOLEiS0tLf/85z8TExMBAGazGT4ZUBQFnWZisVgsFkNT1Gw2t7e3w9qtJEk6nU7/nteQYoDr1lArSkpKTp48abPZemrWUxV0xADxFK5H+B2ktBzBsiySLUfAMIBucbvdOTk5DodjgHakTCYLlCXqH1Pmww8/DA0N3bBhwwsvvFBcXGwyme68884tW7aM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RowYsWzZMo1Gs2bNGq/Xe++994qiuHfv3lAotH379tmzZ8+aNWv79u3r1q179tlnRVH805/+VF1dvXLlyr/+9a8AAI/HM3nyZEEQkHHz+eefv/jii8XFxVOnTl21atX27dsXLFjw97//3Wq1Pv30059++umrr74KAHj00UdRaE4wGIz+P3369IKCgqqqqo0bNz7//PN33HHH+++/b7FY0EIyjuPef//9pUuXAgDKy8uR9RMKhYLBoMlkmjVr1tatW/srNEEQ0KkRRqNRq9V2fYCvuOKKV1999fTp0y+88MKFCxc2bNhQUVHx9NNPW61WmqaRJxattUNCQF47kiSR1sb+31MxVM9Fa4sthlbNJVJbbNsAADzPI3sUQogWCnaqDZ0OLRrsqVjslcYWi56o99o6FevU+Nhi/brGfgm222Io2UNP19hLbegao+3vS239lT+qraumxSf/bkXRe7FOqtjHu9mv2xR7jbHFopPpvd/NTrcpVv69FOsqf4vF0traijK+wxikGDiOi1v+XXUjDvl3bXx/+x/UIaB5kLg7lj4+TV3l35P+91SsL7XFLf9+PU196aaQYNGkT7e3Kel3s+/FLtqb9ST/6KBJXHnllbFjal+w2+1paWnIuEPzYVEh+v1+mqbr6+tbW1sBAC0tLbH7MnRFo9FEA9ZQW2N73mjGntg/xS7Ziqp+FJPJlJ6enp6eXlFRgZoXCARQeXSfusZjT5w4says7I033kDnij1vLD39vPclZAaDIdZ3Z7FYli5dumLFirq6uvfffz/6/b333mu1Wk+dOvX+++//7ne/61TJBx98QNP04sWL33nnnZKSkrFjx6ppnS3P8z1FeWMSAakr9njJwcAr7YULF86fP08QRDgcfmtThSm3CADgbay+beZYi8UiimJxcXFqaupANkkOUKyMip3QCsLzfKcVviqAIIi33nrro48+SqibIwiiqKgoOunF8/yBAwf6VQNKIIjoZJQgne76p1i7oeuSSJ/P5/P5qqur0cfYoOieQpKPHDlSVVUV/WvseWPp6efxrXfNy8tDcTBRgsFgQ0NDR0dHS0tLamrqe++9t2LFikOHDmVmZpaXl//sZz8jSZKiKBQQHscZBycQwt7TmGLiBr0PYdnKAXoXHEjZ+nw+lHieZdkZY/IEwQcAIIsyULglCvtVx73uNkMHJnFQT6tW2SZk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unTcuHEbN25sa2t78803SZL8y1/+smXLlpkzZ4ZCoV/84hd//OMff//73//mN7956KGH/vKXv9x+++3//d///fvf//4Pf/jDDTfcsHbt2j/84Q8VFRU5OTl1dXXLly8fNmzYt99+e9NNN3V0dPzyl7987LHH/t//+39PPPFES0vLhQsXXn/99b/97W/jxo3roylDURQyXG677bYdO3YIQuTGG2984403NBoNSqAsCILX6z1x4oTJZGppafF4PCzLoj9hMJh+wbIseuJSU1NbW1t37949a9YsnU6HXodYlkXbt6Hg+kgk0t7e7nQ60Sywx+PxeDwEQRiNxubmZo1G09bWdvz4cZZlJUnas2fPzJkz0RbZaLae53mNRpOdnb19+3bkm9Fqta2trXq9PhQKlZeX33bbbcido9FoHA5HXV1dTU1NUVGRKIrR/OkYDKZfBIPB5JkyAECyNcKCCAA0cZE63W633+93uVw+n2/btm2333779u3bDxw4cP31158+fbq8vNxmswmC4Pf7c3NzAQCBQCAQCDQ2NgqCsGXLFqvVmpKSkpubW1ZWdurUKYPB0NHR4fV609PTc3NzHQ4HMgUcDgcAwGw222w2m822bds2giAKCgouXLhQXl7+3XffVVRU3H333QCAvXv37t69+9577y0sLKyoqCgvL/+P//gPAMCOHTtaWlquv/76ESNGdHR0tLS0UBR1+vTpAwcOtLa2dnR0+Hw+t9u9evXqxYsXNzc391FQFEWZTKaOjo63334b5VnW6/WiKFosFpIkGYbxer2HDx8ePnx4Y2Pjzp07JUmyWCwURSVydzCYSxP0XpSSknL8+HGLxXLjjTcePnyYoqgbbrgBhaMhUwaV1Ov1PM+jeV5BEFDcjMViaWlpSU1Nraur4zgO+UeNRuPkyZN3797d2tqanp6OakDun+rq6ptuuslsNldWVvr9fqvVevLkSZIkly1bFggEmpqa5syZYzAY9u3bd9lll2VnZ7vd7szMTK/Xiz2vGEwcoMFRyWBStOS4oqJi1apVCxYsOHjwYNcC6CAYDC5evDj6UZKk/fv3QwjtdjtKN7d58+ZXX3119OjRS5cuffLJJ7du3fraa6/p9foJEya8+uqrR48efeaZZ/Lz8//4xz9OnDgxtmYAwPz58zUaTSAQ2L179wsvvFBYWHj27NnYMjt27MjKyjKb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", "text/plain": [ "" ] }, "metadata": { "image/png": { "width": 500 } }, "output_type": "display_data" } ], "source": [ "# rebuild the GUI\n", "design.rebuild()\n", "gui.rebuild()\n", "gui.autoscale()\n", "gui.screenshot('sims/qubit-cavity.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define the hyper-parameters for the eigenmode simulation" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "from SQDMetal.PALACE.Eigenmode_Simulation import PALACE_Eigenmode_Simulation\n", "\n", "#Eigenmode Simulation Options\n", "user_defined_options = {\n", " \"mesh_refinement\": 0, #refines mesh in PALACE - essetially divides every mesh element in half\n", " \"dielectric_material\": \"silicon\", #choose dielectric material - 'silicon' or 'sapphire'\n", " \"starting_freq\": 2e9, #starting frequency in Hz \n", " \"number_of_freqs\": 6, #number of eigenmodes to find\n", " \"solns_to_save\": 6, #number of electromagnetic field visualizations to save\n", " \"solver_order\": 1, #increasing solver order increases accuracy of simulation, but significantly increases sim time\n", " \"solver_tol\": 1.0e-3, #error residual tolerance foriterative solver\n", " \"solver_maxits\": 3, #number of solver iterations\n", " \"mesh_max\": 120e-3, #maxiumum element size for the mesh in mm\n", " \"mesh_min\": 10e-3, #minimum element size for the mesh in mm\n", " \"mesh_sampling\": 130, #number of points to mesh along a geometry\n", " \"fillet_resolution\":12, \n", " \"num_cpus\": 10, #number of CPU cores to use for simulation\n", " \"palace_dir\":path_to_palace\n", " }\n", "\n", "#Creat the Palace Eigenmode simulation\n", "eigen_sim = PALACE_Eigenmode_Simulation(name ='qubit-cavity-eig', #name of simulation\n", " metal_design = design, #feed in qiskit metal design\n", " sim_parent_directory = \"sims/\", #choose directory where mesh file, config file and HPC batch file will be saved\n", " mode = 'simPC', #choose simulation mode 'HPC' or 'simPC' \n", " meshing = 'GMSH', #choose meshing 'GMSH' or 'COMSOL'\n", " user_options = user_defined_options, #provide options chosen above\n", " view_design_gmsh_gui = False, #view design in GMSH gui \n", " create_files = True) #create mesh, config and HPC batch files\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Assigning the materials to the interfaces, add ports to the design, and add some mesh." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from SQDMetal.Utilities.Materials import MaterialInterface\n", "\n", "eigen_sim.add_metallic(1, threshold=1e-10, fuse_threshold=1e-10)\n", "eigen_sim.add_ground_plane(threshold=1e-10)\n", "\n", "#Fine-mesh the transmon cross qubit region\n", "eigen_sim.fine_mesh_in_rectangle(0.2875e-3, -1.2e-3, 0.63e-3, -1.72e-3, min_size=15e-6, max_size=120e-6)\n", "\n", "#Add in the RF ports\n", "eigen_sim.create_port_CPW_on_Launcher('LP1', 20e-6)\n", "eigen_sim.create_port_CPW_on_Launcher('LP2', 20e-6)\n", "eigen_sim.create_port_JosephsonJunction('junction', L_J=LJs[0]*1e-9, C_J=10e-15) # Guessing the C_J value really\n", "\n", "# #Fine-mesh routed paths\n", "eigen_sim.fine_mesh_around_comp_boundaries(['feedline', 'resonator'], min_size=25e-6, max_size=250e-6)\n", "eigen_sim.fine_mesh_around_comp_boundaries(['xmon'], min_size=14e-6, max_size=75e-6)\n", "\n", "eigen_sim.setup_EPR_interfaces(metal_air=MaterialInterface('Aluminium-Vacuum'), substrate_air=MaterialInterface('Silicon-Vacuum'), substrate_metal=MaterialInterface('Silicon-Aluminium'))" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "eigen_sim.prepare_simulation()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Checking the meshfile" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "gmsh_nav = GMSH_Navigator(eigen_sim.path_mesh)\n", "gmsh_nav.open_GUI()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If all looks good, lets run the simulation" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ">> /opt/homebrew/bin/mpirun -n 10 /Users/shanto/LFL/palace/build/bin/palace-arm64.bin qubit-cavity-eig.json\n", "\n", "_____________ _______\n", "_____ __ \\____ __ /____ ____________\n", "____ /_/ / __ ` / / __ ` / ___/ _ \\\n", "___ _____/ /_/ / / /_/ / /__/ ___/\n", " /__/ \\___,__/__/\\___,__/\\_____\\_____/\n", "\n", "Git changeset ID: v0.13.0-117-g748660c\n", "Running with 10 MPI processes\n", "Device configuration: cpu\n", "Memory configuration: host-std\n", "libCEED backend: /cpu/self/xsmm/blocked\n", "\n", "Added 2583 elements in 2 iterations of local bisection for under-resolved interior boundaries\n", "Added 5333 duplicate vertices for interior boundaries in the mesh\n", "Added 12701 duplicate boundary elements for interior boundaries in the mesh\n", "Added 1550 boundary elements for material interfaces to the mesh\n", "Finished partitioning mesh into 10 subdomains\n", "\n", "Characteristic length and time scales:\n", " L₀ = 5.520e-03 m, t₀ = 1.841e-02 ns\n", "\n", "Mesh curvature order: 1\n", "Mesh bounding box:\n", " (Xmin, Ymin, Zmin) = (-2.760e-03, -2.440e-03, -2.800e-04) m\n", " (Xmax, Ymax, Zmax) = (+2.760e-03, +4.400e-04, +2.800e-04) m\n", "\n", "Parallel Mesh Stats:\n", "\n", " minimum average maximum total\n", " vertices 3008 3521 3876 35213\n", " edges 19326 20902 21933 209020\n", " faces 31402 32620 33208 326208\n", " elements 15085 15240 15425 152403\n", " neighbors 3 5 8\n", "\n", " minimum maximum\n", " h 0.000508643 0.0271051\n", " kappa 1.03091 224.151\n", "\n", "Configuring Robin absorbing BC (order 1) at attributes:\n", " 13\n", "\n", "Configuring Robin impedance BC for lumped ports at attributes:\n", " 5: Rs = 6.667e+01 Ω/sq, n = (+0.0, +0.0, +1.0)\n", " 6: Rs = 6.667e+01 Ω/sq, n = (+0.0, +0.0, -1.0)\n", " 7: Rs = 6.667e+01 Ω/sq, n = (+0.0, +0.0, +1.0)\n", " 8: Rs = 6.667e+01 Ω/sq, n = (+0.0, +0.0, -1.0)\n", " 9: Ls = 5.725e-09 H/sq, Cs = 2.778e-14 F/sq, n = (+0.0, +0.0, +1.0)\n", "\n", "Configuring lumped port circuit properties:\n", " Index = 1: R = 5.000e+01 Ω\n", " Index = 2: R = 5.000e+01 Ω\n", " Index = 3: L = 1.590e-08 H, C = 1.000e-14 F\n", "\n", "Configuring lumped port excitation source term at attributes:\n", " 5: Index = 1\n", " 6: Index = 1\n", "\n", "Configuring Dirichlet PEC BC at attributes:\n", " 1-4\n", "\n", "Assembling system matrices, number of global unknowns:\n", " H1 (p = 1): 35213, ND (p = 1): 209020, RT (p = 1): 326208\n", " Operator assembly level: Partial\n", " Mesh geometries:\n", " Tetrahedron: P = 6, Q = 4 (quadrature order = 2)\n", "\n", "Configuring SLEPc eigenvalue solver:\n", " Scaling γ = 5.372e+02, δ = 8.454e-06\n", " Configuring divergence-free projection\n", " Using random starting vector\n", " Shift-and-invert σ = 2.000e+00 GHz (2.314e-01)\n", "\n", "Assembling multigrid hierarchy:\n", " Level 0 (p = 1): 209020 unknowns, 3108809 NNZ\n", " Level 0 (auxiliary) (p = 1): 35213 unknowns, 467986 NNZ\n", "\n", "#PETSc Option Table entries:\n", "-eps_monitor # (source: code)\n", "#End of PETSc Option Table entries\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.412921e+03\n", "1 (restart 0) KSP residual norm 1.030096e-01\n", "FGMRES solver converged in 1 iteration (avg. reduction factor: 7.291e-05)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 3.084314e+02\n", "1 (restart 0) KSP residual norm 2.872694e-01\n", "FGMRES solver converged in 1 iteration (avg. reduction factor: 9.314e-04)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 2.434966e+02\n", "1 (restart 0) KSP residual norm 5.858405e-01\n", "2 (restart 0) KSP residual norm 4.794499e-02\n", "FGMRES solver converged in 2 iterations (avg. reduction factor: 1.403e-02)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.968340e+02\n", "1 (restart 0) KSP residual norm 2.516109e-01\n", "2 (restart 0) KSP residual norm 1.350277e-01\n", "FGMRES solver converged in 2 iterations (avg. reduction factor: 2.619e-02)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.532037e+02\n", "1 (restart 0) KSP residual norm 1.879933e+01\n", "2 (restart 0) KSP residual norm 5.743690e-01\n", "3 (restart 0) KSP residual norm 3.406399e-02\n", "FGMRES solver converged in 3 iterations (avg. reduction factor: 6.058e-02)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.457565e+02\n", "1 (restart 0) KSP residual norm 1.585140e+01\n", "2 (restart 0) KSP residual norm 3.473767e-01\n", "3 (restart 0) KSP residual norm 2.879642e-02\n", "FGMRES solver converged in 3 iterations (avg. reduction factor: 5.824e-02)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.305187e+02\n", "1 (restart 0) KSP residual norm 1.554615e+01\n", "2 (restart 0) KSP residual norm 9.177109e-01\n", "3 (restart 0) KSP residual norm 2.073845e-02\n", "FGMRES solver converged in 3 iterations (avg. reduction factor: 5.416e-02)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 3.919173e+01\n", "1 (restart 0) KSP residual norm 3.511962e+01\n", "2 (restart 0) KSP residual norm 1.918697e+00\n", "3 (restart 1) KSP residual norm 1.346492e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.509e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 3.436e-03 (norm(b) = 3.919e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 3.579055e+01\n", "1 (restart 0) KSP residual norm 3.524408e+01\n", "2 (restart 0) KSP residual norm 2.609947e+00\n", "3 (restart 1) KSP residual norm 3.590706e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 2.157e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.003e-02 (norm(b) = 3.579e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 5.815106e+01\n", "1 (restart 0) KSP residual norm 5.474999e+01\n", "2 (restart 0) KSP residual norm 1.247263e+00\n", "3 (restart 1) KSP residual norm 3.192561e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.764e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 5.490e-03 (norm(b) = 5.815e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 5.353805e+01\n", "1 (restart 0) KSP residual norm 4.546733e+01\n", "2 (restart 0) KSP residual norm 2.800259e+00\n", "3 (restart 1) KSP residual norm 2.151371e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.590e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 4.018e-03 (norm(b) = 5.354e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 5.940565e+01\n", "1 (restart 0) KSP residual norm 5.382119e+01\n", "2 (restart 0) KSP residual norm 4.820657e+00\n", "3 (restart 1) KSP residual norm 2.692886e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.655e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 4.533e-03 (norm(b) = 5.941e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 5.778499e+01\n", "1 (restart 0) KSP residual norm 2.095926e+01\n", "2 (restart 0) KSP residual norm 4.377741e+00\n", "3 (restart 1) KSP residual norm 1.268705e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.300e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 2.196e-03 (norm(b) = 5.778e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.108659e+02\n", "1 (restart 0) KSP residual norm 3.103374e+01\n", "2 (restart 0) KSP residual norm 2.827297e+00\n", "3 (restart 1) KSP residual norm 1.733668e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.161e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.564e-03 (norm(b) = 1.109e+02)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 8.647454e+01\n", "1 (restart 0) KSP residual norm 7.121994e+01\n", "2 (restart 0) KSP residual norm 8.365370e-01\n", "3 (restart 1) KSP residual norm 2.253591e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.376e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 2.606e-03 (norm(b) = 8.647e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 3.755488e+01\n", "1 (restart 0) KSP residual norm 3.305395e+01\n", "2 (restart 0) KSP residual norm 3.059306e+00\n", "3 (restart 1) KSP residual norm 2.310088e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.832e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 6.151e-03 (norm(b) = 3.755e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 4.656319e+01\n", "1 (restart 0) KSP residual norm 3.283088e+01\n", "2 (restart 0) KSP residual norm 3.010541e+00\n", "3 (restart 1) KSP residual norm 2.776790e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.813e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 5.963e-03 (norm(b) = 4.656e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 5.244973e+01\n", "1 (restart 0) KSP residual norm 3.243014e+01\n", "2 (restart 0) KSP residual norm 2.253295e+00\n", "3 (restart 1) KSP residual norm 2.285002e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.633e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 4.357e-03 (norm(b) = 5.245e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 9.510297e+00\n", "1 (restart 0) KSP residual norm 9.483346e+00\n", "2 (restart 0) KSP residual norm 3.576888e+00\n", "3 (restart 1) KSP residual norm 4.641035e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 3.654e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 4.880e-02 (norm(b) = 9.510e+00)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 5.557394e+01\n", "1 (restart 0) KSP residual norm 4.532649e+01\n", "2 (restart 0) KSP residual norm 5.474378e+00\n", "3 (restart 1) KSP residual norm 5.867764e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 2.194e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.056e-02 (norm(b) = 5.557e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 4.172407e+01\n", "1 (restart 0) KSP residual norm 3.889227e+01\n", "2 (restart 0) KSP residual norm 2.313155e+00\n", "3 (restart 1) KSP residual norm 2.778884e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.881e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 6.660e-03 (norm(b) = 4.172e+01)!\n", "\n", " Eigenvalue approximations and residual norms for solve.\n", " 1 EPS nconv=5 first unconverged value (error) 5.40413e-05+0.00211119i (5.00897927e-03)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 4.233940e+01\n", "1 (restart 0) KSP residual norm 4.025040e+01\n", "2 (restart 0) KSP residual norm 6.287542e+00\n", "3 (restart 1) KSP residual norm 4.150788e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 2.140e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 9.804e-03 (norm(b) = 4.234e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 3.615876e+02\n", "1 (restart 0) KSP residual norm 6.992100e+01\n", "2 (restart 0) KSP residual norm 5.346569e+00\n", "3 (restart 0) KSP residual norm 2.020926e-01\n", "FGMRES solver converged in 3 iterations (avg. reduction factor: 8.237e-02)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 2.113327e+02\n", "1 (restart 0) KSP residual norm 5.739536e+01\n", "2 (restart 0) KSP residual norm 4.458242e+00\n", "3 (restart 0) KSP residual norm 1.801637e-01\n", "FGMRES solver converged in 3 iterations (avg. reduction factor: 9.482e-02)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 2.427415e+02\n", "1 (restart 0) KSP residual norm 7.643843e+01\n", "2 (restart 0) KSP residual norm 5.483347e+00\n", "3 (restart 1) KSP residual norm 3.080755e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.083e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.269e-03 (norm(b) = 2.427e+02)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.759254e+02\n", "1 (restart 0) KSP residual norm 5.228174e+01\n", "2 (restart 0) KSP residual norm 4.167784e+00\n", "3 (restart 1) KSP residual norm 2.129253e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.066e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.210e-03 (norm(b) = 1.759e+02)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.646635e+02\n", "1 (restart 0) KSP residual norm 5.014530e+01\n", "2 (restart 0) KSP residual norm 2.212682e+00\n", "3 (restart 1) KSP residual norm 2.443341e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.141e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.484e-03 (norm(b) = 1.647e+02)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.256291e+02\n", "1 (restart 0) KSP residual norm 4.549861e+01\n", "2 (restart 0) KSP residual norm 2.730969e+00\n", "3 (restart 1) KSP residual norm 6.418431e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.722e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 5.109e-03 (norm(b) = 1.256e+02)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 5.022563e+01\n", "1 (restart 0) KSP residual norm 1.752157e+01\n", "2 (restart 0) KSP residual norm 1.627450e+00\n", "3 (restart 1) KSP residual norm 3.686231e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.943e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 7.339e-03 (norm(b) = 5.023e+01)!\n", "\n", " 2 EPS nconv=5 first unconverged value (error) 1.06412e-05+0.00204685i (5.02229228e-03)\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.883798e+02\n", "1 (restart 0) KSP residual norm 2.685552e+01\n", "2 (restart 0) KSP residual norm 3.383807e+00\n", "3 (restart 1) KSP residual norm 4.308263e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.318e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 2.287e-03 (norm(b) = 1.884e+02)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 2.528658e+01\n", "1 (restart 0) KSP residual norm 1.062846e+01\n", "2 (restart 0) KSP residual norm 1.407111e+00\n", "3 (restart 1) KSP residual norm 4.346875e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 2.581e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.719e-02 (norm(b) = 2.529e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 9.339810e+00\n", "1 (restart 0) KSP residual norm 6.042867e+00\n", "2 (restart 0) KSP residual norm 1.547542e+00\n", "3 (restart 1) KSP residual norm 1.703629e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 2.632e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.824e-02 (norm(b) = 9.340e+00)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.973027e+01\n", "1 (restart 0) KSP residual norm 1.748862e+01\n", "2 (restart 0) KSP residual norm 3.532853e+00\n", "3 (restart 1) KSP residual norm 2.855827e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 2.437e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.447e-02 (norm(b) = 1.973e+01)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.642444e+02\n", "1 (restart 0) KSP residual norm 9.280735e+01\n", "2 (restart 0) KSP residual norm 6.184957e+00\n", "3 (restart 1) KSP residual norm 3.376744e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.272e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 2.056e-03 (norm(b) = 1.642e+02)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 1.258047e+02\n", "1 (restart 0) KSP residual norm 1.468145e+01\n", "2 (restart 0) KSP residual norm 3.334393e+00\n", "3 (restart 1) KSP residual norm 1.876463e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.143e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 1.492e-03 (norm(b) = 1.258e+02)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 2.749989e+02\n", "1 (restart 0) KSP residual norm 1.568417e+02\n", "2 (restart 0) KSP residual norm 9.673655e+00\n", "3 (restart 1) KSP residual norm 6.285230e-01\n", "FGMRES solver did NOT converge in 3 iterations (avg. reduction factor: 1.317e-01)\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Linear solver did not converge, norm(Ax-b)/norm(b) = 2.286e-03 (norm(b) = 2.750e+02)!\n", "\n", "Residual norms for FGMRES solve\n", "0 (restart 0) KSP residual norm 5.168024e+02\n", "1 (restart 0) KSP residual norm 8.394446e+01\n", "2 (restart 0) KSP residual norm 3.658711e+00\n", "3 (restart 0) KSP residual norm 4.904864e-01\n", "FGMRES solver converged in 3 iterations (avg. reduction factor: 9.827e-02)\n", " 3 EPS nconv=6 first unconverged value (error) -1.85672e-05+0.00213756i (1.28638376e-03)\n", "\n", " Linear eigensolve converged (6 eigenpairs) due to CONVERGED_TOL; iterations 3\n", " Total number of linear systems solved: 37\n", " Total number of linear solver iterations: 105\n", " Found 6 converged eigenvalues (first = -8.857e-05+2.649e-01i)\n", "\n", "Computing solution error estimates and performing postprocessing\n", "\n", "m Re{ω}/2π (GHz) Im{ω}/2π (GHz) Bkwd. Error Abs. Error\n", "=============================================================================\n", "1 +2.289361e+00 +7.655980e-04 +1.359085e-07 +3.138565e-02\n", " Wrote mode 1 to disk\n", "2 +2.660082e+00 +7.342765e-01 +1.367113e-07 +3.157112e-02\n", " Wrote mode 2 to disk\n", "3 +3.146928e+00 +2.691669e-03 +4.380756e-08 +1.011663e-02\n", " Wrote mode 3 to disk\n", "4 +7.162883e+00 +4.627687e-02 +7.485648e-07 +1.728726e-01\n", " Wrote mode 4 to disk\n", "5 +7.924472e+00 +8.396170e-02 +8.724642e-07 +2.014866e-01\n", " Wrote mode 5 to disk\n", "6 +9.622242e+00 -6.324014e-02 +9.576458e-07 +2.211607e-01\n", " Wrote mode 6 to disk\n", "\n", "Completed 0 iterations of adaptive mesh refinement (AMR):\n", " Indicator norm = 6.093e-01, global unknowns = 209020\n", " Max. iterations = 0, tol. = 1.000e-02\n", "\n", "Elapsed Time Report (s) Min. Max. Avg.\n", "==============================================================\n", "Initialization 3.268 3.284 3.274\n", "Operator Construction 2.862 2.878 2.868\n", "Linear Solve 5.660 5.803 5.712\n", " Setup 0.091 0.094 0.092\n", " Preconditioner 20.812 20.868 20.840\n", "Eigenvalue Solve 3.148 3.245 3.209\n", "Div.-Free Projection 14.870 14.957 14.913\n", "Estimation 0.132 0.169 0.154\n", " Construction 1.898 1.901 1.899\n", " Solve 16.024 16.046 16.036\n", "Postprocessing 1.350 1.381 1.366\n", "Disk IO 8.794 8.800 8.798\n", "--------------------------------------------------------------\n", "Total 79.307 79.320 79.314\n", "\n", "Error in plotting: 'Data array (E_real) not present in this dataset.'\n" ] } ], "source": [ "eigen_sim.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Reading the eigenmode data now" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mRe{f} (GHz)Im{f} (GHz)QError (Bkwd.)Error (Abs.)kappa (kHz)
01.02.2893610.0007661495.1457391.359085e-070.0313861.531196e+03
12.02.6600820.7342761.8791051.367113e-070.0315711.415611e+06
23.03.1469280.002692584.5683434.380756e-080.0101175.383335e+03
34.07.1628830.04627777.3932297.485648e-070.1728739.255180e+04
45.07.9244720.08396247.1936368.724642e-070.2014871.679140e+05
56.09.622242-0.06324076.0786569.576458e-070.2211611.264775e+05
\n", "
" ], "text/plain": [ " m Re{f} (GHz) Im{f} (GHz) Q Error (Bkwd.) Error (Abs.) \\\n", "0 1.0 2.289361 0.000766 1495.145739 1.359085e-07 0.031386 \n", "1 2.0 2.660082 0.734276 1.879105 1.367113e-07 0.031571 \n", "2 3.0 3.146928 0.002692 584.568343 4.380756e-08 0.010117 \n", "3 4.0 7.162883 0.046277 77.393229 7.485648e-07 0.172873 \n", "4 5.0 7.924472 0.083962 47.193636 8.724642e-07 0.201487 \n", "5 6.0 9.622242 -0.063240 76.078656 9.576458e-07 0.221161 \n", "\n", " kappa (kHz) \n", "0 1.531196e+03 \n", "1 1.415611e+06 \n", "2 5.383335e+03 \n", "3 9.255180e+04 \n", "4 1.679140e+05 \n", "5 1.264775e+05 " ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def read_csv_to_dataframe(file_path):\n", " return pd.read_csv(file_path)\n", "\n", "eigen_df = read_csv_to_dataframe(\"sims/qubit-cavity-eig/outputFiles/eig.csv\")\n", "eigen_df.columns = eigen_df.columns.str.strip()\n", "eigen_df[\"kappa (kHz)\"] = eigen_df[\"Re{f} (GHz)\"] / eigen_df[\"Q\"] * 1e6\n", "eigen_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From our requirements, we wanted a qubit frequency of 3.7 GHz and a cavity frequency of" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6.98" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "target_params[\"cavity_frequency_GHz\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the simulations, it seems like mode 3 is the qubit mode (found to be 3.146 GHz) and mode 4 is the cavity mode (found to be 7.183 GHz) given their frequencies" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets' visualize all the eigenmodes in `paraview` to see if thats the case. Here are some screenshots from this toy example.\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\"Mode\"Mode
Mode 3: Qubit ModeMode 4: Cavity Mode
\n", "\n", "It seems like that indeed mode 3 is the qubit mode and mode 4 looks to be like the cavity mode.\n", "\n", "Of course, this simulation was done with really course hyperparameters (ran in 1.5 minutes on my 2021 Macbook Pro) so this results are somewhat promising!\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Work In Progress ⏳\n", "\n", "We are studying the hyper-parameters needed to converge our simulations to that of Ansys/experimentally verified results with `palace`. Once that is done, we will update this tutorial with a more comprehensive guide and native API" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## License\n", "\n", "
\n", "

This code is a part of SQuADDS

\n", "

Developed by Sadman Ahmed Shanto

\n", "

This tutorial is written by Sadman Ahmed Shanto

\n", "

© Copyright Sadman Ahmed Shanto & Eli Levenson-Falk 2025.

\n", "

This code is licensed under the MIT License. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree.

\n", "

Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.

\n", "
" ] } ], "metadata": { "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.11.8" } }, "nbformat": 4, "nbformat_minor": 2 }