# Reduced Density Matrices¶

ctm.one_site_c4v.rdm_c4v.rdm1x1(state, env, sym_pos_def=False, 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

1-site reduced density matrix with indices $$s;s'$$

Return type

torch.tensor

Computes 1-site reduced density matrix $$\rho_{1x1}$$ by contracting the following tensor network:

C--T-----C
|  |     |
T--a^+a--T
|  |     |
C--T-----C


where the physical indices s and s’ of on-site tensor $$a$$ and its hermitian conjugate $$a^\dagger$$ are left uncontracted

ctm.one_site_c4v.rdm_c4v.rdm1x1_sl(state, env, sym_pos_def=False, 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

1-site reduced density matrix with indices $$s;s'$$

Return type

torch.tensor

Evaluates 1-site operator $$Tr(\rho_{1x1}O)$$ by contracting the following tensor network:

C--T-----C
|  |     |
T--a^+a--T
|  |     |
C--T-----C


where the physical indices s and s’ of on-site tensor $$a$$ and its hermitian conjugate $$a^\dagger$$ are left uncontracted.

This function avoids constructing double-layer on-site tensor explicitly.

ctm.one_site_c4v.rdm_c4v.rdm2x1(state, env, sym_pos_def=False, force_cpu=False, verbosity=0)[source]
Parameters
• state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

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

• sym_pos_def (bool) – make final density matrix symmetric and non-negative (default: False)

• force_cpu (bool) – perform on CPU

• verbosity (int) – logging verbosity

Returns

2-site reduced density matrix with indices $$s_0s_1;s'_0s'_1$$

Return type

torch.tensor

Computes 2-site reduced density matrix $$\rho_{2x1}$$ of a horizontal 2x1 subsystem using following strategy:

1. compute upper left 2x2 corner and lower left 2x1 corner

2. construct left half of the network

3. contract left and right half (identical to the left) to obtain final reduced density matrix

C--T-----T-----C = C2x2--C2x2
|  |     |     |   |     |
T--a^+a--a^+a--T   C2x1--C2x1
|  |     |     |
C--T-----T-----C


The physical indices s and s’ of on-sites tensors $$a$$ (and $$a^\dagger$$) are left uncontracted and given in the following order:

s0 s1


The resulting reduced density matrix is identical to the one of vertical 1x2 subsystem due to the C4v symmetry.

ctm.one_site_c4v.rdm_c4v.rdm2x1_sl(state, env, sym_pos_def=False, force_cpu=False, verbosity=0)[source]
Parameters
• state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

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

• sym_pos_def (bool) – make final density matrix symmetric and non-negative (default: False)

• force_cpu (bool) – compute on cpu

• verbosity (int) – logging verbosity

Returns

2-site reduced density matrix with indices $$s_0s_1;s'_0s'_1$$

Return type

torch.tensor

Computes 2-site reduced density matrix $$\rho_{2x1}$$ of a horizontal 2x1 subsystem using following strategy:

1. compute upper left 2x2 corner and lower left 2x1 corner

2. construct left half of the network

3. contract left and right half (identical to the left) to obtain final reduced density matrix

C--T-----T-----C = C2x2--C2x2
|  |     |     |   |     |
T--a^+a--a^+a--T   C2x1--C2x1
|  |     |     |
C--T-----T-----C


The physical indices s and s’ of on-sites tensors $$a$$ (and $$a^\dagger$$) are left uncontracted and given in the following order:

s0 s1


The resulting reduced density matrix is identical to the one of vertical 1x2 subsystem due to the C4v symmetry.

This function avoids constructing double-layer on-site tensor explicitly.

ctm.one_site_c4v.rdm_c4v.rdm3x1(state, env, sym_pos_def=False, force_cpu=False, verbosity=0)[source]
Parameters
• state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

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

• sym_pos_def (bool) – make final density matrix symmetric and non-negative (default: False)

• force_cpu (bool) – perform on CPU

• verbosity (int) – logging verbosity

Returns

2-site reduced density matrix with indices $$s_0s_1;s'_0s'_1$$

Return type

torch.tensor

Computes 2-site reduced density matrix $$\rho_{3x1}$$ of a horizontal 3x1 subsystem using following strategy:

1. compute upper left 2x2 corner and lower left 2x1 corner

2. construct left half of the network

3. contract with extra T-a^+a-T column

4. contract result with right half (identical to the left of step 2) to obtain final reduced density matrix

C--T-----T-----T------C = C2x2--T----C2x2
|  |     |     |      |     |   a^+a  |
T--a^+a--a^+a--a^+a---T   C2x1--T----C2x1
|  |     |     |      |
C--T-----T-----T------C


The physical indices s and s’ of on-sites tensors $$a$$ (and $$a^\dagger$$) are left uncontracted and given in the following order:

s0 c s1


The resulting reduced density matrix is identical to the one of vertical 1x3 subsystem due to the C4v symmetry.

ctm.one_site_c4v.rdm_c4v.rdm3x1_sl(state, env, sym_pos_def=False, force_cpu=False, verbosity=0)[source]
Parameters
• state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

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

• sym_pos_def (bool) – make final density matrix symmetric and non-negative (default: False)

• force_cpu (bool) – compute on cpu

• verbosity (int) – logging verbosity

Returns

2-site reduced density matrix with indices $$s_0s_1;s'_0s'_1$$

Return type

torch.tensor

Computes 2-site reduced density matrix $$\rho_{3x1}$$ of a horizontal 3x1 subsystem using following strategy:

1. compute upper left 2x2 corner and lower left 2x1 corner

2. construct left half of the network

3. contract with extra T-a^+a-T column

4. contract left and right half (identical to the left) to obtain final reduced density matrix

C--T-----T-----T------C = C2x2--T----C2x2
|  |     |     |      |     |   a^+a  |
T--a^+a--a^+a--a^+a---T   C2x1--T----C2x1
|  |     |     |      |
C--T-----T-----T------C


The physical indices s and s’ of on-sites tensors $$a$$ (and $$a^\dagger$$) are left uncontracted and given in the following order:

s0 c s1


The resulting reduced density matrix is identical to the one of vertical 1x3 subsystem due to the C4v symmetry.

This function avoids constructing double-layer on-site tensor explicitly.

ctm.one_site_c4v.rdm_c4v.rdm2x2_NN_lowmem(state, env, sym_pos_def=False, force_cpu=False, verbosity=0)[source]
Parameters
• state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

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

• sym_pos_def (bool) – make final density matrix symmetric and non-negative (default: False)

• force_cpu (bool) – compute on cpu

• verbosity (int) – logging verbosity

Returns

2-site reduced density matrix with indices $$s_0s_1;s'_0s'_1$$

Return type

torch.tensor

Computes 2-site reduced density matrix $$\rho_{2x1}$$ of 2 sites that are nearest neighbours using strategy:

1. compute upper left corner using double-layer on-site tensor

2. construct upper half of the network

3. contract upper and lower half (identical to upper) to obtain final reduced density matrix

C--T-----T-----C = C2x2--C2x2c
|  |     |     |   |     |
T--A^+A--A^+A--T   C2x2--C2x2c
|  |     |     |
T--A^+A--A^+A--T
|  |     |     |
C--T-----T-----C


The physical indices s and s’ of on-sites tensors $$a$$ (and $$a^\dagger$$) inside C2x2 tensors are left uncontracted and given in the following order:

s0 c
s1 c

ctm.one_site_c4v.rdm_c4v.rdm2x2_NN_lowmem_sl(state, env, sym_pos_def=False, force_cpu=False, verbosity=0)[source]
Parameters
• state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

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

• sym_pos_def (bool) – make final density matrix symmetric and non-negative (default: False)

• force_cpu (bool) – compute on cpu

• verbosity (int) – logging verbosity

Returns

2-site reduced density matrix with indices $$s_0s_1;s'_0s'_1$$

Return type

torch.tensor

Computes 2-site reduced density matrix $$\rho_{2x1}$$ of 2 sites that are nearest neighbours using strategy:

1. compute upper left corner using layer-by-layer contraction of on-site tensor

2. construct upper half of the network

3. contract upper and lower half (identical to upper) to obtain final reduced density matrix

C--T-----T-----C = C2x2--C2x2c
|  |     |     |   |     |
T--a^+a--a^+a--T   C2x2--C2x2c
|  |     |     |
T--a^+a--a^+a--T
|  |     |     |
C--T-----T-----C


The physical indices s and s’ of on-sites tensors $$a$$ (and $$a^\dagger$$) inside C2x2 tensors are left uncontracted and given in the following order:

s0 c
s1 c


This function avoids constructing double-layer on-site tensor explicitly.

ctm.one_site_c4v.rdm_c4v.rdm2x2_NNN_lowmem(state, env, sym_pos_def=False, force_cpu=False, verbosity=0)[source]
Parameters
• state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

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

• sym_pos_def (bool) – make final density matrix symmetric and non-negative (default: False)

• force_cpu (bool) – compute on cpu

• verbosity (int) – logging verbosity

Returns

2-site reduced density matrix with indices $$s_0s_1;s'_0s'_1$$

Return type

torch.tensor

Computes 2-site reduced density matrix $$\rho_{2x1}^{diag}$$ of 2 sites that are next-nearest neighbours (along diagonal) using strategy:

1. compute upper left corner using double-layer on-site tensor

2. construct upper half of the network

3. contract upper and lower half (identical to upper) to obtain final reduced density matrix

C--T-----T-----C = C2x2---C2x2c
|  |     |     |   |      |
T--a^+a--a^+a--T   C2x2c--C2x2
|  |     |     |
T--a^+a--a^+a--T
|  |     |     |
C--T-----T-----C


The physical indices s and s’ of on-sites tensors $$A$$ (and $$A^\dagger$$) inside C2x2 tensors are left uncontracted and given in the following order:

s0 c
c  s1

ctm.one_site_c4v.rdm_c4v.rdm2x2_NNN_lowmem_sl(state, env, sym_pos_def=False, force_cpu=False, verbosity=0)[source]
Parameters
• state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

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

• sym_pos_def (bool) – make final density matrix symmetric and non-negative (default: False)

• force_cpu (bool) – compute on cpu

• verbosity (int) – logging verbosity

Returns

2-site reduced density matrix with indices $$s_0s_1;s'_0s'_1$$

Return type

torch.tensor

Computes 2-site reduced density matrix $$\rho_{2x2}^{diag}$$ of 2 sites that are next-nearest neighbours (along diagonal) using strategy:

1. compute upper left corner using layer-by-layer contraction of on-site tensor

2. construct upper half of the network

3. contract upper and lower half (identical to upper) to obtain final reduced density matrix

C--T-----T-----C = C2x2---C2x2c
|  |     |     |   |      |
T--a^+a--a^+a--T   C2x2c--C2x2
|  |     |     |
T--a^+a--a^+a--T
|  |     |     |
C--T-----T-----C


The physical indices s and s’ of on-sites tensors $$a$$ (and $$a^\dagger$$) inside C2x2 tensors are left uncontracted and given in the following order:

s0 c
c  s1


This function avoids constructing double-layer on-site tensor explicitly.

ctm.one_site_c4v.rdm_c4v.rdm2x2(state, env, sym_pos_def=False, force_cpu=False, verbosity=0)[source]
Parameters
• state (IPEPS_C4V) – underlying 1-site C4v symmetric wavefunction

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

• sym_pos_def (bool) – make final density matrix symmetric and non-negative (default: False)

• force_cpu (bool) – perform on CPU

• verbosity (int) – logging verbosity

Returns

4-site reduced density matrix with indices $$s_0s_1s_2s_3;s'_0s'_1s'_2s'_3$$

Return type

torch.tensor

Computes 4-site reduced density matrix $$\rho_{2x2}$$ of 2x2 subsystem using strategy:

1. compute upper left corner

2. construct upper half of the network

3. contract upper and lower half (identical to upper) to obtain final reduced density matrix

C--T-----T-----C = C2x2--C2x2
|  |     |     |   |     |
T--a^+a--a^+a--T   C2x2--C2x2
|  |     |     |
T--a^+a--a^+a--T
|  |     |     |
C--T-----T-----C


The physical indices s and s’ of on-sites tensors $$A$$ (and $$A^\dagger$$) are left uncontracted and given in the following order:

s0 s1
s2 s3

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

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

• force_cpu (bool) – execute on cpu

• verbosity (int) – logging verbosity

Returns

2-site auxilliary reduced density matrix

Return type

torch.tensor

Computes 2-site auxiliary reduced density matrix of nearest neighbours within 2x2 subsystem without the on-site tensors (leaving corresponding auxiliary indices open) using strategy:

1. compute upper left corner

2. construct upper half of the network

3. contract upper and lower half (identical to upper) to obtain final reduced auxilliary density matrix

C----T----T----C    = aC2x2--aC2x2
|    0    5    |      |       |
T--1        4--T      C2x2----C2x2
|    2    3    |
C----T----T----C

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

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

• force_cpu (bool) – execute on cpu

• verbosity (int) – logging verbosity

Returns

4-site auxilliary reduced density matrix

Return type

torch.tensor

Computes 4-site auxiliary reduced density matrix $$\rho_{2x2}$$ of 2x2 subsystem without the on-site tensors (leaving corresponding auxiliary indices open) using strategy:

1. compute upper left corner

2. construct upper half of the network

3. contract upper and lower half (identical to upper) to obtain final reduced auxilliary density matrix

C----T----T----C    = C2x2--C2x2
|    0    7    |      |     |
T--1        6--T      C2x2--C2x2
|              |
T--2        5--T
|    3    4    |
C----T----T----C