Fermions

Module to support fermionic circuits.

The fermions module holds the circuit instructions and simulators needed by cold-atom setups that trap fermionic atoms in optical tweezer arrays or lattices.

In this setting, each wire in a quantum circuit describes a fermionic mode. Upon measurement, each mode can be found to be occupied by a single particle (1) or be empty (0). Backends to describe such fermionic circuits are subclasses of the BaseFermionBackend class. The FermionSimulator backend is a general purpose simulator backend that simulates fermionic circuits similar to the QasmSimulator for qubits.

Fermionic backends

BaseFermionBackend(configuration[, provider])

Abstract base class for fermionic tweezer backends.

FermionSimulator([config_dict, provider])

A simulator to simulate general fermionic circuits.

The fermions might also come in several distinguishable species, as is the case when they carry a spin degree of freedom. In this case, each spatial mode of an experiment can be occupied by a particle of each spin state. In the circuit description, each individual mode is assigned its own wire. For example, a system of spin-1/2 fermions in four spatial modes is described by a circuit with eight wires where the first four wires denote the spin-up and the last four wires denote the spin-down modes.

Prior to applying gates, the fermionic modes in a quantum circuit need to be initialized with particles, which defines the total number of particles (excitations) in the circuit. This initial occupation number state can then be manipulated by applying Fermionic gates.

Fermionic gates

Fermionic gates are quantum circuit instructions designed specifically for cold-atom based setups that control fermionic atoms in tweezers. These gates are characterized by their effect on the fermions. Fermionic gates are subclasses or instances of the FermionicGate class. All of these gates define a generator property used to compute the time-evolution. These generators are second quantized operators (FermionicOp from Qiskit Nature) that describe the gate Hamiltonian acting on the register. When an entry of the qiskit_cold_atom.fermions module is imported, the Fermionic Gates are added to the QuantumCircuit class in Qiskit.

The module includes a number of gates suitable to a platform that natively implements Fermi-Hubbard type dynamics.

FermionicGate(name, num_modes[, params, ...])

Unitary gates for fermionic circuits.

FermiHubbard(num_modes, j, u, mu[, label])

Global 1D-Fermi-Hubbard dynamic consisting of the hopping, interaction and local phase gates.

Hop(num_modes, j[, label])

Hopping of particles to neighbouring wells due to tunneling.

Interaction(num_modes, u[, label])

On-site interaction of particles of opposite spin species on the same site.

Phase(num_modes, mu[, label])

Applying a local phase to individual tweezers through an external potential

FRXGate(phi[, label])

X-rotation between the spin-up and spin-down state at one tweezer site.

FRYGate(phi[, label])

Y-rotation between the spin-up and spin-down state at one tweezer site.

FRZGate(phi[, label])

Z-rotation between the spin-up and spin-down state at one tweezer site.

LoadFermions()

LoadFermions places a particle in an empty fermionic mode.

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

Circuit Solver

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 fermionic circuits is carried out by the FermionCircuitSolver class. This simulates the circuits via exact diagonalization and provides access to the unitary, the statevector and simulated measurement outcomes of the circuit.

FermionCircuitSolver([shots, seed, num_species])

Numerically simulate fermionic systems by exactly computing the time evolution under unitary operations generated by fermionic Hamiltonians.