Correlation functions

ctm.one_site_c4v.corrf_c4v.apply_TM_1sO(state, env, edge, op=None, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

  • env (ENV_C4V) – C4v symmetric environment corresponding to state

  • edge (torch.tensor) – tensor of dimensions \(\chi \times D^2 \times \chi\)

  • op (torch.tensor) – operator to be inserted into transfer matrix

  • verbosity (int) – logging verbosity

Returns

edge with a single instance of the transfer matrix applied. The resulting tensor has an identical index structure as the original edge

Return type

torch.tensor

Applies a single instance of the “transfer matrix” to the edge tensor by contracting the following network:

      -->
  -----T----------
 |     |
edge--(a^+ op a)--
 |     |
  -----T----------
      <--

where the physical indices s and s’ of the on-site tensor \(a\) and it’s hermitian conjugate \(a^\dagger\) are contracted with identity \(\delta_{s,s'}\) or op (if supplied).

ctm.one_site_c4v.corrf_c4v.apply_TM_1sO_2(state, env, edge, op=None, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

  • env (ENV_C4V) – C4v symmetric environment corresponding to state

  • edge (torch.tensor) – tensor of dimensions \(\chi \times (D^2)^2 \times \chi\)

  • op (torch.tensor) – two-site operator to be inserted within the two-site transfer matrix

  • verbosity (int) – logging verbosity

Returns

edge with a single instance of the transfer matrix applied The resulting tensor has an identical index structure as the original edge

Return type

torch.tensor

Applies a single instance of the two-site “transfer matrix” to the edge tensor by contracting the following network, or its corresponding rotation depending on the direction:

  -----T----------
 |     |
edge--(a^+ o1 a)--
 |     |   |
 |----(a^+ o2 a)--
 |     |
  -----T----------

The two-site operator is first decomposed into a simple MPO o1–o2 (TODO case where op comes with an extra MPO index):

 s1'  s2'    s1'      s2'
|  op   | = |o1|-----|o2|
 s1   s2     s1       s2

where the physical indices s and s’ of the on-site tensor \(a\) and it’s hermitian conjugate \(a^\dagger\) are contracted with identity \(\delta_{s,s'}\) or o1, o2.

ctm.one_site_c4v.corrf_c4v.apply_TM_2sO(state, env, edge, op=None, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

  • env (ENV_C4V) – C4v symmetric environment corresponding to state

  • edge (torch.tensor) – tensor of dimensions \(\chi \times D^2 \times \chi\)

  • op (torch.tensor) – two-site operator to be inserted into the two consecutive transfer matrices

  • verbosity (int) – logging verbosity

Returns

edge with two transfer matrices (and operator op, if any) applied. The resulting tensor has an identical index structure as the original edge

Return type

torch.tensor

Applies two transfer matrices to the edge tensor, including the two-site operator op by contracting the following network:

  -----T-------------T------------
 |     |             |
edge--(a^+ op_l a)==(a^+ op_r a)--
 |     |             |
  -----T-------------T------------

where the physical indices s and s’ of the on-site tensor \(a\) and it’s hermitian conjugate \(a^\dagger\) are contracted with identity \(\delta_{s,s'}\) or op_l and op_r if op is supplied. The op_l and op_r are given by the SVD decomposition of two-site operator op:

 0  1        0           1          0            1->0
 |  |  SVD   |           |          |            |
| op |  =  |op_l|--(S--|op^~_r|) = |op_l|--2 2--|op_r|
 |  |        |           |          |            |
 2  3        2           3          2->1         3->1
ctm.one_site_c4v.corrf_c4v.apply_edge(state, env, vec, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

  • env (ENV_C4V) – C4v symmetric environment corresponding to state

  • vec (torch.tensor) – tensor of dimensions \(\chi \times D^2 \times \chi\)

  • verbosity (int) – logging verbosity

Returns

scalar resulting from the contraction of vec with an edge built from environment

Return type

torch.tensor

Contracts vec tensor with the corresponding edge by contracting the following network:

           ---C
          |   |
scalar = vec--T
          |   |
           ---C
ctm.one_site_c4v.corrf_c4v.apply_edge_L(state, env, vec, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

  • env (ENV_C4V) – C4v symmetric environment corresponding to state

  • vec (torch.tensor) – tensor of dimensions \(\chi \times (D^2)^l \times \chi\)

  • verbosity (int) – logging verbosity

Returns

scalar resulting from the contraction of vec with an edge built from environment

Return type

torch.tensor

Contracts vec tensor with the corresponding edge by contracting the following network:

             ---0   l+1----C
         A  |              | |
scalar = | vec--1     l----T |
         |  |    ...       | V
            |---l     1----T
             ---l+1     0--C
ctm.one_site_c4v.corrf_c4v.corrf_1sO1sO(state, env, op1, get_op2, dist, rl_0=None, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

  • env (ENV_C4V) – C4v symmetric environment corresponding to state

  • op1 (torch.tensor) – first one-site operator \(O_1\)

  • get_op2 (function(int)->torch.tensor) – function returning (position-dependent) second one-site opreator \(\text{get_op2}(r)=O_2\)

  • dist (int) – maximal distance of correlation function

  • rl_0 (tuple(torch.Tensor, torch.Tensor)) – right and left edges of the two-point function network. These are expected to be rank-3 tensor compatible with transfer operator indices. Typically provided by leading eigenvectors of transfer matrix.

  • verbosity (int) – logging verbosity

Returns

vector corrf of length dist holding the values of correlation function \(\langle O_1(0) O_2(r) \rangle\) for \(r \in [1,dist]\)

Return type

torch.tensor

Computes the two-point correlation function \(\langle O_1(0) O_2(r) \rangle\) by contracting the following network:

C-----T---------- ... -----T---- ... --------T-------------C
|     |                    |                 |             |
T--(a^+ op_1 a)-- ... --(a^+a)-- ... --(a^+ gen_op2(r) a)--T
|     |                    |                 |             |
C-----T---------- ... -----T---- ... --------T-------------C

for increasingly large distance r up to dist.

ctm.one_site_c4v.corrf_c4v.corrf_2sOH2sOH_E1(state, env, op1, get_op2, dist, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

  • env (ENV_C4V) – C4v symmetric environment corresponding to state

  • op1 (torch.tensor) – first two-site operator \(O_1\)

  • get_op2 (function(int)->torch.tensor) – function returning (position-dependent) second two-site operator \(\text{get_op2}(r)=O_2\)

  • dist (int) – maximal distance of correlation function

  • verbosity (int) – logging verbosity

Returns

vector corrf of length dist holding the values of correlation function \(\langle O_1(0) O_2(r) \rangle\) for \(r \in [2,dist+1]\)

Return type

torch.tensor

Computes the correlation function \(\langle O_1(0) O_2(r) \rangle\) of two horizontaly-oriented two-site operators by contracting the following network:

C-----T----T------- ... -----T---- ... ----------T----T--------C
|     |    |                 |                   |    |        |
|   /-a^+--a^+-\             |                /--a^+--a^+---\  |
T--< ( op 1 )   >-- ... --(a^+a)-- ... ------< (gen_op2(r)) >--T
|   \-a----a---/             |                \--a----a-----/  |
|     |    |                 |                   |    |        |
C-----T----T------- ... -----T---- ... ----------T----T--------C

for increasingly large distance r up to dist+1.

ctm.one_site_c4v.corrf_c4v.corrf_2sOV2sOV_E2(state, env, op1, get_op2, dist, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying wavefunction

  • env (ENV_C4V) – environment corresponding to state

  • op1 (torch.tensor) – first two-site operator \(O_1\)

  • get_op2 (function(int)->torch.tensor) – function returning (position-dependent) second two-site operator \(\text{get_op2}(r)=O_2\)

  • dist (int) – maximal distance of correlation function

  • verbosity (int) – logging verbosity

Returns

vector corrf of length dist holding the values of correlation function \(\langle O_1(0) O_2(r) \rangle\) for \(r \in [1,dist]\)

Return type

torch.tensor

Computes the four-point correlation function \(\langle O_1(0) O_2(r) \rangle\), where both O_1 and O_2 are two-site operators by contracting the following network:

C-----T------ ... ----T----- ... -----T---------C
|     |               |               |         |
T--(a^+--a)-- ... --(a^+a)-- ... --(a^+--a)-----T
|    op1              |           (gen_op2(r))  |
T--(a^+--a)-- ... --(a^+a)-- ... --(a^+--a)-----T
|     |               |               |         |
C-----T------ ... ----T----- ... -----T---------C

for increasingly large distance r up to dist.

ctm.one_site_c4v.corrf_c4v.get_edge(state, env, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

  • env (ENV_C4V) – C4v symmetric environment corresponding to state

  • verbosity (int) – logging verbosity

Returns

tensor with indices \(\chi \times D^2 \times \chi\)

Return type

torch.tensor

Build initial edge by contracting the following network:

    C--
    |
E = T--
    |
    C--
ctm.one_site_c4v.corrf_c4v.get_edge_L(state, env, l=1, verbosity=0)[source]
Parameters
  • state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

  • env (ENV_C4V) – C4v symmetric environment corresponding to state

  • l (int) – length of the edge

  • verbosity (int) – logging verbosity

Returns

tensor with indices \(\chi \times (D^2)^l \times \chi\)

Return type

torch.tensor

Build an edge of length l by contracting a following network:

       ---->
E = A C--T--...--T--C   |
    | |  |       |  |   V
      0  1       l  l+1