Source code for qiskit_metal.analyses.em.kappa_calculation
"""This code calculates the photon loss (kappa) due to the capacitive coupling
between CPWs and input/output transmission lines in a quantum circuit.
Two cases are treated: In the first case, three arguments are passed to the function kappa_in
and the resonant frequency of the CPW is input as a float. In the second case, six arguments
are passed to kappa_in and the frequency of the CPW is calculated assuming an ideal CPW.
Key References:
D. Schuster, Ph.D. Thesis, Yale University (2007)
https://rsl.yale.edu/sites/default/files/files/RSL_Theses/SchusterThesis.pdf
T. McConkey, Ph.D. Thesis, University of Waterloo (2018)
https://uwspace.uwaterloo.ca/bitstream/handle/10012/13464/McConkey_Thomas.pdf?sequence=3&isAllowed=y
Mohebbi and Majedi, Superconducting Science and Technology 22, 125028 (2009)
https://iopscience.iop.org/article/10.1088/0953-2048/22/12/125028/meta
P. Krantz, et al. Physical Review Applied 6, 021318 (2019)
https://aip.scitation.org/doi/10.1063/1.5089550
"""
from math import pi
from scipy.special import ellipk
__all__ = ["kappa_in"]
[docs]
def kappa_in(*argv):
"""A simple calculator for the kappa value of a readout resonator.
Args:
freq (float): The frequency of interest, in Hz
C_in (float): Effective capacitance between CPW and environment (from Q3D), in Farads
freq_res (float): Lowest resonant frequency of a CPW (from HFSS), in Hz
length (float): Length of the CPW readout resonator, in meters
res_width (float): Width of the resonator trace (center) line, in meters
res_gap (float): Width of resonator gap (dielectric space), in meters
eta (float): 2.0 for half-wavelength resonator; 4.0 for quarter-wavelength resonator
Returns:
float: Kappa value
"""
# Effective impedance of the CPW transmission line, in Ohms
Z_tran = 50.0
# Effective impedance of the readout resonator, in Ohms
Z_res = 50.0
# If three arguments are passed to kappa_in, then the lowest resonator frequency is assumed to be an input
if len(argv) == 3:
for i in argv:
freq = argv[0]
C_in = argv[1]
freq_res = argv[2]
# Calculation of kappa
kappa = (2 / pi) * (freq**2.0) * (C_in**2.0) * (Z_tran**2.0) * (freq_res)
return kappa
# If six arguments are passed to kappa_in, the lowest resonator frequency of the resonator is calculated in the ideal case
elif len(argv) == 6:
for i in argv:
freq = argv[0]
C_in = argv[1]
length = argv[2]
res_width = argv[3]
res_gap = argv[4]
eta = argv[5]
# Arguments for elliptic integrals
k0 = (res_width) / (res_width + 2.0 * res_gap)
k01 = (1.0 - k0**2.0) ** (0.5)
# Calculation of the first resonant frequency of an ideal resonator
freq_res = (
(Z_res) * (ellipk(k0**2.0)) / (15.0 * eta * length * ellipk(k01**2.0))
)
# Calculation of kappa
kappa = (2 / pi) * (freq**2.0) * (C_in**2.0) * (Z_tran**2.0) * (freq_res)
return kappa
# Only three or six arguments accepted by kappa_in, otherwise the calculation in invalid.
else:
kappa = "Invalid number of arguments passed for kappa_in"