In [1]:
from cpwprop import *
from helprop import *
import matplotlib.pyplot as plt 
from scipy.constants import c
%matplotlib inline

In [2]:
# Default values
default = {'length':                [7153E-6],
           'conductorWidth':        [20E-6],
           'gapWidth':              [10E-6],
           'conductorThickness':    [100E-9],
           'resonatorType':         'quarter',
           'conductorMaterial':     'Niobium Nitride',
           'substrateMaterial':     'Silicon',
           'temperature':           [3],
           'couplingCapacitance':   [10E-15],
           'loadBoundaryCondition': 'Short',
           'mode':                  [1]}

In [9]:
# Instantiate a CPWResonator object
mCPW = CPWResonator(length                = default['length'], 
                    conductorWidth        = default['conductorWidth'], 
                    gapWidth              = default['gapWidth'], 
                    conductorThickness    = default['conductorThickness'],
                    resonatorType         = default['resonatorType'], 
                    conductorMaterial     = default['conductorMaterial'], 
                    substrateMaterial     = default['substrateMaterial'],
                    temperature           = default['temperature'], 
                    couplingCapacitance   = default['couplingCapacitance'], 
                    loadBoundaryCondition = default['loadBoundaryCondition'], 
                    mode                  = [1,2,3,4,5,6])

In [10]:
# Display the coupled resonance frequencies
pd.DataFrame(mCPW.coupledResonantFrequency()/10**9, columns=['frequency (GHz)'], index=mCPW.mode)


Out[10]:
frequency (GHz)
1 4.083985
2 12.251972
3 20.420007
4 28.588123
5 36.756352
6 44.924725

The required length of the resonator (assuming no shifts due to effects of temperature, capacitive coupling, etc) such that the corresponsing harmonic matches a given frequency are calculated below,


In [6]:
def length(cpw, frequency):
    m = cpw.getModeFactor()
    return (c / np.sqrt(cpw.effectivePermittivity())) / (m * frequency)

state_1 = State(n=68, L=67, S=1, M=67)
state_2 = State(n=69, L=68, S=1, M=68)
atomFreq = transition_energy(state_1, state_2, units='ghz')
lengths = length(mCPW, atomFreq*10**9)
print('Transition frequency ({} -> {}): {:.3f} GHz'.format(state_1, state_2, atomFreq))


Transition frequency (❘ 68 67 1 67 67 ⟩ -> ❘ 69 68 1 68 68 ⟩): 20.470 GHz

In [7]:
pd.DataFrame(list(map(int, lengths*10**6)), columns=['length (mm)'], index=mCPW.mode)


Out[7]:
length (mm)
1 1441
2 4324
3 7208
4 10091
5 12974
6 15858

In [13]:
# Display all of the properies of a particular mode
mCPW = CPWResonator(length                = default['length'], 
                    conductorWidth        = default['conductorWidth'], 
                    gapWidth              = default['gapWidth'], 
                    conductorThickness    = default['conductorThickness'],
                    resonatorType         = default['resonatorType'], 
                    conductorMaterial     = default['conductorMaterial'], 
                    substrateMaterial     = default['substrateMaterial'],
                    temperature           = default['temperature'], 
                    couplingCapacitance   = default['couplingCapacitance'], 
                    loadBoundaryCondition = default['loadBoundaryCondition'], 
                    mode                  = [3])

mCPW.info()


Out[13]:
[                      Supplied parameters
 length                           0.007153
 conductorWidth                      2e-05
 gapWidth                            1e-05
 conductorThickness                  1e-07
 resonatorType                     quarter
 conductor                 Niobium Nitride
 substrate                         Silicon
 temperature                             3
 couplingCapacitance                 1e-14
 loadImpedance                          50
 loadBoundaryCondition               Short
 mode                                    3,
                                         Calculated parameters
 effectivePermittivity                               (6.45+0j)
 capacitancePerUnitLength          (1.7348706631438613e-10+0j)
 totalInductancePerUnitLength      (4.1877683676182186e-07+0j)
 geometricInductancePerUnitLength  (4.1366731330511473e-07+0j)
 kineticInductancePerUnitLength     (5.109523456707111e-09+0j)
 londonPenetrationDepthT            (4.002354172196782e-08+0j)
 characteristicImpedance               (49.131245574935484+0j)
 inputImpedance                             1563.049934747406j
 uncoupledResonantFrequency             (20502032155.92497+0j)
 coupledResonantFrequency              (20420006638.216465+0j)
 effectiveCouplingCapacitance       (9.989639436236115e-15+0j)
 internalQualityFactor                  (2287496.398356891+0j)
 externalQualityFactor                  (967.3341132182833+0j)
 loadedQualityFactor                     (966.925220880022+0j)
 insertionLoss                       (0.003672303619563942+0j)
 beta                                  (1097.9982712113074+0j)]

In [ ]: