Transfer Matrices

ctm.generic.transferops.get_EH_spec_Ttensor(n, L, coord, direction, state, env, verbosity=0)[source]
Parameters:
  • n (int) – number of leading eigenvalues of a transfer operator to compute

  • L (int) – width of the cylinder

  • coord (tuple(int,int)) – reference site (x,y)

  • direction (tuple(int,int)) – direction of the transfer operator. Either

  • state (IPEPS_C4V) – wavefunction

  • env_c4v (ENV_C4V) – corresponding environment

Returns:

leading n-eigenvalues, returned as n x 2 tensor with first and second column encoding real and imaginary part respectively.

Return type:

torch.Tensor

Compute leading part of spectrum of \(exp(EH)\), where EH is boundary Hamiltonian. Exact \(exp(EH)\) is given by the leading eigenvector of transfer matrix

 ...                PBC                                /
  |                  |                        |     --a*--
--A(x,y)----       --A(x,y)------           --A-- =  /|
--A(x,y+1)--       --A(x,y+1)----             |       |/
--A(x,y+2)--        ...                             --a--
  |                --A(x,y+L-1)--                    /
 ...                 |
                    PBC

infinite exact TM; exact TM of L-leg cylinder

The \(exp(EH)\) is then given by

\[exp(-H_{ent}) = \sqrt{\sigma_R}\sigma_L\sqrt{\sigma_R}\]

where \(\sigma_L,\sigma_R\) are reshaped \((D^2)^L\) left and right leading eigenvectors of TM into \(D^L \times D^L\) operator. Given that spectrum of \(AB\) is equivalent to \(BA\), it is enough to diagonalize product \(\sigma_R\sigma_L\) or \(\sigma_R\sigma_L\).

We approximate the \(\sigma_L,\sigma_R\) of L-leg cylinder as MPO formed by T-tensors of the CTM environment. Then, the spectrum of this approximate \(exp(EH)\) is obtained through iterative solver using matrix-vector product:

  0                    1
  |                    |                    __
--T[(x,y),(-1,0)]------T[(x,y),(1,0)]------|  |
--T[(x,y+1),(-1,0)]----T[(x,y+1),(1,0)]----|v0|
 ...                  ...                  |  |
--T[(x,y+L-1),(-1,0)]--T[(x,y+L-1),(1,0)]--|__|
  0(PBC)               1(PBC)
ctm.generic.transferops.get_Top_spec(n, coord, direction, state, env, verbosity=0)[source]
Parameters:
  • n (int) – number of leading eigenvalues of a transfer operator to compute

  • coord (tuple(int,int)) – reference site (x,y)

  • direction (tuple(int,int)) – direction of transfer operator. Choices are: (0,-1) for up, (-1,0) for left, (0,1) for down, and (1,0) for right

  • state (IPEPS) – wavefunction

  • env (ENV_C4V) – corresponding environment

Returns:

leading n-eigenvalues, returned as n x 2 tensor with first and second column encoding real and imaginary part respectively.

Return type:

torch.Tensor

Compute the leading n eigenvalues of width-0 transfer operator of IPEPS:

--T---------...--T--------            --\               /---
--A(x,y)----...--A(x+lX,y)-- = \sum_i ---v_i \lambda_i v_i--
--T---------...--T--------            --/               \---

where A is a double-layer tensor. The transfer matrix is given by width-1 channel of the same length lX as the unit cell of iPEPS, embedded in environment of T-tensors.

Other directions are obtained by analogous construction.

ctm.generic.transferops.get_Top_w0_spec(n, coord, direction, state, env, verbosity=0)[source]
Parameters:
  • n (int) – number of leading eigenvalues of a transfer operator to compute

  • coord (tuple(int,int)) – reference site (x,y)

  • direction (tuple(int,int)) – direction of transfer operator. Choices are: (0,-1) for up, (-1,0) for left, (0,1) for down, and (1,0) for right

  • state (IPEPS) – wavefunction

  • env (ENV_C4V) – corresponding environment

Returns:

leading n-eigenvalues, returned as n x 2 tensor with first and second column encoding real and imaginary part respectively.

Return type:

torch.Tensor

Compute the leading n eigenvalues of width-0 transfer operator of IPEPS:

--T(x,y)----...--T(x+lX,y)----            --\               /---
  |              |             = \sum_i     v_i \lambda_i v_i
--T(x,y+1)--...--T(x+lX,y+1)--            --/               \---

where A is a double-layer tensor. The transfer matrix is given by width-0 channel of the same length lX as the unit cell of iPEPS, embedded in environment of T-tensors.

Other directions are obtained by analogous construction.

ctm.generic.transferops.get_full_EH_spec_Ttensor(L, coord, direction, state, env, verbosity=0)[source]
Parameters:
  • L (int) – width of the cylinder

  • coord (tuple(int,int)) – reference site (x,y)

  • direction (tuple(int,int)) – direction of the transfer operator. Either

  • state (IPEPS_C4V) – wavefunction

  • env_c4v (ENV_C4V) – corresponding environment

Returns:

leading n-eigenvalues, returned as rank-1 tensor

Return type:

torch.Tensor

Compute the leading part of spectrum of \(exp(EH)\), where EH is boundary Hamiltonian. Exact \(exp(EH)\) is given by the leading eigenvector of transfer matrix:

 ...                PBC                                /
  |                  |                        |     --a*--
--A(x,y)----       --A(x,y)------           --A-- =  /|
--A(x,y+1)--       --A(x,y+1)----             |       |/
--A(x,y+2)--        ...                             --a--
  |                --A(x,y+L-1)--                    /
 ...                 |
                    PBC

infinite exact TM; exact TM of L-leg cylinder

The \(exp(EH)\) is then given by

\[exp(-H_{ent}) = \sqrt{\sigma_R}\sigma_L\sqrt{\sigma_R}\]

where \(\sigma_L,\sigma_R\) are reshaped (D^2)^L left and right leading eigenvectors of TM into \(D^L \times D^L\) operator. Given that spectrum of \(AB\) is equivalent to \(BA\), it is enough to diagonalize product \(\sigma_R\sigma_L\) or \(\sigma_R\sigma_L\).

We approximate the \(\sigma_L,\sigma_R\) of L-leg cylinder as MPO formed by T-tensors of the CTM environment. Then, the spectrum of this approximate exp(EH) is obtained through full diagonalization:

  0                    1
  |                    |
--T[(x,y),(-1,0)]------T[(x,y),(1,0)]------
--T[(x,y+1),(-1,0)]----T[(x,y+1),(1,0)]----
 ...                  ...
--T[(x,y+L-1),(-1,0)]--T[(x,y+L-1),(1,0)]--
  0(PBC)               1(PBC)