Helper functions for spiral iPEPS ansatz

varipeps.expectation.spiral_helpers.apply_unitary(gate: Array, delta_r: Array, q: Sequence[Array], unitary_operator_D: Array, unitary_operator_sigma: Array, phys_d: int, number_sites: int, apply_to_index: Sequence[int], wavevector_type: Wavevector_Type) Array

Apply the unitary of the spiral iPEPS approach to a gate. The function calculates the relative unitary gate from the operator, the spatial difference and the wavevector.

Parameters:
  • gate (jax.numpy.ndarray) – The gate which should be updated with the unitary operator.

  • delta_r (jax.numpy.ndarray) – Vector for the spatial difference. Can be a sequence if the spatial difference are different for the single indices.

  • q (sequence of jax.numpy.ndarray) – Sequence with the relevant wavevector for the different indices of the gate.

  • unitary_operator_D (jax.numpy.ndarray) – Array with the eigenvalues of the operator from which the unitary is generated.

  • unitary_operator_sigma (jax.numpy.ndarray) – Array with the eigenvectors of the operator from which the unitary is generated.

  • phys_d (int) – Physical dimension of the indices of the gate.

  • number_sites (int) – Number of sites the gate is applied to.

  • apply_to_index (sequence of int) – The indices of the gate which should be modified by the unitary generated to the same ordered sequence of wavevectors.

  • wavevector_type (Wavevector_Type) – Type of the wavevector (see type definition for details).

Returns:

The updated gate with the unitary applied.

Return type:

jax.numpy.ndarray