Static Analysis
Finding theoretical quantum parameters of a superconducting cavity-transmon-readout system🥳¶
We use the program HFSS by Ansys, in addition with the pyEPR python library to find the parameters of the system. Without getting to much into details, the system can be divided into three main parts:
- The superconducting cavity - A Superconducting Radio Frequency (SRF) cavity (half of an SRF cavity, to be precise), inside of which our system is stored. The electromagnetic modes in the cavity are used to store quantum information for a long time.
- The Transmon - The Transmon is a device based on the Josephson effect, it is used to add non-linearity to the enregy spectrum of the cavity to allow universal control.
- The read-out resonator - The read-out (RO) resonator is simply a strip-line of a superconductor that is coupled to the transmon dispersivly, this way you can use it's frequency to measure the state of the qubit.
There are many parameters we may care about in our system, and in this notebook we'll find them with the help of HFSS and pyEPR. The most basic parameters we may care about are the frequencies of our devices, the cavity and read-out have resonating frequencies based on the geometry we set in HFSS while the transmon frequency emarges from the Josephson effect, and since it's on a scale much smaller than HFSS can handle, we need to define the junction parameters in code, and from that get the frequency.
Note: Each device can have many resonating frequencies and it might be a bit difficult to distinguish which mode coresponds to which device, if you do want to find the corespondens (and we do) there are a couple of ways you can go about it. The first is to simply plot the magnitude of each mode and see where the field is the strongest. If your'e devices are close to one another they might be difficult to distinguish so another mehod is use the pyEPR module and find the precage of energy of the mode near each device and using this to determine the modes.
Another set of parameters we may care about are the coupling between the modes, denoted $\chi_{ij}$ for the coupling between the modes $\omega_i$ and $\omega_j$, this is sometimes called the cross-kerr frequencies if $i \ne j$. In the case where $i=j$, $\chi_{ii}$ is the anharmonicity of the mode $\omega_i$, usually denoted $\alpha_i$.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import pyEPR as epr
plt.style.use('ggplot')
plt.style.use('seaborn-darkgrid')
🔹 Connecting to HFSS¶
pinfo = epr.Project_Info(project_path = '.',
project_name = 'transmon-cavity-ro', # File name
design_name = 'design')
🔹 Run setup (Find modes and Q-factors in HFSS)¶
pinfo.setup.analyze()
🔹 Define the junction (and any other non-linear component)¶
pinfo.junctions['j1'] = {'Lj_variable' : 'Lj_1',
'rect' : 'rect_jj1',
'line' : 'line_jj1',
'length' : epr.parse_units('100um')}
# Check that valid names of variables and objects have been supplied.
# An error is raised with a message if something is wrong.
pinfo.validate_junction_info()
🔹 Distributed Analysis (not quantum)¶
Note that 3 modes is the maximum we can analyze fully❗ See this issue
eprh = epr.DistributedAnalysis(pinfo)
eprh.do_EPR_analysis(modes=[0,1,4]);
🔹 Quantum Analysis (yes quantum)¶
epra = epr.QuantumAnalysis(eprh.data_filename)
epra.analyze_all_variations(cos_trunc = 8, fock_trunc = 15);
We can look at the results from HFSS in the notebook with pyEPR with the code
eprh.get_freqs_bare_pd(eprh.variations[0])
🎶 Understanding the Modes¶
Looking around in HFSS using the method mentioned in the begining we can find that the modes and their coresponding object (device) are
index | object | Frequency (GHz) | Quality Factor |
---|---|---|---|
0 | transmon | $4.55$ | $4.65 \cdot 10^7$ |
1 | cavity | $4.85$ | $3.85 \cdot 10^{12}$ |
2 | cavity | $7.03$ | $1.11 \cdot 10^7$ |
3 | cavity | $7.03$ | $1.03 \cdot 10^7$ |
4 | readout | $7.61$ | $1.98 \cdot 10^5$ |
If you rememver the shape of the cavity was symetric along the $\hat{x}$-$\hat{y}$ plena (it is circular in that plane), and is not symetric in the $\hat{z}$ direction, this is why excpect degeneret modes to come in pairs, these are the modes we don't care about, and the modes we care about are those in the $\hat{z}$ direction. In this case modes 2 and 3 are degeneret so we'll ignore them. The modes we care about are 0, 1 and 4
🎉 Cross-kerr and anharmonicities¶
pyEPR just calculated for us all the elemets of $\chi_{ij}$ ($3\times 3$ matrix), let's understand this data
chis = epra.get_chis()
chis
The diagonal elements of the matrix are the anharmonicities $\alpha_i$ and the off-diagonal elements are the coupling between the modes (this is why is symetric, since the coupling between mode 1 and mode 2 is the same as the coupling between mode 2 and mode 1)
# anharmonicities
alphas = np.diag(chis)
alpha_t, alpha_c, alpha_r = alphas
# Couplings
chi_ct = chis[1][0] # cavity-transmon
chi_tr = chis[0][2] # transmon-readout
chi_cr = chis[1][2] # cavity-readout
pd.DataFrame({'Anharmonicity (MHz)': alphas})
pd.DataFrame({'Coupling (MHz)': [chi_ct, chi_tr, chi_cr]}, index=['cavity-transmon', 'transmon-readout', 'cavity-readout'])
Do these results make sense? 🤔¶
First the anharmonicities, we can see that the transmon anharmonicity is around ~$128$ MHz and the cavity and readout have basicly no anharmonicity, which is exactly what we expect❗ Another thing we expect (and want) is that the transmon would have a strong coupling to the cavity and readout, while the coupling between the cavity and readout should be negligible, and this is again exactly what we see😍 We may also want to check that the frequencies and couplings have correct values (order of magnitude), to do so we'll compare to other experimental results, mainly Philip Reinhold's Thesis table 5.1 page 85, these results are in fact exactly what we want!🎉🎉💃🥳🎈