Source code for quchip.control.drives_two_photon

"""TwoPhotonDrive -- parametric two-photon drive for Kerr-cat qubits.

Physical Hamiltonian (lab frame)::

    H_drive = eps2(t) * [a_dag^2 * exp(-i*2pi*omega_d*t) + a^2 * exp(+i*2pi*omega_d*t)]

At resonance (omega_d = 2*omega_f), the rotating-frame Hamiltonian is::

    H_rot = eps2(t) * (a_dag^2 + a^2)

The drive maps the delivered in-phase signal to ``a^2 + a_dag^2``. Setting the
carrier frequency to ``2*omega_f`` makes the weight-two operator bands
resonant in the corresponding rotating frame.

The real-field projection halves the scheduled amplitude: an
envelope of amplitude ``A(t)`` scheduled on this drive contributes
``A(t)/2 * (a_dag^2 + a^2)`` to ``H_rot``, not ``A(t) * (a_dag^2 + a^2)``.
Scheduling ``amplitude = 2*eps2(t)`` realizes the ``eps2(t)`` coefficient
shown in ``H_rot`` above.

References
----------
.. [1] Grimm et al., Nature 584, 205 (2020). arXiv:1907.12131.
.. [2] Hajr et al., PRX Quantum 5, 020347 (2024). arXiv:2404.16697.
"""

from __future__ import annotations

from typing import ClassVar

from quchip.control.drive import DeviceDrive
from quchip.control.signal import AnalyticSignal
from quchip.declarative.expr import as_operator_expr
from quchip.devices.base import BaseDevice


[docs] class TwoPhotonDrive(DeviceDrive): """Parametric two-photon drive for Kerr-cat qubit stabilisation. Coupling operator: ``a^2 + a_dag^2`` The drive should be scheduled at twice the cavity frequency (``freq = 2 * cavity.freq``) so that in the rotating frame the interaction is static: ``eps2(t) * (a_dag^2 + a^2)``. This combination of Kerr nonlinearity and two-photon drive creates and stabilises cat states. The engine band-decomposes ``a^2 + a_dag^2`` into excitation weights Delta_n = +2 and Delta_n = -2 and combines them with the delivered signal's carrier. The real-field projection contributes only half the scheduled envelope amplitude to each band: the coefficient landing on ``a_dag^2 + a^2`` in the rotating frame is ``A(t)/2``, where ``A(t)`` is the amplitude scheduled on this drive's envelope. Schedule ``amplitude=2*eps2(t)`` to realize the target two-photon drive strength ``eps2(t)`` used above and in ``alpha^2 = eps2/K``. Parameters ---------- target : BaseDevice | None Device to connect this drive to. ``None`` means unconnected. label : str | None Optional explicit label; otherwise auto-generated. References ---------- .. [1] Grimm et al., Nature 584, 205 (2020). arXiv:1907.12131. .. [2] Hajr et al., PRX Quantum 5, 020347 (2024). arXiv:2404.16697. Examples -------- >>> from quchip.devices.kerr_cavity import KerrCavity >>> from quchip.control.drives_two_photon import TwoPhotonDrive >>> cav = KerrCavity(freq=5.0, kerr=1.0, levels=10, label="cav") >>> d2 = TwoPhotonDrive(target=cav) >>> d2.target_label == cav.label True """ _type_prefix: ClassVar[str] = "two_photon"
[docs] def hamiltonian(self, device: BaseDevice, signal: AnalyticSignal): """Return the two-photon coupling channel ``a^2 + a_dag^2``. Parameters ---------- device : BaseDevice The cavity device being driven. """ a = device.lowering_operator() a_dag = device.raising_operator() operator = as_operator_expr( a @ a + a_dag @ a_dag, labels=(device.label,), dims=(device.local_space().dimension,), name=rf"\hat H_{{2\gamma,{device.label}}}", ) return signal.i * operator
[docs] def physics_notes(self) -> list[str]: """Return the base drive notes plus the two-photon coupling declaration.""" notes = super().physics_notes() notes.append( "Two-photon parametric drive: coupling operator a^2 + a_dag^2; " "schedule at freq=2*cavity.freq for resonant two-photon interaction." ) return notes