quchip.devices.transmon.duffing¶
Duffing-approximation transmon qubit.
Hamiltonian:
where \(\hat{n} = a^\dagger a\), \(\omega\) is the bare
0 -> 1 transition frequency and \(\alpha\) is the
anharmonicity (conventionally negative for a transmon,
\(\alpha \sim -200\ \text{MHz}\)).
Approximation & regime of validity¶
The Kerr / Duffing expansion of the transmon’s cosine Josephson potential truncated at quartic order:
expanded to \(\hat{\phi}^4\) after rotating-frame normal ordering. Validity conditions (Koch et al. 2007):
Transmon regime, \(E_J / E_C \gtrsim 50\). The charge-dispersion of the lowest levels becomes exponentially small in \(\sqrt{8 E_J / E_C}\), so offset-charge noise is suppressed and a weakly anharmonic oscillator is a good approximation of the qubit.
Low-lying levels only. Higher levels probe more of the cosine nonlinearity and deviate from the quartic truncation.
Anharmonicity \(\alpha \approx -E_C\), with \(\omega_{01} \approx \sqrt{8 E_J E_C} - E_C\).
Not captured: full charge-basis spectrum, higher-order nonlinearities (\(\hat{\phi}^6\) and beyond), flux-tunability, two-qubit dispersive shifts beyond what couplings/drives supply.
References
Koch, Yu, Gambetta, Houck, Schuster, Majer, Blais, Devoret, Girvin & Schoelkopf, Charge-insensitive qubit design derived from the Cooper pair box, Physical Review A 76, 042319 (2007), Eq. 2.6 (Duffing form); Eqs. 2.11–2.12 (regime of validity).
Didier, Sete, da Silva & Rigetti, Analytical modeling of parametrically modulated transmon qubits, Physical Review A 97, 022330 (2018) — anharmonic-oscillator sector used in pulse-level modelling.
Krantz, Kjaergaard, Yan, Orlando, Gustavsson & Oliver, A quantum engineer’s guide to superconducting qubits, Applied Physics Reviews 6, 021318 (2019) — §III.B for the Duffing form, §V for the
T1/T2/ thermal channels that the base class attaches.
Noise hooks inherited from BaseDevice
(T1, T2, thermal_occupation) produce the standard
Lindblad channels described in that base class.
Example
>>> from quchip.chip import Chip
>>> from quchip.devices import DuffingTransmon, Resonator
>>> q = DuffingTransmon(freq=5.0, anharmonicity=-0.25, levels=3, label="q")
>>> r = Resonator(freq=7.0, levels=6, label="r")
>>> chip = Chip(devices=[q, r])
>>> q.computational, q.freq, q.anharmonicity
(True, 5.0, -0.25)
Functions
|
Shared Duffing local Hamiltonian |
Classes
|
Transmon modelled as a weakly anharmonic Duffing oscillator. |
- quchip.devices.transmon.duffing.duffing_expr(op, freq, anharmonicity)[source]¶
Shared Duffing local Hamiltonian
H = omega n + (alpha/2) n (n - I).
- class quchip.devices.transmon.duffing.DuffingTransmon(freq=unbound, anharmonicity=unbound, *, levels=3, label=None, T1=None, T2=None, thermal_occupation=None)[source]¶
Bases:
FockDeviceTransmon modelled as a weakly anharmonic Duffing oscillator.
- Parameters:
freq (float) – Bare
0 -> 1transition frequency ω in GHz. Must be positive. Can be a JAX tracer for sweeps / gradients.anharmonicity (float) – Anharmonicity α in GHz. Usually negative for superconducting transmons (for example
-0.25GHz). Can be a JAX tracer.levels (int, default 3) – Fock-space truncation. Three levels suffice for leakage-aware single-qubit modelling. Increase it for higher-level physics (for example iSWAP-family gates through the
|02>-|11>crossing).label (str | None, default None) – If omitted, auto-generated as
duffing_{idx}with the shared labeling counter.T1 (float or None, default None) – Energy-relaxation time in ns.
Nonedisables T1 relaxation.T2 (float or None, default None) – Total 0-1 coherence time in ns, not a pure-dephasing time. If both are set, it must satisfy
T2 <= 2*T1.Nonedisables T2 noise.thermal_occupation (float or None, default None) – Dimensionless mean bath occupation.
Nonedisables thermal absorption.
References
Koch et al., Phys. Rev. A 76, 042319 (2007), https://doi.org/10.1103/PhysRevA.76.042319.
Example
>>> from quchip.devices import DuffingTransmon >>> q = DuffingTransmon(freq=5.0, anharmonicity=-0.25, T1=30_000.0, T2=20_000.0) >>> len(q.collapse_operators()) >= 1 True
- tunable_param_names = ('freq', 'anharmonicity')¶
Parameters eligible for inverse design. DeviceModel derives these from declared fields unless the class or an ancestor supplies a tuple. Explicit tuples remain authoritative when inherited; an empty tuple excludes the device from inverse design. Plain BaseDevice subclasses default to an empty tuple without derivation.
- dressed_fit_target_fields = (('freq', 'freq'), ('anharmonicity', 'anharmonicity'))¶
(dressed_observable, declared_field)pairs used when this device appears in the desired-chip form offit_a_dress. Empty means that the model makes no automatic dressed-target claim; circuit-level models can remain fixed until the user supplies explicit constraints.
- dressed_fit_param_names = ('freq', 'anharmonicity')¶
Bare parameters normally varied to reproduce
dressed_fit_target_fields. This remains separate fromtunable_param_names: a model may expose parameters for sweeps without claiming that inverse design can identify all of them from its default dressed observables.
- approximation = 'Duffing expansion: cosine Josephson potential truncated at 4th order.'¶
Declared approximation-regime statement surfaced by
physics_notes()— the mechanism that keeps a model’s stated validity range attached to the class rather than buried in a docstring a caller may not read.
- computational = True¶
Whether this device represents a computational qubit, as opposed to e.g. a bus resonator or a coupler element.
- freq: Scalar = Parameter(default=unbound, positive=True, nonnegative=False, serialize=True, unit='GHz', symbol='\\omega', noise=False, kw_only=False, required=False)¶
- anharmonicity: Scalar = Parameter(default=unbound, positive=False, nonnegative=False, serialize=True, unit='GHz', symbol='\\alpha', noise=False, kw_only=False, required=False)¶
- local_hamiltonian(op, p)[source]¶
Return the local Duffing Hamiltonian.
- Parameters:
op (LocalOps) – Fock operator namespace.
p (ParameterNamespace) – Symbolic
freqandanharmonicityvalues.