Tutorial 3¶
In this part of the tutorial, we will extend the ideas in one dimension to two dimensions.
2D iTEBD¶
We will construct a 2D version of imaginary-time iTEBD and apply it to obtain the ground state wave functions in the 2D transverse field Ising model (TFIM).
We will extend the 1D iTEBD method to 2D. The sites are updated in pairs and the bonds are updated in the sequence of the four bonds shown in red in the following figure.
Example¶
In the following, we give an example of the coordination number \(z=4\) for the virtual bonds of each tensor. We start with two tensors GA and GB, and diagonal matrices Ls on each bond:
We want to update first bond 0 with Ls[0]. We first absorb Ls into the tensors (indicated as the red bonds.)
We merge the bonds not being updated to a huge bond with bond dimensions \(\chi^3\)
Relabeling the tensors so that pyUni10 knows how to contract them:
Finally, we obtain a \(\Theta\) tensor of dimensions \(d \chi^3 \times d\chi^3\) by contracting GA, GB and U
Performing SVD on \(\Theta\) and truncate the bond, we have three new tensors
Thus we have new GA and GB merged with Ls[1], Ls[2] and Ls[3], and a new updated diagonal matrice Ls[0].
To obtain GA, GB, we need to multiply the bonds with Ls[i] -1
Repeat the same processes for the other bonds 1,2,and 3 to complete a single update.
You can download the ipython notebook Tutorial3-1.ipynb
.
Tensor Renormalization Group¶
We will implement the tensor renormalization group (TRG) algorithm to compute the energy and magnetization in TFIM.
To compute the ground state expectation value for an operator \(\hat{O}\)
\[\langle \hat{O} \rangle =\frac{\langle \psi_0| \hat{O} |\psi_0 \rangle}{\langle \psi_0| \psi_0 \rangle }\]
To calculate the norm \(\langle \psi_0| \psi_0 \rangle\) in the denominator, we contract first the physical indices of the bra and ket tensors to get a double tensor T :
For the numerator, we construct an impurity tensor T’ :
The numerator corresponds to a tensor network like this:
To contract the tensor network using TRG, first decompose the A-site and B-site tensors into two rank-3 tensors using SVD, and perform truncation:
and we obtain,
Contracting the tensors in the squares, we obtain a new tensor network with half of the size
Repeat the process until only four tensors remain, and contract them to obtain \(\langle \psi_0| \hat{O} |\psi_0 \rangle\)
Similarly, for \(\langle \psi_0| \psi_0 \rangle\)
You can download the ipython notebook Tutorial3-2.ipynb
.
You also need these network files: TRG.net
and
expectation.net
.
The labels for the tensors in the helper functions can be found here
.
The full python code for the 2D transverse Ising model can be found
here
.
Refereces¶
- J. Jordan, R. Orús, G. Vidal, F. Verstraete, and J. I. Cirac, Phys. Rev. Lett. 101, 250602 (2008), http://arxiv.org/abs/cond-mat/0703788
- H. C. Jiang, Z. Y. Weng, and T. Xiang, Accurate Determination of Tensor Network State of Quantum Lattice Models in Two Dimensions, Phys. Rev. Lett. 101, 090603 (2008), http://arxiv.org/abs/0806.3719
- H. H. Zhao, Z. Y. Xie, Q. N. Chen, Z. C. Wei, J. W. Cai, T. Xiang, Renormalization of Tensor-network States, Phys. Rev. B 81, 174411 (2010), http://arxiv.org/abs/1002.1405