Projectors

ctm.generic.ctm_projectors.ctm_get_projectors_4x2(direction, coord, state, env, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>, diagnostics=None)[source]
Parameters
  • direction (tuple(int,int)) – direction of the CTM move for which the projectors are to be computed

  • coord (tuple(int,int)) – vertex (x,y) specifying (together with direction) 4x2 (vertical) or 2x4 (horizontal) tensor network used to build projectors

  • state (IPEPS) – wavefunction

  • env (ENV) – environment corresponding to state

  • ctm_args (CTMARGS) – CTM algorithm configuration

  • global_args (GLOBALARGS) – global configuration

Returns

pair of projectors, tensors of dimension \(\chi \times \chi \times D^2\). The D might vary depending on the auxiliary bond dimension of related on-site tensor.

Return type

torch.tensor, torch.tensor

Compute a pair of projectors from two enlarged corners making up 4x2 (2x4) tensor network given by direction and coord:

Case of LEFT move <=> direction=(-1,0)
                        ____
C--T---------------\ = |_R__|=\\
T--A(coord)--------\\   |__|  ||
|  |               ||  |_Rt_|=//
T--A(coord+(0,1))--//
C--T---------------/

Case of UP move <=> direction=(0,-1)
                                   ____    ___
C--T---------T----------------C = |_Rt_|==|_R_|
T--A(coord+(-1,0))--A(coord)--T    |  |    | |
|  |         |                |     \_\===/_/
\__\========/________________/

This function constructs two enlarged corners of a 4x2 (2x4) network and then calls ctm_get_projectors_from_matrices() for projector construction

ctm.generic.ctm_projectors.ctm_get_projectors_4x4(direction, coord, state, env, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>, diagnostics=None)[source]
Parameters
  • direction (tuple(int,int)) – direction of the CTM move for which the projectors are to be computed

  • coord (tuple(int,int)) – vertex (x,y) specifying (together with direction) 4x4 tensor network used to build projectors

  • state (IPEPS) – wavefunction

  • env (ENV) – environment corresponding to state

  • ctm_args (CTMARGS) – CTM algorithm configuration

  • global_args (GLOBALARGS) – global configuration

Returns

pair of projectors, tensors of dimension \(\chi \times \chi \times D^2\). The D might vary depending on the auxiliary bond dimension of related on-site tensor.

Return type

torch.tensor, torch.tensor

Compute a pair of projectors from two halfs of 4x4 tensor network given by direction and coord:

Case of LEFT move <=> direction=(-1,0)
                                        _____________
C--T---------------T---------------C = |_____R_______|
T--A(coord)--------A(coord+(1,0))--T    |__|_____|__|
|  |               |               |   |_____Rt______|
T--A(coord+(0,1))--A(coord+(1,1))--T
C--T---------------T---------------C

This function constructs two halfs of a 4x4 network and then calls ctm_get_projectors_from_matrices() for projector construction

ctm.generic.ctm_projectors.ctm_get_projectors_from_matrices(R, Rt, chi, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>, diagnostics=None)[source]
Parameters
  • R (torch.tensor) – tensor of shape (dim0, dim1)

  • Rt (torch.tensor) – tensor of shape (dim0, dim1)

  • chi (int) – environment bond dimension

  • ctm_args (CTMARGS) – CTM algorithm configuration

  • global_args (GLOBALARGS) – global configuration

Returns

pair of projectors, tensors of dimension \(\chi \times \chi \times D^2\). The D might vary depending on the auxiliary bond dimension of related on-site tensor.

Return type

torch.tensor, torch.tensor

Given the two tensors R and Rt (R tilde) compute the projectors P, Pt (P tilde) (PRB 94, 075143 (2016) https://arxiv.org/pdf/1402.2859.pdf)

  1. Perform SVD over \(R\widetilde{R}\) contracted through index which is going to be truncated:

           _______          ______
    dim1--|___R___|--dim0--|__Rt__|--dim1  ==SVD==> dim1(R)--U--S--V^+--dim1(Rt)
    

    Hence, for the inverse \((R\widetilde{R})^{-1}\):

           ________          ________
    dim1--|__Rt^-1_|--dim0--|__R^-1__|--dim1 = dim1(Rt)--V--S^-1--U^+--dim1(R)
    
  2. Approximate an identity \(RR^{-1}\widetilde{R}^{-1}\widetilde{R}\) by truncating the result of \(SVD(R\widetilde{R}^{-1})\):

               ____          ______          _______          ____
    I = dim0--|_R__|--dim1--|_R^-1_|--dim0--|_Rt^-1_|--dim1--|_Rt_|--dim0
               ____          _____                            ____          ____
    I ~ dim0--|_R__|--dim1--|_U^+_|--St^-1/2--\chi--St^-1/2--|_V__|--dim1--|_Rt_|--dim0
    

    where \(\widetilde{S}\) has been truncated to the leading \(\chi\) singular values

  3. Finally construct the projectors \(P, \widetilde{P}\):

               ____          _____
    P = dim0--|_R__|--dim1--|_U^+_|--St^-1/2--\chi
                         ____          ____
    Pt = \chi--St^-1/2--|_V__|--dim1--|_Rt_|--dim0
    

The projectors \(P, \widetilde{P}\) approximate contraction of the original matrices \(R, \widetilde{R}\):

 _______     _________
|___R___| ~ |___R_____|
 _|___|_      |     |
|___Rt__|    dim0  dim1
            __|___  |
            \_P__/  |
              |     |
             chi    |
             _|__   |
            /_Pt_\  |
              |     |
             dim0  dim1
             _|_____|_
            |____Rt___|