{ "cells": [ { "cell_type": "markdown", "id": "a297bacb", "metadata": {}, "source": [ "# 2 Transmons with resonator, Capacitance and qubit parameters computation" ] }, { "cell_type": "code", "execution_count": 1, "id": "bfc9add4", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline\n", "import os\n", "os.environ[\"KMP_DUPLICATE_LIB_OK\"]=\"TRUE\"\n", "os.environ[\"PMIX_MCA_gds\"]=\"hash\"\n", "os.environ['OMPI_MCA_btl'] = 'tcp,self'\n", "os.environ['OMPI_MCA_rmaps_base_oversubscribe'] = '1'\n", "\n", "# Import useful packages\n", "from qiskit_metal import designs, draw\n", "from qiskit_metal import MetalGUI, Dict, open_docs\n", "from SQDMetal.Utilities.QUtilities import QUtilities\n", "import matplotlib.pyplot as plt\n", "from SQDMetal.Comps.Qubits import TransmonTaperedInsets\n", "from SQDMetal.Comps.Test_capacitor import Smooth_CapacitorProngPin, Smooth_Capacitor_Semicircle\n", "from SQDMetal.Comps.Resonators import ResonatorMeanderPinPin\n", "from SQDMetal.Utilities.QubitDesigner import ResonatorHalfWave\n", "from qiskit_metal.analyses import cpw_calculations\n", "from SQDMetal.Utilities.Materials import Material\n", "from SQDMetal.Utilities.CpwParams import CpwParams\n", "\n", "### Qubit, resonator frequencies\n", "qubit_freq = [4.5*1e9, 4.5*1e9]\n", "res_freq_GHZ = qubit_freq[1] + 2.3 *1e9" ] }, { "cell_type": "markdown", "id": "c6092de5", "metadata": {}, "source": [ "## Design" ] }, { "cell_type": "code", "execution_count": 2, "id": "803a9414", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Resonator length (f = 6800000000.0 GHz): 8.96 mm\n" ] } ], "source": [ "## Resonator design parameters\n", "resonator = ResonatorHalfWave(res_freq_GHZ)\n", "\n", "m = Material(\"siliconcryo\")\n", "\n", "# CPW parameters\n", "cpw_width = 10e-6\n", "cpw = CpwParams(m.permittivity, 500e-6)\n", "cpw_gap = cpw.get_gap_from_width(cpw_width)\n", "\n", "l_fullwave, _, _ = cpw_calculations.guided_wavelength(\n", " freq=resonator.f0,\n", " line_width=cpw_width,\n", " line_gap=cpw_gap,\n", " substrate_thickness=cpw.dielectric_thickness,\n", " film_thickness=200e-9,\n", " )\n", "l_halfwave = l_fullwave / 2\n", "\n", "print(f\"Resonator length (f = {res_freq_GHZ} GHz): {l_halfwave *1e3:.2f} mm\")" ] }, { "cell_type": "code", "execution_count": null, "id": "1d0a4be6", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "# Set up chip design as planar\n", "design = designs.DesignPlanar({}, overwrite_enabled=True)\n", "\n", "# Set up chip dimensions \n", "design.chips.main.size.size_x = '5.0mm'\n", "design.chips.main.size.size_y = '2.0mm'\n", "design.chips.main.size.size_z = '-280um'\n", "design.chips.main.size.center_x = '0.0mm'\n", "design.chips.main.size.center_y = '0mm'\n", "\n", "# Resonator and feedline gap width (W) and center conductor width (S) \n", "design.variables['cpw_width'] = '10 um' #S\n", "design.variables['cpw_gap'] = '6 um' #W \n", "\n", "#gui = MetalGUI(design)\n", "\n", "\n", "########################################\n", "\n", "TransmonTaperedInsets(design, 'Qubit1', options = Dict(pos_x = '-1.25mm', pos_y = '0.0mm', orientation = '0',\n", " pocket_lower_tighten = '0.0um',pocket_height = '420um',chrgln_pin_x_offset=\"0um\", chrgln_pin_y_offset=\"-10um\"))\n", "\n", "\n", "TransmonTaperedInsets(design, 'Qubit2', options = Dict(pos_x = '1.65mm', pos_y = '0.0mm', orientation = '0',\n", " pocket_lower_tighten = '0.0um',pocket_height = '420um', chrgln_pin_x_offset=\"0um\", chrgln_pin_y_offset=\"-10um\"))\n", "\n", "\n", "Smooth_Capacitor_Semicircle(design, 'Capacitor1',options=Dict(pin_inputs=Dict(start_pin=Dict(component=f'Qubit1',pin='top_right_pin')), orientation=180,\n", " rect_width = '160um',rect_length = '80um', semi_radius = '60um',\n", " fillet_radius = '5um',fillet_resolution = 20))\n", "\n", "Smooth_Capacitor_Semicircle(design, 'Capacitor2',options=Dict(pin_inputs=Dict(start_pin=Dict(component=f'Qubit2',pin='top_left_pin')), orientation=0,\n", " rect_width = '160um',rect_length = '80um', semi_radius = '60um',\n", " fillet_radius = '5um',fillet_resolution = 20))\n", "\n", "ResonatorMeanderPinPin(design, 'Resonator1', options = Dict(pin_inputs=Dict(start_pin=Dict(component='Capacitor1', pin='a'),\n", " end_pin=Dict(component='Capacitor2', pin='a')),\n", " total_length = f\"{l_halfwave*1e3}mm\", start_left = False,\n", " trace_width = design.variables['cpw_width'], gap_width = design.variables['cpw_gap']))\n", "\n", "\n", "#######################################\n", "\n", "# Create GUI\n", "#gui.rebuild()\n", "design.rebuild()" ] }, { "cell_type": "code", "execution_count": 4, "id": "f87393fa", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAADyCAYAAACF6yWcAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAL6NJREFUeJzt3XlYU2fePvA7IRD2HRIIyCIqKgoIiix1qSgute3M1Gln5h2XabV1dDoW32m1v7461nZ4u46t2mJn3mo3p7bTVu1mxxXLolQQxQUVN9aEnbAvSX5/oGmpCQQlxAP357pyXeXknCffPNLk5jnPeY5Ip9PpQERERCQQYksXQERERNQXDC9EREQkKAwvREREJCgML0RERCQoDC9EREQkKAwvREREJCgML0RERCQoDC9EREQkKBJLF9DftFotysrK4OTkBJFIZOlyiIiIyAQ6nQ4NDQ3w9fWFWNzz2MqgCy9lZWXw9/e3dBlERER0G4qLi+Hn59fjPoMuvDg5OQEA0t8eB0c7KwtXQ0RERKZobNEgYXm+/nu8J4MuvNw8VeRoZwUne4YXIiIiITFlygcn7BIREZGgMLwQERGRoJg1vBw9ehTz58+Hr68vRCIRdu/e3esxR44cwYQJEyCVShESEoIdO3aYs0QiIiISGLOGl6amJoSHh2Pr1q0m7X/16lXMmzcP06dPR15eHlatWoXHHnsM3333nTnLJCIiIgEx64TdOXPmYM6cOSbvn5qaiqCgILz22msAgNGjRyM9PR1///vfkZSUZK4yiYiISEDuqquNsrKykJiY2G1bUlISVq1aZfSYtrY2tLW16X9Wq9XmKg8aLVDZYmu29omIiO52ErEOnnZtve9ozhos+uo/o1QqIZPJum2TyWRQq9VoaWmBnZ3dLcekpKRgw4YNA1JfZYst4j+aPyCvRUREdDca61mLvb88YNEaBH+10dq1a1FfX69/FBcXW7okIiIiMqO7auRFLpdDpVJ126ZSqeDs7Gxw1AUApFIppFLpQJRHREREd4G7auQlNjYWBw8e7LZt//79iI2NtVBFREREdLcxa3hpbGxEXl4e8vLyAHRdCp2Xl4eioiIAXad8Fi5cqN//iSeewJUrV/D000+joKAAb731Fj755BM89dRT5iyTiIiIBMSs4eXEiROIjIxEZGQkACA5ORmRkZFYt24dAKC8vFwfZAAgKCgIX3/9Nfbv34/w8HC89tpr+Oc//8nLpImIiEjPrHNepk2bBp1OZ/R5Q6vnTps2DSdPnjRjVURERCRkd9WcFyIiIqLeMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgDEh42bp1KwIDA2Fra4uYmBhkZ2cb3XfHjh0QiUTdHra2tgNRJhEREQmA2cPLrl27kJycjPXr1yM3Nxfh4eFISkpCRUWF0WOcnZ1RXl6uf1y/ft3cZRIREZFAmD28vP7661i6dCmWLFmCMWPGIDU1Ffb29nj33XeNHiMSiSCXy/UPmUxm7jKJiIhIIMwaXtrb25GTk4PExMQfX1AsRmJiIrKysowe19jYiICAAPj7++OBBx7A2bNnje7b1tYGtVrd7UFERESDl1nDS1VVFTQazS0jJzKZDEql0uAxo0aNwrvvvos9e/bgww8/hFarRVxcHEpKSgzun5KSAhcXF/3D39+/398HERER3T3uuquNYmNjsXDhQkRERGDq1Kn4/PPP4eXlhW3bthncf+3ataivr9c/iouLB7hiIiIiGkgSczbu6ekJKysrqFSqbttVKhXkcrlJbVhbWyMyMhKFhYUGn5dKpZBKpXdcKxEREQmDWUdebGxsEBUVhYMHD+q3abVaHDx4ELGxsSa1odFokJ+fDx8fH3OVSURERAJi1pEXAEhOTsaiRYsQHR2NSZMmYdOmTWhqasKSJUsAAAsXLoRCoUBKSgoA4Pnnn8fkyZMREhKCuro6vPLKK7h+/Toee+wxc5dKREREAmD28PLwww+jsrIS69atg1KpREREBPbt26efxFtUVASx+McBoNraWixduhRKpRJubm6IiopCZmYmxowZY+5SiYiISABEOp1OZ+ki+pNarYaLiwvydkTAyd6qX9tWNtki/qP5/domERGRkIz1rMXeXx7o93YbmjWIWJyH+vp6ODs797jvXXe1EREREVFPGF6IiIhIUBheiIiISFAYXoiIiEhQGF6IiIhIUBheiIiISFDMvs4LEd3drERaRHjXINSjDgXVrsircIdGd3t/1ygcmxDjW4nWTitklXqjtu32bt1hJ+nEJJ9K+Dg042SFBy7UuN5WOwAQ6l6HCO9qlDXZI7vMC62a2/vYc5O2IVZRAamVBsfLvVDW6HBb7UhEWkTIqjHKvR7nq11x6g7628+pCTE+FWjukCCrzBt1t9nf9jf6W+7QjFyVJy7WutxWO0QDheGFaIiyFmuxMSEHCX5KnKt2w9kqNywLL8BYz1pklMrx3PdR6NCa9qU6N7gYT0WfQVOHBMfKvGFv3YmnovPR1G6N//d9NM5Wu5nUjqddK16dno1gFzVOKL1Q3OCA+0NOws+pER8XDMdbJ01frHJF5Dn8OvQKShoc8YPSE5N8qvBiQg4K65yx+vAk1LTamtROmGcNXrgnB/bWnThW5o3mDgkWh12CvXUnXvthHPZd9TOpHRuxBhvvyUG8QoWzVW44V+2G5REFGO1Ri+9L5FiXbnp/3ze8CKuiz6ChzRrHyr3haN2J5In5aOywwbNHo3G+2tWkdrzsWvDa9GwEujTgB6UXShoc8NeQXCicmrDzXAi2nQo1qR2igcbTRkRDkLVYi7dmZqKuzQYP7ZmBby77w8mmHd9e9cNDe2agptUGb83MhLVY22tb84KL8KcJ5/Dovnvwv8fD0aEVo6zRHk8dmoyNWZHYOjMTYz1qe23H064V781Nw55Lw7Dwm6nIVXnATtKJd/NH4qE9iYiWV2H1xHyT3t/Tk04jUlaNBXtmYHv+CNhLOpGr8sDvv5mKLy8Pwwfz0uBu29prO2GeNdiSmIUNmZFYfTgG5Y32aNeI8bdj4XhsXwJWRZ3B3ODe72RvI9bgrVmZqG6xxUN7ZuDbq35wsunA15f98dCeGWhot8bmxCyT+vv+kOtYHnkOf/hmCl7OHo9OrRglDQ5YdSgWL2aF462ZGRjtUddrO152LXh/Xho+uxiIRd9MRZ7KA7YSDd7NH4lf75mBWEUFVkWd6bUdIktgeCEagl6ccgKFdU74zzUFPp5/GGFeNThT5YYwz1r8a/5h7L+mQGGdE16ccqLHdibKK7Fywnk8/l08NibkYEnYRZQ12qNTK8aGhJOYN7wYTx6MxdaZmfCya+mxrR1z0rDtVCgkYh3+mfQ9PO1bUVDjipmBZXh/7hFsyIjEWM9a/H7spR7bWRx2ESPd67ExMwIfzjuCxIAyFNS4wtO+Ff+Y9T1E0OGdU6HYMedoj+1427dgS2IWVh6IxQMhRVgfdxIdWjGUTfZ4bPxFPJ+Qi2XfJeDJCWcRLa/ssa2UqSdwscYFh4p8uvrbsw5nqlwxzrsGu+4/hG+v+KNI7YCNCTk9tjPZtwKPR5zHE98l4G9TTmBRWCFKG+yh1QEbE3KQFFiKpw5NxtszM3oMZyLo8N7co9icOxZ2kk5sm5UOD7tWXKxxxqygUrw3Nw3r0icgQlaD346+3GNNRJbA00ZEQ4y1WIt4XxUe2jMDO+cfxrLvEvRzHHZfCsQnBcF4Jykdv/lyOv79wEFYi7VGT2fMG16MrSdH46mJZ5Cj9MSbuWP1z23PH4HNiccw0acS313zwxR/JT67GGSwnVD3OtS1S1HZbItnJ5/CQ3tm6OdvfH4xELMCS5A6KxMrD8QiZcoJfHB2hNH3d39IEZIPx2DbrAy8nD0eB64r9M+9lz8C7887gheyItHUaY0RbvW4ZGR+xzT/cnxzxR+xvhXwtGvFw3un6+em7Dw/HKuizmBV9Fm8nTcac4JLcELpZbAdG7EGMT6V+PXe6fjoviNY+l2C/jV3XwrEpwVBSJ2VgUdu9LeVSGt0Dsy84GJsyRmLp2PykVnm3e002vb8kdgyMwsR3tU4cN0XU/xU2F0YYLCdMZ51qGyxhbrNGsvCC7Bg7wzUt9kAAD67GITZQSV4KzETTx2OwcaEXOw8P9xofxNZAkdeiIaYCbIqnKp0R7xChf9c87tlcubFWhfsu+qHeIUKpyo9MEFWZbStOF8VTig9MVFeiS0/m4+i0YnxcvY4zAkqQUapNxL8VEbbifdTIaNEhtlBpUjNC71l4ul/rvmhttUGViIdvOxb4GjdYbAdZ5t2uNi0wV7SicoW227BBQBq26T4x+lQJAWVIr1EhgRFzzVllnpjbnAJXj4+/pZAsTl3DCb5VCC73AvxvsbbiZJX4WSFBxL8VPj2iv8tYamgxhUHrisw2bcCZ6vcEOFdY7StWF8VclWeiPSuwtsnR3d7rlMnxqvZ4zAnuAQZpTLE99DfCQoV0ktkmB1cgtS80frgctO+q35o6pRApxPB17EJDkb6m8hSGF6IhpjRHnU4VeGBCfJqZJcZHi04Xu6FaHkVTqrcMcbI/Albq05IxDrI7FtwrtoNWp3oln2u1TvB274F56tcjbYDAGM96pBX4Y4oeRWyy43V5I1oeRXOVLkj1EhboR71OFPtjgmyauPtlHW1k1fhgTGexmsa41GHCzUu8LBrRVGD4y3Pa3RiFNS4wsOuFbYSDaRWGsPteN54b7IqHDdS07EyL31NYz0Nzw/qCmwi+Do1Ib/KHTrc2t+Fdc7wc2rC2So3o+0AN34HKj0Q1WM/eWGCvApnqtww0k1ttC0iS2B4IRpirEQ6dOpEsLXSoKnT8Jnj5g4JpBINNDoxxGLDN563Euug1YlgK9GgqcP4Geh2jZX+dY0Ri3TQ6MSwtdKg2UhNTR0S2Eo06NSKjLYlFumg0YohlWjQbKQmU9q52ZZIhB4vrW6+0ZZGJ4LYSFtWIh002q5+MlZTc6cEtla9v7eb/27G2gG6+lung9F6gK5/u05tz/92N2vS6MQ9tkVkCQwvREREJCgML0RERCQoDC9EREQkKAwvREREJCgML0RERCQoXKSOzGL+8CL8cuQ1+Ds1QcQrFe6IDiLUttrg4HVf7Mgfcds3FiSyJJl9Cx4bfwExvpVcN6YfdGrFuFDjgvfPhhhdIHEw46cg9bvXph/HgyOKLF3GoBLkAkyQ1eD+kCL84dt7oGyyt3RJRCaL8K7GP2enw8223dKlDCohbg2YE1yCF7PCsePMSEuXM6AYXqhfPRx6hcGlH2zOGY0yIwHlg3lpePJgrMl3DiaypEdCL2N2cClezh5n8PlJ8kr8YiQ/M26XWAQ8O/kUssu9cM7Eu7cPBgwv1K8eGX3F0iUMCv86PxyqZjuDz03zLze6mivR3UYq0SKr1BufFAQbfL6u1Ybh5Q5ZiYFfh17FXzMYXohuS7BLg9HnKpptcarCHS2dVgNYkfBIxDo8F3sS9e02+OxiIE6qPC1dElG/mx1UgqTAYjjYaPBloT84M65nrtJ2TJBVw9Gm0+DzQT189g5GDC/Ur6wMLCXf2C7B85kR+OJSoMH735BhUbIqvDTlB2SUyvB8ZqTBe9kQCY2TTTu2zswCdMBz30cZvG8UGWYn6cTyiPNYHlkA8c8+Dgx99g5mvFSazKpDK8Ifvr0Hn10MYnDpoxyVJx758l7cG1COP0eftXQ5RP3izRnHoNWJsOTbexhc+qilU4LXT4zDC1kRli7F4hheyKx2nQ9GDk973LaaVilSjoVjWfgFeNq1Wrocojsyxb8ccYoKPPd9FDQ6fv3crvfOjMDpyqEzv8UQnjYis/rysr+lSxC8A9d8odGKMM2/HP++GAQAWB9/Eo3tXf/7NnZYI7vMCxmlMlysdbFkqTSEWYm0iPCuQbxChQhZNazFWgCAj0MLPr3Q9Xs7K7AUeRXuKGlwsGSpg8JXl/0x3qvW0mVYDMMLmRU/pO5cp04MVbMdfB2bAQAbMiLhYP3jpD1X23bE+lYgZeoJXKt3xH8fnsT5MTSgnG3asWPuUVS32OL7EhlezR6H1p9MzG/ssAbQFWT4mdA/Sod4PzK8kFl52LZxQbV+4G7bhto2GwDAMzGnEa9QQXsjoNS32iCrzBtr0qLx6LiLeGVaNv5yhAGGBsbN4PLZxUBcqXPCL0dex5JxF2Er6bqcXyLS4q2TY7D9zEjUtdnA3bbNwhUPDkO9HxleyKymDSvH2SG0cJI5TJBVwdmmA5mlMgCArUSDx/+TgLwKDwCAh10rpvmXY9usdPxxfzz+GHkeC0ZdxScXDK+rQdSfnok5jW+u+KOmRYp18Sfx8vHxWJ8+Ac2dXV8vi8IuwfbGukTpJTI8n5ALR+sO/WgM3Z57A8osXYJFccYUmdWj4y/Cx6HZ0mUIlkSkxZqY0/jqsj8u1zkb3Ke6xRafXQzCM2mT8LcpJ/Cv88G4x181wJXSUBWvUGFv4TA8F5uHxV9PxeEiX31w+bmvLg9DeZM9Vk/MH+AqB5d4hQrT/JWWLsOiGF7IrFykHfhgXhpGutVbuhTBcZW24a1ZmQC61sPozQ9KLzhL23GlzhmR3tUQcdkvMrMglwZUtthitEcdjpd7G10V+qYOrRhPfBeHxIAyPD3ptH5SL5nu3mFl2DozE6IhflaYp43I7IJcG/Hlr/YjrViOkyoPNHUMzK9dq8YKeSqPO74Cx8uuBXGKCjhL2wdkFom1lRbDXdUIcVXj2yv++OBsCDpNvKz0bJUbAlwa0dwpgYN1J4fmyawUjk24Wu+EkW71yDfx0t0r9c647/NZeCLiPD687zBOV7ijrNEBmgFYB0qnE0HVbIv0ErnR0SFTTZRXYoSbGpIBCmDutm2I91Mh0rtmyAcXYIDCy9atW/HKK69AqVQiPDwcmzdvxqRJk4zu/+mnn+J//ud/cO3aNYwYMQIvvfQS5s6dOxClkplIxDrMCCjHjIDyAX1dnQ7ILPXGm7lj+nzbeIVjE1ZMOI9fjLgGG6uBHcVI3DUbV+ud+nycVifiiAsNOLEI+gnkpqhvs8FLx8MBADMDS5F6Y4RxoKjbrLHjzAi8mz8CDe02Jh8ngg5zg4uxcsJ5jHRXm7FC6o3Zw8uuXbuQnJyM1NRUxMTEYNOmTUhKSsKFCxfg7e19y/6ZmZn4zW9+g5SUFNx3333YuXMnHnzwQeTm5iIsLMzc5dIgIxIB8X4ViFNUILPMG2/m9B5iLBlabhruqjY6pC5z4GJ1JCwBLo1GTx1b4pSys7QDT0adw+KwSyaFGIaWu4/Zw8vrr7+OpUuXYsmSJQCA1NRUfP3113j33XexZs2aW/Z/4403MHv2bPzlL38BAGzcuBH79+/Hli1bkJqaau5yaZASiYB4RQXifCuQVeaFLbljcLy8e3gOcG7A4xEXLBpabtqWNLB/iRKZ08OhV/Fw6FVLl3GLn4eY98+EoLZNqn9eItJidnAJVkQytNxtzBpe2tvbkZOTg7Vr1+q3icViJCYmIisry+AxWVlZSE5O7rYtKSkJu3fvNrh/W1sb2tp+vN5dreYvGBknEgFxikrEKdJQ02qDymZbAICTTQd8HFp4LploCLoZYv4YeR7FDQ5o14ghFung69gMB2uNpcsjA8waXqqqqqDRaCCTybptl8lkKCgoMHiMUqk0uL9SafiysJSUFGzYsKF/CqYhxU3aDiebDgCARKRjcCEa4iRiHQKcG6HRiSCGDla8HveuJfirjdauXdttpEatVsPfn/fTIeOK1A5459Qo7Lvipx8itrXqRJyiAo9HFCBaXm3hColoIGm0wNdX/PHemRHIr3TT3zTS36kRvxp5DYvCCuEs7bBwlfRTZg0vnp6esLKygkrVfcEslUoFuVxu8Bi5XN6n/aVSKaRSqcHniH6qSO2At0+G4vOLgbdcetyqkeBQkS8OFfkiTqHCn6POMsQQDXI3Q8uW3DEGF4EsbnDEppww/F/+SPxh3CUsDrvEEHOXMOugmI2NDaKionDw4EH9Nq1Wi4MHDyI2NtbgMbGxsd32B4D9+/cb3Z+oN0VqB6xNi8LMXbPxyYXgXtdMySyV4eG99+L3X0/BCaXHAFVJRANFowX2Fvpjzr+T8NShyUZXr76pod0Gb+SMxZR/zcWbOWOgbuP6SZZm9tNGycnJWLRoEaKjozFp0iRs2rQJTU1N+quPFi5cCIVCgZSUFADAn//8Z0ydOhWvvfYa5s2bh48//hgnTpzAO++8Y+5Sycyu1jniZIUHmgdokbqWTivkVXjgwDVfkxd5+6nMUhkyS2WIklXhHn8lXGzaB2RejAiAzKEFcQoVJwvSoNbWKcbxci+UNDhAOwCL1Gl1gKrZDvuu+uHabayjdDPE/N/pkZg3vHhAF6mTWmkw3qsWoR5crRwYgPDy8MMPo7KyEuvWrYNSqURERAT27dunn5RbVFQEsfjHL5a4uDjs3LkTzz33HJ599lmMGDECu3fv5hovAlbbaoO1R6Ox/5rC0qXclhyVJ3JUngP+ui7SdrxwTw7mBpcM+GsTmdt3VxVYlz4BVS22li6lzxo7rLGrwDI3Pp3qX47XpmfDzbbdIq9/txiQP4FXrlyJlStXGnzuyJEjt2xbsGABFixYYOaqaCC0dYqx6OspvLP0bahvs8GTBybDZd5RxCsqTDpGd+OvV41WZHSRO4lYh3aN+Mb+Rtq5sVqqRieCnZXh0R+JWGfSku46dK2+aiUy/heqtVgLjVbU7T0YagfoWkVYIjZcuLVYq69J18uKr13tGK9JItJBqxMZ7aNbazLW31q0dFp12/+WdnSmtXNzdKK3mrQQQSIyvlO3tozW9OPvkvGadNBqe6/p5/5zzRcr9sf2+m9Et0or9sGy7+Lx8fzDQ/pqqCH81mkgfHRuOIPLHdBBhFezx5m8/3W1I0a61+NslSsiZIYnHEfKqnGmyg0j3epxXe1ouJ16R4x0u9GOd43hdrxvtONe3+MQ/HW1I/ydmtCutYKHneHVgcO8alDc4ABrscboPWd+rMkNEd5G3tuNmka51+NaveH31thhDVtJJ66rHTHOy/B787ZvQVOHBAHOjUbb+bEmNc5UuRntpwk/7W8jbV1XO2LEjXYiZcbbya+88d7UPfR3vSN8HZuhBeAmbTO4zxiPWpQ12kMEHdo1VkZruvm7FNnL71JXTcb76afaNSL8NX0Cg8sdyFV54sB1X0uXYVEML2RW31zhZet36nSlOxraTRskTS+RIUGhQlqxD3435vItox0hrmqEedaipMEBErEWyiZ7g+2omu1gJdKhpMEBYz1rEeLaffFHsUiH3465jKPFcsQrKpBReuutPm7KKJEhXqHC0WI5Fo4tvOX5WYElKL3xOtlK4+0cK/NGjG8Fvi+RYX5IEVyk3YfNXaTtuG94EdJLZIjxqcDxcuO3gchRemKUez0qmu2QGFB6y/O/H1uI70vliFeokFEqM9DCjfdWKkOCnwppxXL815hCiH822jHCrR6j3OpR0WQHrU6EyhbDd10ua3SA3Y1ANd6rGsN/1t9WIi1+M/oKjhbLkeCnQkZJzzXFK1RIL5Hj9wb6e25wMa6rnTDeq+aWVaZ/KqvMG7E+KhwtkeOBkOtwsune327SNswLLkJ6qQwT5ZXILjPt3mG5Ks9e7z5Nvcvq4fdyKGB4IbMqb+KHVH8wdV5AXoU7RnvU4Wq9I0obHLAtKQPTh5Uh2EWNR0Iv452k7/HUoRgsHncJR4p9emzrSLEPloy7hKcOxeAfs7/Hb0ZfxnBXNaYPK8O2WRlQNtmhsM4ZYz1qkacyflVW15ffNbx/NgRRsipsiM/FRHklxnjUYnnEeayeeAZrj0ZjcdglHC4yXlNjhzXKGh0wyr0e750ZgffnHcH84UUIdGnA/OFF+GDeEfwzfxTCPGtxXe2Eph7uqH24yAdLxl3EM2kT8UzMaSyPOI8xHrWY5FOJ5xNyEOFdjQ/PDsf9IUU4WmJ4mQag64t4nFc1LtW4oKLZDqmzMjDNvxzDXdX4zejL2DYrHasOTcYSE/o7rdgHC8cWYvXhGPwjKR2PhF5GsIsa9w4rw7akDBSpHVDU0DVCc6rSvYd25PhFyDVszx+BWN8KrIs7iWh5JcZ61GJF5Dn8OeoM/uf7CVgYVthjf9e32aCq1Q7BLg348FwIPpiXhvtu9Pf9IdfxwX1HkJo3GhNk1Sisc0arxrSAXd7Iz4T+UCnAuUL9ieGFzMrTyGkC6htT+1GjE2PFgThsnpGFTy8EYs+lAMwNLsH/Tj0BP6dmLN8fj3v8lBjhVo/XT/Q8Cf71H8IQ4qrGVH8lnvhPPBSOzfjblBOYG1yCvYXDsKsgGFsTM/HHA3E9Xs11uc4ZW06OxduzMrD2aDQu1TrjD+MvYs3k09ABeHTfPXgu9hTOVrn1OlL31KEYrIg8p78rcZS8Cq9Oy8YEWRVSjoWjqV2CxyMKkHwopsd29hYG4FKtC9bEnMYfvr0HALBm8mksDruIizUuePZoNFJnZeCNnLE9nhLr0Iqxcn8ctszMxMfng/HVZX/cN7wIf5tyAr6OzXjiPwmYEVCGAOdGvHFibI81vfLDOIzxrEOsogJ/3B8Hf+cm/O/UE5gdXILdlwLw+aVAvDkjC3/cH9fjlTmXal2Qemo03pqVgb+kTcLVOic8Nv4inok5jU6tGI/um4J1cXk4XeGOfVf9eqzpyQOx+HP0WVQ12+KV7PGYeKO/I7xrsDEzEu1aMR4ddwH/fWRSj+38lJc9PxP6g9cQ/2wV6XR9mWZ191Or1XBxcUHejgg42Rs+l3u7lE22iP9ofr+2Odic+cPnsJP8OMFzS+5o/L2XL0nq2WTfCnx0X1q3bb/afS/yKoyPdozzqsHWxEwU1LgivUSG4gYHTJRXIV6hQkWzHVYciDU61+GnbMQabJmZBZl9CzJKZfhB6Ql/pybEK1QY7VGHFQfikN/DKMBP3R9yHU9POo3scm+kl8rQ3CFBnEKFBIUS+6764+Xs8Sa1423fgu1zjqKuTYr0EhnOVrsizLMWCQoVnGw6sOTbKSaPVD0TcwqzAkuRceOyeHvrTiQoVJjkU4GXjofjy8vDTGon3KsaWxKzcK7aFemlMpTc6O8EhRJlTQ548sBktGtN6G8rDd6amQlPu1Zk3ujvYc5NSFCoMMq9Dsv3x+NslWlzyH4x4hpWT8zH8XJvpJfI0NpphThFBeIVSnx9ZRhe+8G0uVQy+xZsn3sUNa1SZNzo73GetUjwU8FB0oEl+6aguof+XhR2Cevi8vQ/t3aKEf/Rfahr4+Kid+K9uWlI8PtxIn9WmRf+66tpA/LaYz1rsfeXB/q93YZmDSIW56G+vh7Ozj2vvcPw0gcML737eXhpbJfg/s8Tcb2HCYZknI2VBp8+cAhhnnXdtvcWXoCueRLh3jVIUKjg69iM3AoPZJTIUNro0Oc6FI5NiPdTYYJ3Ncoa7ZFeKsOpCnf9MuqmspN0YqJPJeIVFbCTdOJYmTeySr273cnXVKPc67q+1D3qUVDdFdIu1rr0uR03aRtiFRWY7FuB5g4JMsu88UO5F1qMTBw2RnKzv/1U8HFoRq7KA+mlMpTdRn/73QiIkd7VKL3R36dvs78n+VQiXqGC1EqL4+VeyCz1vq3gEOpeh3g/FUa51+N8VVdIu2RCf/88vADAvy8E4pm0iX2ugbokBpQidVZmt3Wnhlp4Efy9jeju5mjTiQ/vS8OTByfjpAXWShEyuUMzXp2efUtwMZVGJ0auyhO5/dDvpY0O+KQgGJ/c4doWLZ0SHC32wdFe5n+Y4kKNKy7UuN5xO7VtUnxzxf+OJ5d36sT9tiZQSYMDdhUE3/FaIi2dEqQV+yCtH/q7oMYVBf3Q3wDw0KhraNeI8bdj4X0OiUPdgyHX8cKUnCF/I1n+1lC/0hoYx/N1bMGn9x/GCaUnclUeRi+FpS7WYi1GuNVjmr8SUonh9TUGYjVSov5g6DMBAH475grmBJfgUJEPShscTFozaChzs21DvEKFEW4NBp8fap8J/BahflXWaG/wfy6RCJjoU4WJPlUWqGpw0el4xQYJR3mj4cvxAcDNth2/Gnl9AKsZvHrq58GIVxtRv9pzKcDSJQx6maXeRtcLIbrbpJfIUNXMybnmpNMBuy+ZNrl8sGB4oX71f6dH8k7MZlTVLMVz6VGWLoPIZK0aCZ5Om4h2zdA6rTGQPjw3HFllQ2vROoYX6lftWiv8/uupeDNnDEoa7Pt0vxMyrq7VGp9dDMADXySiyMRl2InuFmnFPvj13ntxpEiO1k5+7fQHjRYoqHbBmrRo/DVjgqXLGXCc80L9rl1jhTdyxuKNnLEQQXfLkunUNzqIhtxkPBp88ivd8ei+rgUBxSIdREZvCUmm6Otl84MNwwuZlQ4iXkVARN10hXF+LtDtG9rRjYiIiASH4YWIiIgEheGFiIiIBIXhhYiIiASF4YWIiIgEheGFiIiIBIXhhYiIiASF4YWIiIgEheGFiIiIBIXhhYiIiASF4YWIiIgEheGFiIiIBIXhhYiIiASF4YWIiIgEheGFiIiIBIXhhYiIiASF4YWIiIgEheGFiIiIBIXhhYiIiASF4YWIiIgExazhpaamBr/73e/g7OwMV1dXPProo2hsbOzxmGnTpkEkEnV7PPHEE+Ysk4iIiAREYs7Gf/e736G8vBz79+9HR0cHlixZgmXLlmHnzp09Hrd06VI8//zz+p/t7e3NWSYREREJiNnCy/nz57Fv3z788MMPiI6OBgBs3rwZc+fOxauvvgpfX1+jx9rb20Mul5urNCIiIhIws502ysrKgqurqz64AEBiYiLEYjGOHz/e47EfffQRPD09ERYWhrVr16K5udnovm1tbVCr1d0eRERENHiZbeRFqVTC29u7+4tJJHB3d4dSqTR63G9/+1sEBATA19cXp0+fxjPPPIMLFy7g888/N7h/SkoKNmzY0K+1ExER0d2rz+FlzZo1eOmll3rc5/z587dd0LJly/T/PW7cOPj4+GDGjBm4fPkyhg8ffsv+a9euRXJysv5ntVoNf3//2359IiIiurv1ObysXr0aixcv7nGf4OBgyOVyVFRUdNve2dmJmpqaPs1niYmJAQAUFhYaDC9SqRRSqdTk9oiIiEjY+hxevLy84OXl1et+sbGxqKurQ05ODqKiogAAhw4dglar1QcSU+Tl5QEAfHx8+loqERERDUJmm7A7evRozJ49G0uXLkV2djYyMjKwcuVKPPLII/orjUpLSxEaGors7GwAwOXLl7Fx40bk5OTg2rVr2Lt3LxYuXIgpU6Zg/Pjx5iqViIiIBMSsi9R99NFHCA0NxYwZMzB37lwkJCTgnXfe0T/f0dGBCxcu6K8msrGxwYEDBzBr1iyEhoZi9erV+NWvfoUvv/zSnGUSERGRgJh1kTp3d/ceF6QLDAyETqfT/+zv74+0tDRzlkREREQCx3sbERERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaAwvBAREZGgMLwQERGRoDC8EBERkaCYLby8+OKLiIuLg729PVxdXU06RqfTYd26dfDx8YGdnR0SExNx6dIlc5VIREREAmS28NLe3o4FCxZg+fLlJh/z8ssv480330RqaiqOHz8OBwcHJCUlobW11VxlEhERkcBIzNXwhg0bAAA7duwwaX+dTodNmzbhueeewwMPPAAAeP/99yGTybB792488sgj5iqViIiIBOSumfNy9epVKJVKJCYm6re5uLggJiYGWVlZRo9ra2uDWq3u9iAiIqLBy2wjL32lVCoBADKZrNt2mUymf86QlJQU/SiPubnZtuODeUcG5LWIiIjuRo7WnZYuoW/hZc2aNXjppZd63Of8+fMIDQ29o6L6Yu3atUhOTtb/rFar4e/vb5bXklpp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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "QUtilities.plot_all_components(design)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "812e29d9", "metadata": {}, "source": [ "## Capacitance Simulation" ] }, { "cell_type": "code", "execution_count": 5, "id": "d613aea1", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Error : Gmsh has not been initialized\n", "Error : Gmsh has not been initialized\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ ">> /usr/bin/mpirun -n 16 /home/leont/repo/spack/opt/spack/linux-skylake/palace-0.15.0-p26f6lzvfjt4qemxgkdpjhhyogo7axk4/bin/palace-x86_64.bin 2_transmons_wRes_comp.json\n", "\n", "_____________ _______\n", "_____ __ \\____ __ /____ ____________\n", "____ /_/ / __ ` / / __ ` / ___/ _ \\\n", "___ _____/ /_/ / / /_/ / /__/ ___/\n", " /__/ \\___,__/__/\\___,__/\\_____\\_____/\n", "\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Output folder is not empty; program will overwrite content! (outputFiles)\n", "Git changeset ID: b676277\n", "Running with 16 MPI processes\n", "Device configuration: cpu\n", "Memory configuration: host-std\n", "libCEED backend: /cpu/self/xsmm/blocked\n", "\n", "Added 1128 boundary elements for material interfaces to the mesh\n", "Finished partitioning mesh into 16 subdomains\n", "\n", "Characteristic length and time scales:\n", " Lc = 6.000e-03 m, tc = 2.001e-02 ns\n", "\n", "Mesh curvature order: 1\n", "Mesh bounding box:\n", " (Xmin, Ymin, Zmin) = (-3.000e-03, -1.200e-03, -2.800e-04) m\n", " (Xmax, Ymax, Zmax) = (+3.000e-03, +1.200e-03, +2.800e-04) m\n", "\n", "Parallel Mesh Stats:\n", "\n", " minimum average maximum total\n", " vertices 2240 2650 2939 42414\n", " edges 16179 17320 18508 277120\n", " faces 28065 29055 30271 464891\n", " elements 14061 14386 14702 230184\n", " neighbors 3 5 9\n", "\n", " minimum maximum\n", " h 0.000296999 0.0313019\n", " kappa 1.02042 92.4409\n", "\n", "Configuring Dirichlet BC at attributes:\n", " 10-15, 1-6\n", "\n", "Assembling system matrices, number of global unknowns:\n", " H1 (p = 2): 319534, ND (p = 2): 1484022, RT (p = 2): 2085225\n", " Operator assembly level: Partial\n", " Mesh geometries:\n", " Tetrahedron: P = 20, Q = 11 (quadrature order = 4)\n", "\n", "Assembling multigrid hierarchy:\n", " Level 0 (p = 1): 42414 unknowns\n", " Level 1 (p = 2): 319534 unknowns\n", "\n", "Computing electrostatic fields for 6 terminal boundaries\n", "\n", "It 1/6: Index = 1 (elapsed time = 1.66e-07 s)\n", "\n", " Residual norms for PCG solve\n", " 0 KSP residual norm ||r||_B = 2.448392e+01\n", " 1 KSP residual norm ||r||_B = 2.121257e+00\n", " 2 KSP residual norm ||r||_B = 2.539193e-01\n", " 3 KSP residual norm ||r||_B = 4.098513e-02\n", " 4 KSP residual norm ||r||_B = 8.845225e-03\n", " 5 KSP residual norm ||r||_B = 2.156941e-03\n", " 6 KSP residual norm ||r||_B = 5.551920e-04\n", " 7 KSP residual norm ||r||_B = 1.567196e-04\n", " 8 KSP residual norm ||r||_B = 3.739797e-05\n", " 9 KSP residual norm ||r||_B = 8.646898e-06\n", " 10 KSP residual norm ||r||_B = 2.243936e-06\n", " 11 KSP residual norm ||r||_B = 5.988850e-07\n", "PCG solver converged in 11 iterations (avg. reduction factor: 1.697e-01)\n", " Sol. ||V|| = 3.122235e+02 (||RHS|| = 1.780161e+02)\n", " Field energy E = 1.035e-09 J\n", "\n", " Wrote fields to disk (Paraview) for source 1\n", " Updating solution error estimates\n", "\n", "It 2/6: Index = 2 (elapsed time = 6.59e+00 s)\n", "\n", " Residual norms for PCG solve\n", " 0 KSP residual norm ||r||_B = 5.905616e+00\n", " 1 KSP residual norm ||r||_B = 7.014801e-01\n", " 2 KSP residual norm ||r||_B = 1.434889e-01\n", " 3 KSP residual norm ||r||_B = 3.431404e-02\n", " 4 KSP residual norm ||r||_B = 8.626627e-03\n", " 5 KSP residual norm ||r||_B = 2.194025e-03\n", " 6 KSP residual norm ||r||_B = 5.414656e-04\n", " 7 KSP residual norm ||r||_B = 1.075673e-04\n", " 8 KSP residual norm ||r||_B = 2.274393e-05\n", " 9 KSP residual norm ||r||_B = 4.356246e-06\n", " 10 KSP residual norm ||r||_B = 1.082311e-06\n", " 11 KSP residual norm ||r||_B = 2.659825e-07\n", "PCG solver converged in 11 iterations (avg. reduction factor: 1.729e-01)\n", " Sol. ||V|| = 1.235568e+02 (||RHS|| = 6.452242e+01)\n", " Field energy E = 3.550e-11 J\n", "\n", " Wrote fields to disk (Paraview) for source 2\n", " Updating solution error estimates\n", "\n", "It 3/6: Index = 3 (elapsed time = 1.47e+01 s)\n", "\n", " Residual norms for PCG solve\n", " 0 KSP residual norm ||r||_B = 5.871942e+00\n", " 1 KSP residual norm ||r||_B = 7.117299e-01\n", " 2 KSP residual norm ||r||_B = 1.378763e-01\n", " 3 KSP residual norm ||r||_B = 3.403832e-02\n", " 4 KSP residual norm ||r||_B = 1.020005e-02\n", " 5 KSP residual norm ||r||_B = 2.733200e-03\n", " 6 KSP residual norm ||r||_B = 6.376058e-04\n", " 7 KSP residual norm ||r||_B = 1.448014e-04\n", " 8 KSP residual norm ||r||_B = 3.438152e-05\n", " 9 KSP residual norm ||r||_B = 7.344243e-06\n", " 10 KSP residual norm ||r||_B = 1.734110e-06\n", " 11 KSP residual norm ||r||_B = 3.267723e-07\n", "PCG solver converged in 11 iterations (avg. reduction factor: 1.762e-01)\n", " Sol. ||V|| = 1.243390e+02 (||RHS|| = 6.410218e+01)\n", " Field energy E = 3.409e-11 J\n", "\n", " Wrote fields to disk (Paraview) for source 3\n", " Updating solution error estimates\n", "\n", "It 4/6: Index = 4 (elapsed time = 2.17e+01 s)\n", "\n", " Residual norms for PCG solve\n", " 0 KSP residual norm ||r||_B = 8.611613e+00\n", " 1 KSP residual norm ||r||_B = 9.223523e-01\n", " 2 KSP residual norm ||r||_B = 9.557595e-02\n", " 3 KSP residual norm ||r||_B = 1.722228e-02\n", " 4 KSP residual norm ||r||_B = 3.675845e-03\n", " 5 KSP residual norm ||r||_B = 8.407168e-04\n", " 6 KSP residual norm ||r||_B = 1.993362e-04\n", " 7 KSP residual norm ||r||_B = 5.078951e-05\n", " 8 KSP residual norm ||r||_B = 1.422766e-05\n", " 9 KSP residual norm ||r||_B = 3.126110e-06\n", " 10 KSP residual norm ||r||_B = 6.010530e-07\n", "PCG solver converged in 10 iterations (avg. reduction factor: 1.502e-01)\n", " Sol. ||V|| = 1.471850e+02 (||RHS|| = 1.026553e+02)\n", " Field energy E = 2.946e-10 J\n", " Updating solution error estimates\n", "\n", "It 5/6: Index = 5 (elapsed time = 2.78e+01 s)\n", "\n", " Residual norms for PCG solve\n", " 0 KSP residual norm ||r||_B = 5.885579e+00\n", " 1 KSP residual norm ||r||_B = 7.010339e-01\n", " 2 KSP residual norm ||r||_B = 1.350799e-01\n", " 3 KSP residual norm ||r||_B = 2.758399e-02\n", " 4 KSP residual norm ||r||_B = 5.499763e-03\n", " 5 KSP residual norm ||r||_B = 1.050490e-03\n", " 6 KSP residual norm ||r||_B = 2.017101e-04\n", " 7 KSP residual norm ||r||_B = 3.566719e-05\n", " 8 KSP residual norm ||r||_B = 8.086616e-06\n", " 9 KSP residual norm ||r||_B = 1.687743e-06\n", " 10 KSP residual norm ||r||_B = 3.348761e-07\n", "PCG solver converged in 10 iterations (avg. reduction factor: 1.484e-01)\n", " Sol. ||V|| = 1.235942e+02 (||RHS|| = 6.470774e+01)\n", " Field energy E = 3.553e-11 J\n", " Updating solution error estimates\n", "\n", "It 6/6: Index = 6 (elapsed time = 3.40e+01 s)\n", "\n", " Residual norms for PCG solve\n", " 0 KSP residual norm ||r||_B = 5.848285e+00\n", " 1 KSP residual norm ||r||_B = 6.882317e-01\n", " 2 KSP residual norm ||r||_B = 1.319430e-01\n", " 3 KSP residual norm ||r||_B = 2.820304e-02\n", " 4 KSP residual norm ||r||_B = 6.694378e-03\n", " 5 KSP residual norm ||r||_B = 1.687664e-03\n", " 6 KSP residual norm ||r||_B = 3.815532e-04\n", " 7 KSP residual norm ||r||_B = 7.460119e-05\n", " 8 KSP residual norm ||r||_B = 1.744350e-05\n", " 9 KSP residual norm ||r||_B = 3.228566e-06\n", " 10 KSP residual norm ||r||_B = 6.319365e-07\n", "PCG solver converged in 10 iterations (avg. reduction factor: 1.582e-01)\n", " Sol. ||V|| = 1.243491e+02 (||RHS|| = 6.419542e+01)\n", " Field energy E = 3.409e-11 J\n", " Updating solution error estimates\n", "\n", "Completed 0 iterations of adaptive mesh refinement (AMR):\n", " Indicator norm = 4.245e-01, global unknowns = 319534\n", " Max. iterations = 0, tol. = 1.000e-02\n", "\n", "Elapsed Time Report (s) Min. Max. Avg.\n", "==============================================================\n", "Initialization 0.052 0.085 0.062\n", " Mesh Preprocessing 1.859 1.860 1.859\n", "Operator Construction 0.261 0.283 0.273\n", "Linear Solve 0.727 0.976 0.804\n", " Setup 1.134 1.135 1.134\n", " Preconditioner 5.472 6.030 5.870\n", " Coarse Solve 0.208 0.537 0.301\n", "Estimation 0.112 0.145 0.139\n", " Construction 3.493 3.502 3.497\n", " Solve 27.275 27.276 27.276\n", "Postprocessing 1.613 1.619 1.615\n", " Paraview 4.058 4.060 4.059\n", "Disk IO 0.960 0.970 0.962\n", "--------------------------------------------------------------\n", "Total 47.920 47.922 47.920\n", "\n", "Error in plotting: 'Data array (V) not present in this dataset.'\n" ] } ], "source": [ "from SQDMetal.PALACE.Capacitance_Simulation import PALACE_Capacitance_Simulation\n", "import contextlib\n", "import sys\n", "from io import StringIO\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", " \"solver_order\": 2, #increasing solver order increases accuracy of simulation, but significantly increases sim time\n", " \"solns_to_save\": 3, #number of solutions to save for E-field visualization - ordered by the entries in the computed capacitance matrix\n", " \"solver_tol\": 1.0e-8, #error residual tolerance for iterative solver\n", " \"solver_maxits\": 200, #number of solver iterations\n", " \"fillet_resolution\":16, #number of vertices per quarter turn on a filleted path\n", " \"palace_dir\":\"~/repo/spack/opt/spack/linux-skylake/palace-0.15.0-p26f6lzvfjt4qemxgkdpjhhyogo7axk4/bin/palace\",#\"PATH/TO/PALACE/BINARY\",\n", " \"num_cpus\": 16, #number of threads to use in PALACE simulation\n", " #e.g.: \"palace_dir\":\"/home/prasanna/spack/opt/spack/linux-ubuntu24.04-zen2/gcc-13.2.0/palace-0.12.0-q65qvkwsa5zglixv3rmm424wqsu3mcpv/bin/palace\"\n", " }\n", "\n", "#Create the Palace capacitance simulation\n", "cap_sim = PALACE_Capacitance_Simulation(name = '2_transmons_wRes_comp', #name of simulation\n", " metal_design = design, #feed in qiskit metal design\n", " sim_parent_directory = \"\", #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", " create_files = True) #create mesh, config and HPC batch files\n", "\n", "#Add metallic elements from layer 1 in design file\n", "cap_sim.add_metallic(1)\n", "\n", "#Add ground plane to simulations\n", "cap_sim.add_ground_plane()\n", "\n", "#Fine mesh the transmon cross qubit region\n", "cap_sim.fine_mesh_components(['Qubit1', 'Qubit2'], min_size=12e-6, max_size=100e-6, taper_dist_min=10e-6, metals_only=False)\n", "\n", "#Fine mesh resonator, launch pads and transmission line\n", "cap_sim.fine_mesh_components(['Resonator1','Capacitor1','Capacitor2'], min_size=12e-6, max_size=120e-6, taper_dist_min=10e-6)\n", "\n", "#This will prepare the mesh file and the config file\n", "cap_sim.prepare_simulation()\n", "\n", "capMat = cap_sim.run()" ] }, { "cell_type": "code", "execution_count": 6, "id": "2468d63f", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Display the indices of the conductors to match with capacitance matrix - it will be automatically generated with the output anyway\n", "cap_sim.display_conductor_indices()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 7, "id": "30533b51", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Capacitance Results\n", "--------------------\n", "C1-Ground = 73.452 fF\n", "C2-Ground = 79.691 fF\n", "C3-Ground = 73.500 fF\n", "C4-Ground = 79.727 fF\n", "CQ1 = 78.826 fF\n", "CQ2 = 78.839 fF\n", "Cg1 = 7.124 fF\n", "Cg2 = 7.163 fF\n", "C_r = 1445.730 fF\n", "C1_prime = 85.915 fF\n", "C2_prime = 85.967 fF\n", "C_r_prime = 1458.830 fF\n", "Cg1_prime = 8800.541 fF\n", "Cg2_prime = 8757.446 fF\n", "\n", "Readout Resonator\n", "-------------------\n", "f_res = 6.800 GHz\n", "L_res = 745.009 pH\n", "C_res = 735.294 fF\n", "Circuit Parameters\n", "-------------------\n", "f_qubit1 = 4.500 GHz\n", "f_qubit2 = 4.500 GHz\n", "E_C1 = 225.457 MHz\n", "E_C2 = 225.321 MHz\n", "E_Cc = 0.183 MHz\n", "g1 = 82.732 MHz\n", "g2 = 83.176 MHz\n", "\n", "Target Junction Parameters\n", " (for f_qubit1 = 4.5 GHz)\n", "--------------------------\n", "E_J1 = 12.380 GHz\n", "L_J1 = 13.203 nH\n", "E_J1/E_C1 = 54.912\n", "\n", "Target Junction Parameters\n", " (for f_qubit2 = 4.5 GHz)\n", "--------------------------\n", "E_J2 = 12.387 GHz\n", "L_J2 = 13.196 nH\n", "E_J2/E_C2 = 54.975\n", "\n", "Q1-Q2 g12 = 0.006 GHz\n", "Q1-res g1 = 301.813 MHz\n", "Q2-res g2 = 303.386 MHz\n", "Q1 freq (uncoupled) = 4.500 GHz\n", "Q2 freq (uncoupled) = 4.500 GHz\n", "Res freq (uncoupled) = 30.333 GHz\n", "Z on/off ratio = 1.121\n" ] } ], "source": [ "# Gives qubit parameters\n", "results = cap_sim.calc_params_2_floating_transmons(print_all_capacitances=True, \n", " qubit_freq=(qubit_freq),\n", " res = resonator\n", " )\n", "\n", "### " ] }, { "cell_type": "code", "execution_count": 8, "id": "15fc712a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Res_ground: -1445.730348239 fF\n", "Pad1 to pad2: -35.65852572964 fF\n", "Res to pad1: -17.64799832657 fF\n", "Res to pad2: -2.3543623043 fF\n" ] } ], "source": [ "print('Res_ground: ',capMat[0,3]*1e15, 'fF')\n", "print('Pad1 to pad2: ',capMat[1,2]*1e15, 'fF')\n", "print('Res to pad1: ',capMat[1,3]*1e15, 'fF')\n", "print('Res to pad2: ',capMat[2,3]*1e15, 'fF')" ] }, { "cell_type": "code", "execution_count": 9, "id": "db8a9554", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7.450087032524837e-10" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "resonator.get_res_inductance()" ] } ], "metadata": { "kernelspec": { "display_name": "sqdmetal_311", "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.14" } }, "nbformat": 4, "nbformat_minor": 5 }