netket.models.tensor_networks.MPDOOpen#

class netket.models.tensor_networks.MPDOOpen[source]#

Bases: Module

A Matrix Product Density Operator (MPDO) with open boundary conditions for a quantum mixed state of discrete degrees of freedom. The purification is used.

The MPDO is defined as (see F. Verstraete, J. J. García-Ripoll, J. I. Cirac, Phys. Rev. Lett. 93, 207204 (2004)).

\[\rho(s_1,\dots, s_N, s_1',\dots, s_N') = \sum_{\alpha_1, \dots, \alpha_{N-1}} \mathrm{Tr} \left[ M^{\alpha_1}_{s_1,s_1'} \dots M^{\alpha_{N-1}}_{s_N, s_N'} \right],\]

for arbitrary local quantum numbers \(s_i\) and \(s_i'\), where \(M^{\alpha_i}_{s_i,s_i'}\) are \(D^2 \times D^2\) matrices for \(i=2, \dots, N-1\), and vectors for \(i=1, N\), that can be decomposed as

\[M^{\alpha_i}_{s_i,s_i'} = \sum_{a=1}^{\chi} A^{\alpha_i, a}_{s_i} \otimes (A^{\alpha_i, a}_{s_i'})^*,\]

with \(A^{\alpha_i, a}_{s_i}\) being \(D \times D\) matrices for the bulk of the chain (\(i=2, \dots, N-1\)) and \(D\)-dimensional vectors for the edges (\(i=1, N\)). The bond dimension is denoted by \(D\) and the Kraus dimension by \(\chi\), which corresponds to the variable kraus_dim in the code.

The open boundary conditions imply that there are no connections between the first and the last tensors in the trace.

The implementation is based on this paper.

Attributes
checkpoint: bool = True#

Whether to use jax.checkpoint on the scan function for memory efficiency.

kraus_dim: int = 2#

The local Kraus dimension of the MPDO tensors. See formula above.

unroll: int = 1#

the number of scan iterations to unroll within a single iteration of a loop.

hilbert: HomogeneousHilbert#

Hilbert space on which the state is defined.

bond_dim: int#

Bond dimension of the MPDO tensors. See formula above.

kernel_init: Callable[[Any, Sequence[int], Any], Union[ndarray, Array]]#

the initializer for the MPS weights. This is added to an identity tensor.

Methods
__call__(x)[source]#

Queries this MPDO for the input configurations x, which should contain rows and columns entries concatenated.

Parameters:

x – the input configuration

contract_mpdo(qn)[source]#

Internal function, used to contract the tensor network with some input tensor.

Parameters:

qn – The input tensor to be contracted with this MPDO