Reduced Density Matrices¶
- ctm.generic_abelian.rdm.open_C2x2_LD(coord, state, env, fusion_level='full', verbosity=0)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) for which reduced density matrix is constructed
state (IPEPS_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
fusion_level (str) – controls fusion of indices of open enlarged corner
verbosity (int) – logging verbosity
- Returns:
left-down enlarged corner with open physical indices
- Return type:
yast.tensor
Computes lower-down enlarged corner centered on vertex
coord
by contracting the following tensor network:s,s' | | / T--a^+a-- | | C--T-----
The physical indices s and s’ of on-site tensor \(a\) at vertex
coord
and its hermitian conjugate \(a^\dagger\) are left uncontractedDepending on fusion_level, the resulting tensor is:
rank-3 : fusion_level= 'full' rank-5 : fusion_level= 'basic' 0 /\ 2 (s,s') 0 1 4 (s,s') | | / | | / T--a^+a--\ T--a^+a--3 | | >--1 | | C--T-----/ C--T-----2
- ctm.generic_abelian.rdm.rdm1x1(coord, state, env, sym_pos_def=False, verbosity=0)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) for which reduced density matrix is constructed
state (IPEPS_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – 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}\) centered on vertex
coord
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\) at vertex
coord
and it’s hermitian conjugate \(A^\dagger\) are left uncontracted
- ctm.generic_abelian.rdm.rdm1x2(coord, state, env, sym_pos_def=False, verbosity=0)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) specifies position of 1x2 subsystem
state (IPEPS_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
verbosity (int) – logging verbosity
- Returns:
2-site reduced density matrix with indices \(s_0s_1;s'_0s'_1\)
- Return type:
yast.tensor
Computes 2-site reduced density matrix \(\rho_{1x2}\) of a vertical 1x2 subsystem using following strategy:
compute four individual corners
construct upper and lower half of the network
contract upper and lower halt to obtain final reduced density matrix
C--T------------------C = C2x2_LU(coord)--------C1x2(coord) | | | | | T--A^+A(coord)--------T C2x2_LD(coord+(0,1))--C1x2(coord+0,1)) | | | T--A^+A(coord+(0,1))--T | | | C--T------------------C
The physical indices s and s’ of on-sites tensors \(A\) (and \(A^\dagger\)) at vertices
coord
,coord+(0,1)
are left uncontracted
- ctm.generic_abelian.rdm.rdm2x1(coord, state, env, sym_pos_def=False, verbosity=0)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) specifies position of 2x1 subsystem
state (IPEPS_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
verbosity (int) – logging verbosity
- Returns:
2-site reduced density matrix with indices \(s_0s_1;s'_0s'_1\)
- Return type:
yast.tensor
Computes 2-site reduced density matrix \(\rho_{2x1}\) of a horizontal 2x1 subsystem using following strategy:
compute four individual corners
construct right and left half of the network
contract right and left halt to obtain final reduced density matrix
C--T------------T------------------C = C2x2_LU(coord)--C2x2(coord+(1,0)) | | | | | | T--A^+A(coord)--A^+A(coord+(1,0))--T C2x1_LD(coord)--C2x1(coord+(1,0)) | | | | C--T------------T------------------C
The physical indices s and s’ of on-sites tensors \(A\) (and \(A^\dagger\)) at vertices
coord
,coord+(1,0)
are left uncontracted
- ctm.generic_abelian.rdm.rdm2x2(coord, state, env, sym_pos_def=False, verbosity=0)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) specifies upper left site of 2x2 subsystem
state (IPEPS_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
verbosity (int) – logging verbosity
- Returns:
4-site reduced density matrix with indices \(s_0s_1s_2s_3;s'_0s'_1s'_2s'_3\)
- Return type:
yast.tensor
Computes 4-site reduced density matrix \(\rho_{2x2}\) of 2x2 subsystem specified by the vertex
coord
of its upper left corner using strategy:compute four individual corners
construct upper and lower half of the network
contract upper and lower half to obtain final reduced density matrix
C--T------------------T------------------C = C2x2_LU(coord)--------C2x2(coord+(1,0)) | | | | | | T--a^+a(coord)--------a^+a(coord+(1,0))--T C2x2_LD(coord+(0,1))--C2x2(coord+(1,1)) | | | | T--a^+a(coord+(0,1))--a^+a(coord+(1,1))--T | | | | C--T------------------T------------------C
The physical indices s and s’ of on-sites tensors \(A\) (and \(A^\dagger\)) at vertices
coord
,coord+(1,0)
,coord+(0,1)
, andcoord+(1,1)
are left uncontracted and given in the same order:s0 s1 s2 s3
Specific RDMs for Kagome iPEPS¶
- ctm.pess_kagome_abelian.rdm_kagome.double_layer_a(state, coord, open_sites=[], force_cpu=False, verbosity=0)[source]¶
- Parameters:
state (IPEPS_KAGOME_ABELIAN) – underlying wavefunction
coord (tuple(int,int)) – vertex (x,y) for which the reduced density matrix is constructed
open_sites (list(int)) – a list DoFs to leave open (uncontracted).
force_cpu (bool) – perform on CPU
- Returns:
result of (partial) contraction of double-layer tensor
- Return type:
yast.Tensor
Build double-layer tensor of Kagome iPEPS with open, partially or fully contracted physical space of 3 DoFs on down triangle:
u(-) (+) | / (-)l--\ (+)--A*--(-) (-) \ (-)/|\ \ / s0--s2--r (+) -> | | \ -> (-)--a*a--(+) | / s' 0 1 2 / \ |/ <- DOWN_T ? ? ? (+) s,s' s1 s 0 1 2 | | | / (+)d (-)\|/ / (-)--A--(+) (+)/
Default results in contraction over all 3 DoFs. Physical indices are aggregated into a single index with structure \(|ket \rangle\langle bra| = s_0,...,s_2;s'_0,...,s'_2\).
The available choices for
open_sites
are: [], [0], [1], [2], [0,1], [0,2], [1,2], and [0,1,2].
- ctm.pess_kagome_abelian.rdm_kagome.enlarged_corner(coord, state, env, corner, open_sites=[], force_cpu=False, verbosity=0)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) for which the enlarged corner is constructed
state (IPEPS_KAGOME_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
corner (str) – which corner to construct. The four options are: ‘LU’, ‘RU’, ‘RD’, and ‘LD’ for “left up” corner, “right up” corner, “right down” corner, and “left down” corner.
open_sites (list(int)) – a list DoFs to leave open (uncontracted).
force_cpu (bool) – perform on CPU
- Returns:
result of (partial) contraction of double-layer tensor
- Return type:
yast.tensor
Builds enlarged corner relative to the site at
coord
from the environment:C---T--- | | | | --a*a--T T--a*a-- | | | | for corner='LU', or ---T---C for corner='RD'
The resulting tensor is always reshaped into either rank-2 or rank-3 if some DoFs are left open on the double-layer. In the latter case, these open physical indices are aggregated into the last index of the resulting tensor. The index-ordering convention for enlarged corners follows convention for corner tensors of the environment
env
.If
open_sites=0
returned tensor has rank-2, where env. indices and auxiliary indices of double-layer tensor in the same direction were fused into a single index. If some DoFs remain open, then returned tensor is rank-3 with extra index carrying all physical DoFs fused in :math:`|ket ranglelangle bra| order:C---T---\ C---T---\ | | --1 | | --1 T--a*a--/ T--a*a--/ \ / \ / \ | | 2 0 for open_sites=[], or 0 for non-empty open_sites
- ctm.pess_kagome_abelian.rdm_kagome.rdm1x1_kagome(coord, state, env, sites_to_keep=('A', 'B', 'C'), force_cpu=False, sym_pos_def=False, verbosity=0, **kwargs)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) for which reduced density matrix is constructed
state (IPEPS_KAGOME_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
verbosity (int) – logging verbosity
sites_to_keep – physical degrees of freedom to be kept. Default: “ABC” - keep all the DOF
force_cpu (bool) – perform on CPU
sym_pos_def (bool) – make reduced density matrix positive-(semi)definite
- Returns:
1-site reduced density matrix with indices \(s;s'\)
- Return type:
torch.tensor
Compute 1-kagome-site reduced density matrix \(\rho_{1x1,\textrm{sites_to_keep}}\) centered on vertex
coord
:y\x -1 0 1 -1 C1 T4 C4 0 T1 a*a T3 1 C2 T2 C3
The physical indices are ordered as \(|ket \rangle\langle bra|\) from on-site tensor A (ket) and then A^dag (bra).
- ctm.pess_kagome_abelian.rdm_kagome.rdm2x2_dn_triangle_with_operator(coord, state, env, op, force_cpu=False, verbosity=0, **kwargs)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) for which the reduced density matrix is constructed
state (IPEPS_KAGOME_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
verbosity (int) – logging verbosity
op (yast.tensor) – operator to be contracted. It is expected that the op is either rank-6 tensor of shape [physical_dim]*6 or rank-2 tensor of shape [physical_dim**3]*2 (fused bra and ket spaces)
force_cpu (bool) – perform on CPU
- Returns:
normalized expectation value of the operator op and the norm of the reduced density matrix
- Return type:
yast.tensor, yast.tensor
Returns a normalized expectation value of operator inserted into down triangle of upper left corner of 2x2 subsystem:
C T T C a a | | T b--\ b--\ \ / \ s0--s2--d XX--XX--d T | / | / |/ |/ s1 XX | | c c / / a a | | T b--\ b--\ \ / \ XX--XX--d XX--XX--d T | / | / |/ |/ XX XX | | c c C T T C
- ctm.pess_kagome_abelian.rdm_kagome.rdm2x2_kagome(coord, state, env, sites_to_keep_00=('A', 'B', 'C'), sites_to_keep_10=('A', 'B', 'C'), sites_to_keep_01=('A', 'B', 'C'), sites_to_keep_11=('A', 'B', 'C'), force_cpu=False, sym_pos_def=False, verbosity=0, **kwargs)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) specifies upper left site of 2x2 subsystem
state (IPEPS_KAGOME_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
verbosity (int) – logging verbosity
sites_to_keep_00 – physical sites needed for the unit cell at coord + (0, 0)
sites_to_keep_10 – physical sites needed for the unit cell at coord + (1, 0)
sites_to_keep_01 – physical sites needed for the unit cell at coord + (0, 1)
sites_to_keep_11 – physical sites needed for the unit cell at coord + (1, 1)
force_cpu (bool) – perform on CPU
sym_pos_def (bool) – make reduced density matrix positive-(semi)definite
- Returns:
4-site reduced density matrix with indices \(s_0s_1s_2s_3;s'_0s'_1s'_2s'_3\)
- Return type:
yast.Tensor
Computes 4-site reduced density matrix \(\rho_{2x2}\) of 2x2 subsystem specified by the vertex
coord
of its upper left corner using strategy:compute four individual corners
construct upper and lower half of the network
contract upper and lower half to obtain final reduced density matrix
C--T------------------T------------------C = C2x2_LU(coord)--------C2x2_RU(coord+(1,0)) | | | | | | T--A^+A(coord)--------A^+A(coord+(1,0))--T C2x2_LD(coord+(0,1))--C2x2_RD(coord+(1,1)) | | | | T--A^+A(coord+(0,1))--A^+A(coord+(1,1))--T | | | | C--T------------------T------------------C
The physical indices s and s’ of on-sites tensors \(A\) (and \(A^\dagger\)) at vertices
coord
,coord+(1,0)
,coord+(0,1)
, andcoord+(1,1)
are left uncontracted and given in the same order:s0 s1 s2 s3
- ctm.pess_kagome_abelian.rdm_kagome.rdm2x2_up_triangle_open(coord, state, env, sym_pos_def=False, force_cpu=False, verbosity=0, **kwargs)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) specifies upper left site of 2x2 subsystem
state (IPEPS_KAGOME_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
verbosity (int) – logging verbosity
force_cpu (bool) – perform on CPU
sym_pos_def (bool) – make reduced density matrix positive-(semi)definite
- Returns:
reduced density matrix as rank-6 tensor
- Return type:
yast.Tensor
Build reduced density matrix corresponding to the three sites s0, s1, and s2 of the “up” triangle of Kagome lattice:
C T T C => C2x2_LU(coord)--------C2x2(coord+(1,0)) a a | s1/| | | |/s2 s0\| T b--\ b--\ C2x2_LD(coord+(0,1))--C2x2(coord+(1,1)) \ / \ XX--XX--d XX--XX--d T | / | / |/ |/ XX s1 | | c c / / a a | | T b--\ b--\ \ / \ XX--s2--d s0--XX--d T | / | / |/ |/ XX XX | | c c C T T C
- ctm.pess_kagome_abelian.rdm_kagome.trace1x1_dn_kagome(coord, state, env, op, verbosity=0)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) for which reduced density matrix is constructed
state (IPEPS_KAGOME_ABELIAN) – underlying wavefunction
env (ENV_ABELIAN) – environment corresponding to
state
verbosity (int) – logging verbosity
op (yast.Tensor) – operator to be contracted. It is expected that the op is either rank-6 tensor or rank-2 tensor with bra and ket spaces fused
- Returns:
trace of the given on-site observable
- Return type:
yast.Tensor
Evaluate operator
op
supported on the three sites of the down triangle of Kagome lattice \(Tr{\rho_{1x1,ABC} op}\) centered on vertexcoord
.