Introduction

Transmon qubit

A transmon is a tiny superconducting circuit that behaves like an artificial atom. A Josephson junction lets Cooper pairs tunnel, and a large capacitor makes the qubit much less sensitive to stray charge.

Introduction

Picture a tiny superconducting island that can hold extra charge only in pairs of electrons. Those pairs are Cooper pairs. A Cooper-pair box connects that island to a reservoir through a Josephson junction: a thin insulating barrier that Cooper pairs can tunnel across without ordinary resistance.

A transmon is a Cooper-pair box with a large capacitor placed across the junction. The capacitor lowers the charging energy EC=e2/(2CΣ)E_C=e^2/(2C_\Sigma), the cost of putting extra charge on the island. The junction sets the Josephson energy EJ=Φ0Ic/(2π)E_J=\Phi_0 I_c/(2\pi), which measures how strongly Cooper pairs tunnel across the barrier.

The simple physics is a tug of war. Charging energy prefers a definite number of Cooper pairs on the island. Tunneling energy prefers a smooth quantum wave spread over many charge numbers. The transmon chooses strong tunneling and weak charging energy, so random nearby charge has little effect while the lowest two energy levels can still store a qubit.

This matters because the transmon is stable, lithographic, and easy to control with microwave pulses. It is one of the standard building blocks for superconducting quantum processors and circuit-QED experiments.

Physical Picture

CJJ
Single-junction transmon: a junction in parallel with a shunt capacitor. top island carries n^\hat n bottom node is ground.

Cosine well levels

?
EJ/h 12.5
EC/h 0.25
ng 0.00
φ (En - E0)/h (GHz)
f014.750 GHz
α-0.250 GHz
EJ/EC50.0
Open transmon calculator ->

Python Script

Show calculation script Charge-basis diagonalization and plotting helper
import numpy as np
import matplotlib.pyplot as plt


def first_pk(y):
    th = 0.08 * np.max(y)
    for i in range(1, len(y) - 1):
        if y[i] > th and y[i] >= y[i - 1] and y[i] >= y[i + 1]:
            return i
    ix = np.flatnonzero(y > th)
    return int(ix[0]) if len(ix) else 0


def wave(z):
    ps = np.empty(z.shape, dtype=float)
    for i in range(z.shape[1]):
        re = z[:, i].real
        im = z[:, i].imag
        y  = re if np.max(np.abs(re)) >= np.max(np.abs(im)) else im
        k  = first_pk(np.abs(y))
        sg = -1 if y[k] < 0 else 1
        y  = sg * y
        ps[:, i] = y / max(np.max(np.abs(y)), 1e-12)
    return ps


def solve(ej=12.5, ec=0.25, ng=0.0, ncut=25, nlev=6, nphi=401):
    n = np.arange(-ncut, ncut + 1)
    h = np.diag(4 * ec * (n - ng) ** 2)
    for i in range(len(n) - 1):
        h[i, i + 1] = h[i + 1, i] = -ej / 2

    e, v = np.linalg.eigh(h)
    e, v = e[:nlev], v[:, :nlev]

    ph = np.linspace(-np.pi, np.pi, nphi)
    z  = np.exp(1j * np.outer(ph, n)) @ v / np.sqrt(2 * np.pi)
    ps = wave(z)

    u = -ej * np.cos(ph)
    return ph, u, e, ps


def plot(ej=12.5, ec=0.25, ng=0.0):
    ph, u, e, ps = solve(ej, ec, ng)
    y = e - e[0]
    u = u - e[0]
    amp = 2 * max(0.28, min(0.9, 0.035 * (max(u) - min(u))))

    fig, ax = plt.subplots(figsize=(6.4, 4.0), constrained_layout=True)
    ax.plot(ph, u, color="black", lw=1.6)
    for i, yy in enumerate(y):
        ax.axhline(yy, color="0.72", lw=0.8)
        ax.fill_between(ph, yy, yy + amp * ps[:, i], alpha=0.18)
        ax.plot(ph, yy + amp * ps[:, i], lw=1.4)

    ax.set_xlim(-np.pi, np.pi)
    ax.set_ylim(min(u) - 0.8, max(max(u), y[-1]) + 0.8)
    ax.set_xlabel(r"$\varphi$")
    ax.set_ylabel(r"$(E-E_0)/h$ (GHz)")
    ax.set_xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi])
    ax.set_xticklabels([r"$-\pi$", r"$-\pi/2$", "0", r"$\pi/2$", r"$\pi$"])
    return fig, ax


if __name__ == "__main__":
    fig, ax = plot(ej=12.5, ec=0.25, ng=0.0)
    fig.savefig("transmon_levels.png", dpi=180)

Hamiltonian

H^=4EC(n^ng)2EJcosφ^\hat H = 4E_C(\hat n-n_g)^2 - E_J\cos\hat\varphif018EJECECh,αEChf_{01}\simeq \frac{\sqrt{8E_JE_C}-E_C}{h},\qquad \alpha\simeq-\frac{E_C}{h}

The operator n^\hat n counts extra Cooper pairs on the island, while φ^\hat\varphi is the superconducting phase difference across the junction. They are canonical conjugates, [φ^,n^]=i[\hat\varphi,\hat n]=i, like position and momentum in a harmonic oscillator. In the phase basis, n^=iφ\hat n=-i\partial_\varphi. In charge language the device is a chain of charge states n|n\rangle; in phase language it is motion in a repeating Josephson valley.

The charging term 4EC(n^ng)24E_C(\hat n-n_g)^2 is diagonal in the charge basis and penalizes extra charge on the island. The capacitance supplies the circuit’s inertia. Here EC=e2/(2CΣ)E_C=e^2/(2C_\Sigma) is set by the total capacitance and ngn_g is offset charge from gate voltage, trapped charges, and nearby electric-field noise. If the transition frequency moves with ngn_g, that charge noise dephases the qubit.

The Josephson term EJcosφ^-E_J\cos\hat\varphi makes the repeating cosine valley in phase space. In the charge basis it is the Cooper-pair tunneling term because e±iφ^e^{\pm i\hat\varphi} shifts charge by one Cooper pair:

EJcosφ^=EJ2(eiφ^+eiφ^)=EJ2n(n+1n+nn+1)-E_J\cos\hat\varphi = -\frac{E_J}{2}\left(e^{i\hat\varphi}+e^{-i\hat\varphi}\right) = -\frac{E_J}{2}\sum_n\left(|n+1\rangle\langle n|+|n\rangle\langle n+1|\right)

The junction therefore connects neighboring charge states with hopping amplitude EJ/2-E_J/2.

The useful transmon regime is EJ/EC1E_J/E_C\gg1: charge dispersion drops rapidly, while the anharmonicity remains roughly set by EC/h-E_C/h. The wavefunction becomes broad in charge number, so the qubit barely notices slow offset-charge motion, while the quantized levels in one cosine valley are uneven enough to address the lowest two as a qubit.

Reference