qml.spin.emery¶
- emery(lattice, n_cells, hopping=1.0, coulomb=1.0, intersite_coupling=1.0, boundary_condition=False, neighbour_order=1, mapping='jordan_wigner')[source]¶
Generates the Hamiltonian for the Emery model on a lattice.
The Hamiltonian for the Emery model is represented as:
ˆH=−t∑⟨i,j⟩,σc†iσcjσ+U∑ini↑ni↓+V∑<i,j>(ni↑+ni↓)(nj↑+nj↓) ,where t is the hopping term representing the kinetic energy of electrons, U is the on-site Coulomb interaction representing the repulsion between electrons, V is the intersite coupling, <i,j> represents the indices for neighbouring sites, σ is the spin degree of freedom, and nk↑, nk↓ are number operators for spin-up and spin-down fermions at site k. This function assumes two fermions with opposite spins on each lattice site.
- Parameters
lattice (str) – Shape of the lattice. Input values can be
'chain'
,'square'
,'rectangle'
,'triangle'
,'honeycomb'
,'kagome'
,'lieb'
,'cubic'
,'bcc'
,'fcc'
or'diamond'
.n_cells (list[int]) – Number of cells in each direction of the grid.
hopping (float or tensor_like[float]) – Hopping strength between neighbouring sites. It can be a number, an array of length equal to
neighbour_order
or a square matrix of shape(n_sites, n_sites)
, wheren_sites
is the total number of sites. Default value is 1.0.coulomb (float or tensor_like[float]) – Coulomb interaction between spins. It can be a number or an array of length equal to the number of spins. Default value is 1.0.
intersite_coupling (float or tensor_like[float]) – Interaction strength between spins on neighbouring sites. It can be a number, an array with length equal to
neighbour_order
or a square matrix of size(n_sites, n_sites)
, wheren_sites
is the total number of sites. Default value is 1.0.boundary_condition (bool or list[bool]) – Specifies whether or not to enforce periodic boundary conditions for the different lattice axes. Default is
False
indicating open boundary condition.neighbour_order (int) – Specifies the interaction level for neighbors within the lattice. Default is 1, indicating nearest neighbours.
mapping (str) – Specifies the fermion-to-qubit mapping. Input values can be
'jordan_wigner'
,'parity'
or'bravyi_kitaev'
.
- Raises
ValueError – If
hopping
,coulomb
, orintersite_coupling
doesn’t have correct dimensions, or ifmapping
is not available.- Returns
Hamiltonian for the Emery model.
- Return type
Example
>>> n_cells = [2] >>> h = 0.5 >>> u = 1.0 >>> v = 0.2 >>> spin_ham = qml.spin.emery("chain", n_cells, hopping=h, coulomb=u, intersite_coupling=v) >>> spin_ham ( -0.25 * (Y(0) @ Z(1) @ Y(2)) + -0.25 * (X(0) @ Z(1) @ X(2)) + 0.7000000000000002 * I(0) + -0.25 * (Y(1) @ Z(2) @ Y(3)) + -0.25 * (X(1) @ Z(2) @ X(3)) + -0.35 * Z(1) + -0.35 * Z(0) + 0.25 * (Z(0) @ Z(1)) + -0.35 * Z(3) + -0.35 * Z(2) + 0.25 * (Z(2) @ Z(3)) + 0.05 * (Z(0) @ Z(2)) + 0.05 * (Z(0) @ Z(3)) + 0.05 * (Z(1) @ Z(2)) + 0.05 * (Z(1) @ Z(3)) )