FermiHubbard

class FermiHubbard(num_modes, j, u, mu, label=None)[source]

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

The generating Hamiltonian of the Fermi-Hubbard gate is

\(H = \sum_{i=1,\sigma}^{L-1} - J_i (f^\dagger_{i,\sigma} f_{i+1,\sigma} + f^\dagger_{i+1,\sigma} f_{i,\sigma}) + U \sum_{i=1}^{L} n_{i,\uparrow} n_{i,\downarrow} + \sum_{i=1,\sigma}^{L} \mu_i n_{i,\sigma}\)

where \(i\) indexes the mode, \(\sigma\) indexes the spin, \(L\) gives the total number of sites, \(J_i\) are the hopping strengths, \(U\) is the interaction strength and \(\mu_i\) are the local potentials that lead to local phases.

Circuit symbol:

     ┌──────────────┐
q_0: ┤   FHubbard   ├
     └──────────────┘

Initialize a global Fermi-Hubbard gate

Parameters:
  • num_modes (int) – number of tweezers on which the hopping acts, must be entire quantum register

  • j (List[float]) – list of hopping strengths between the tweezer. j[0] gives the strength of hopping between wires 0 and 1, j[1] gives the strength of hopping between wires 1 and 2, etc., so len(j) has to be of length num_wires-1

  • label – optional

  • u (float) – global interaction strength parameter

  • mu (List[float]) – list of parameters that tune the local phases, must be on length num_wires

  • label – optional

Raises:

QiskitColdAtomError

  • If the given num_modes is not an even integer. - If length of j not num_modes/2 - 1.

Attributes

FermiHubbard.condition_bits

Get Clbits in condition.

FermiHubbard.decompositions

Get the decompositions of the instruction from the SessionEquivalenceLibrary.

FermiHubbard.definition

Return definition in terms of other basic gates.

FermiHubbard.duration

Get the duration.

FermiHubbard.generator

The generating Hamiltonian of the FH Gate.

FermiHubbard.label

Return instruction label

FermiHubbard.name

Return the name.

FermiHubbard.num_clbits

Return the number of clbits.

FermiHubbard.num_qubits

Return the number of qubits.

FermiHubbard.params

return instruction params.

FermiHubbard.unit

Get the time unit of duration.

Methods

FermiHubbard.add_decomposition(decomposition)

Add a decomposition of the instruction to the SessionEquivalenceLibrary.

FermiHubbard.assemble()

Assemble a QasmQobjInstruction

FermiHubbard.broadcast_arguments(qargs, cargs)

Validation and handling of the arguments and its relationship.

FermiHubbard.c_if(classical, val)

Set a classical equality condition on this instruction between the register or cbit classical and value val.

FermiHubbard.control([num_ctrl_qubits, ...])

Overwrite control method which is supposed to return a controlled version of the gate.

FermiHubbard.copy([name])

Copy of the instruction.

FermiHubbard.inverse()

Get the inverse gate by reversing the sign of all gate parameters

FermiHubbard.is_parameterized()

Return True .IFF.

FermiHubbard.operator_to_mat(generator, ...)

Compute the matrix representation of the fermion operator.

FermiHubbard.power(exponent)

Creates a fermionic gate as gate^exponent

FermiHubbard.qasm()

Return a default OpenQASM string for the instruction.

FermiHubbard.repeat(n)

Creates an instruction with gate repeated n amount of times.

FermiHubbard.reverse_ops()

For a composite instruction, reverse the order of sub-instructions.

FermiHubbard.soft_compare(other)

Soft comparison between gates.

FermiHubbard.to_matrix([num_species, basis])

Return a Numpy.array for the gate unitary matrix.

FermiHubbard.validate_parameter(parameter)

Gate parameters should be int, float, or ParameterExpression