Spins

Module to support spin circuits.

The spins module holds the circuit instructions and simulators needed for cold-atom setups which control the collective spin of an ensemble of atoms in a Bose-Einstein-condensate.

In this setting, each wire in a quantum circuit describes a single quantum mechanical angular momentum (or spin) with principal quantum number \(S\). Upon measurement, each wire can be found in a state ranging from \(0\) to \(2S\). Backends to describe such spin circuits are subclasses of the BaseSpinBackend class. The SpinSimulator backend is a general purpose simulator backend that simulates spin circuits.

Spin backends

BaseSpinBackend(configuration[, provider])

Abstract base class for atomic mixture backends.

SpinSimulator([config_dict, provider])

A simulator to simulate general spin circuits.

At the start of the circuit each spin is taken to be initialized in the 0 state, in analogy to qubits.

Spin gates

Spin gates are quantum circuit instructions designed specifically for cold-atom based setups that control large spin ensembles. These gates are characterized by their effect on the spin ensemble. Spin gates are subclasses or instances of the SpinGate class. All of these gates define a generator property used to compute the time-evolution. These generators are second quantized operators (SpinOp from Qiskit Nature) that describe the gate Hamiltonian acting on the spins. When an entry of the qiskit_cold_atom.spins module is imported, the Spin gates are added to the QuantumCircuit class in Qiskit.

The module includes a number of gates suitable to a platform that implements rotations and squeezing of collective spins.

SpinGate(name, num_modes[, params, label, ...])

Unitary gates for spin circuits.

RLXGate(omega[, label])

Rotation of the collective spin of a cold atomic Bose-Einstein condensate around the x-axis.

RLYGate(omega[, label])

Rotation of the collective spin of a cold atomic Bose-Einstein condensate around the y-axis.

RLZGate(delta[, label])

Rotation of the collective spin of a cold atomic Bose-Einstein condensate around the z-axis.

RLZ2Gate(chi[, label])

Evolution of a coherent spin under the twisting dynamic generated by Lz^2'.

OATGate(chi, delta, omega[, label])

Evolution of a coherent spin under the one-axis-twisting Hamiltonian.

RLZLZGate(gamma[, label])

Coupled ZZ-rotation of two collective spins.

RLXLYGate(gamma[, label])

The spin exchange gate of two collective spins.

These gates should serve as an example of how a concrete collective spin platform can be described through qiskit_cold_atom. Users are encouraged to define their own gates to describe different collective spin experiments. If these gates define a generator property as laid out above, the :class:SpinSimulator can be used to simulate circuits with such custom gates.

Circuit solvers

Circuit solvers are classes that allow users to simulate a quantum circuit for cold-atom based setups. They are subclasses of BaseCircuitSolver and can be called on quantum circuits to solve them. The numerical simulation of spin circuits is carried out by the SpinCircuitSolver class. This simulates the circuits via exact diagonalization and provides access to the unitary, the statevector and simulated measurement outcomes of the circuit.

SpinCircuitSolver([spin, shots, seed])

Performs numerical simulations of spin systems by exactly computing the time evolution under unitary operations generated by exponentiating spin Hamiltonians.