qml.spin.kitaev

kitaev(n_cells, coupling=None, boundary_condition=False)[source]

Generates the Hamiltonian for the Kitaev model on the honeycomb lattice.

The Kitaev model Hamiltonian is represented as:

\[\begin{align*} \hat{H} = K_X \sum_{\langle i,j \rangle \in X}\sigma_i^x\sigma_j^x + \:\: K_Y \sum_{\langle i,j \rangle \in Y}\sigma_i^y\sigma_j^y + \:\: K_Z \sum_{\langle i,j \rangle \in Z}\sigma_i^z\sigma_j^z \end{align*}\]

where \(\sigma\) is a Pauli operator and \(<i,j>\) represents the indices for neighbouring spins. The parameters \(K_X\), \(K_Y\), \(K_Z\) are the coupling constants defined for the Hamiltonian, where \(X\), \(Y\), \(Z\) represent the set of edges in the Honeycomb lattice between spins \(i\) and \(j\) with real-space bond directions \([0, 1], [\frac{\sqrt{3}}{2}, \frac{1}{2}], [\frac{\sqrt{3}}{2}, -\frac{1}{2}]\), respectively.

Parameters
  • n_cells (list[int]) – Number of cells in each direction of the grid.

  • coupling (tensor_like[float]) – Coupling between spins. It can be an array of length 3 defining \(K_X\), \(K_Y\), \(K_Z\) coupling constants. Default value is 1.0 for each coupling constant.

  • 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.

Raises

ValueError – if coupling doesn’t have correct dimensions.

Returns

Hamiltonian for the Kitaev model.

Return type

Sum

Example

>>> n_cells = [2, 2]
>>> k = np.array([0.5, 0.6, 0.7])
>>> spin_ham = qml.spin.kitaev(n_cells, coupling=k)
>>> spin_ham
(
  0.5 * (X(0) @ X(1))
  + 0.5 * (X(2) @ X(3))
  + 0.5 * (X(4) @ X(5))
  + 0.5 * (X(6) @ X(7))
  + 0.6 * (Y(1) @ Y(2))
  + 0.6 * (Y(5) @ Y(6))
  + 0.7 * (Z(1) @ Z(4))
  + 0.7 * (Z(3) @ Z(6))
)