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 originaledge
- 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 originaledge
- 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 thedirection
:-----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 operatorop
, if any) applied. The resulting tensor has an identical index structure as the originaledge
- Return type:
torch.tensor
Applies two transfer matrices to the
edge
tensor, including the two-site operatorop
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
andop_r
ifop
is supplied. Theop_l
andop_r
are given by the SVD decomposition of two-site operatorop
: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:
- 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:
- 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 lengthdist
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 todist
.
- 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 lengthdist
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 todist+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 lengthdist
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 todist
.
- ctm.one_site_c4v.corrf_c4v.get_edge(state, env, verbosity=0)[source]¶
- Parameters:
- 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--