Calculation of two sites expectation values
- class varipeps.expectation.two_sites.Two_Sites_Expectation_Value(horizontal_gates: Sequence[jax.Array], vertical_gates: Sequence[jax.Array], is_spiral_peps: bool = False, spiral_unitary_operator: jax.Array | None = None)[source]
Bases:
Expectation_Model- __call__(peps_tensors: Sequence[Array], unitcell: PEPS_Unit_Cell, spiral_vectors: Array | Sequence[Array] | None = None, *, normalize_by_size: bool = True, only_unique: bool = True) Array | List[Array][source]
Calculate the expectation value for PEPS unitcell depending on the gates set in the class.
- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The sequence of unique PEPS tensors in the unitcell.unitcell (
PEPS_Unit_Cell) – The PEPS unitcell.spiral_vectors (single or sequence of
jax.numpy.ndarray, optional) – If the expectation value is for a spiral iPEPS ansatz, in this argument the wavevectors are expected.Default:None- Keyword Arguments:
normalize_by_size (
bool, optional) – Flag if the expectation value should be normalized by the number of tensors in the unitcell.Default:Trueonly_unique (
bool, optional) – Flag if the expectation value should be calculated just once for each unique PEPS tensor in the unitcell.Default:True- Returns:
The expectation values for all gates. Single tensor if only one gate is applied.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_diagonal_horizontal_rectangle_multiple_gates(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gates: Sequence[Array]) List[Array][source]
Calculate the two site expectation values for two from top left to the bottom right site of in a 2x3 horizontal rectangle ordered PEPS tensors and their environment.
The order of the PEPS sequence have to be [top-left, top-middle, top-right, bottom-left, bottom-middle, bottom-right].
- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Sequence with the gates which should be applied to the PEPS tensors. Gates are expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
List with the calculated expectation values of each gate.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_diagonal_top_left_bottom_right_multiple_gates(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gates: Sequence[Array]) List[Array][source]
Calculate the two site expectation values for two from top left to bottom right diagonal ordered PEPS tensor and their environment.
The order of the PEPS sequence have to be [top-left, top-right, bottom-left, bottom-right].
- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Sequence with the gates which should be applied to the PEPS tensors. Gates are expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
List with the calculated expectation values of each gate.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_diagonal_top_left_bottom_right_single_gate(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gate: Array) Array[source]
Calculate the two site expectation value for two from top left to bottom right diagonal ordered PEPS tensor and their environment.
The order of the PEPS sequence have to be [top-left, top-right, bottom-left, bottom-right].
This function just wraps
calc_two_sites_diagonal_top_left_bottom_right_multiple_gates.- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Gate which should be applied to the PEPS tensors. The gate is expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
Calculated expectation value of the gate.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_diagonal_top_right_bottom_left_multiple_gates(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gates: Sequence[Array]) List[Array][source]
Calculate the two site expectation values for two from top left to bottom right diagonal ordered PEPS tensor and their environment.
The order of the PEPS sequence have to be [top-left, top-right, bottom-left, bottom-right].
- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Sequence with the gates which should be applied to the PEPS tensors. Gates are expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
List with the calculated expectation values of each gate.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_diagonal_top_right_bottom_left_single_gate(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gate: Array) Array[source]
Calculate the two site expectation value for two from top right to bottom left diagonal ordered PEPS tensor and their environment.
The order of the PEPS sequence have to be [top-left, top-right, bottom-left, bottom-right].
This function just wraps
calc_two_sites_diagonal_top_right_bottom_left_multiple_gates.- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Gate which should be applied to the PEPS tensors. The gate is expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
Calculated expectation value of the gate.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_diagonal_vertical_rectangle_multiple_gates(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gates: Sequence[Array]) List[Array][source]
Calculate the two site expectation values for two from top left to the bottom right site of in a 3x2 vertical rectangle ordered PEPS tensors and their environment.
The order of the PEPS sequence have to be [top-left, top-right, middle-left, middle-right, bottom-left, bottom-right].
- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Sequence with the gates which should be applied to the PEPS tensors. Gates are expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
List with the calculated expectation values of each gate.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_horizontal_multiple_gates(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gates: Sequence[Array]) List[Array][source]
Calculate the two site expectation values for two horizontal ordered PEPS tensor and their environment.
- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Sequence with the gates which should be applied to the PEPS tensors. Gates are expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
List with the calculated expectation values of each gate.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_horizontal_single_gate(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gate: Array) Array[source]
Calculate the two site expectation value for two horizontal ordered PEPS tensor and their environment.
This function just wraps
calc_two_sites_horizontal_multiple_gates.- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Gate which should be applied to the PEPS tensors. The gate is expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
Calculated expectation value of the gate.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_vertical_multiple_gates(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gates: Sequence[Array]) List[Array][source]
Calculate the two site expectation values for two vertical ordered PEPS tensor and their environment.
- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Sequence with the gates which should be applied to the PEPS tensors. Gates are expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
List with the calculated expectation values of each gate.
- Return type:
- varipeps.expectation.two_sites.calc_two_sites_vertical_single_gate(peps_tensors: Sequence[Array], peps_tensor_objs: Sequence[PEPS_Tensor], gate: Array) Array[source]
Calculate the two site expectation value for two vertical ordered PEPS tensor and their environment.
This function just wraps
calc_two_sites_vertical_multiple_gates.- Parameters:
peps_tensors (sequence of
jax.numpy.ndarray) – The PEPS tensor arrays. Have to be the same objects as the tensor attribute of the peps_tensor_obj argument.peps_tensor_objs (sequence of
PEPS_Tensor) – PEPS tensor objects.gates (sequence of
jax.numpy.ndarray) – Gate which should be applied to the PEPS tensors. The gate is expected to be a matrix with first axis corresponding to the Hilbert space and the second axis corresponding to the dual room.
- Returns:
Calculated expectation value of the gate.
- Return type: