Reduced Density Matrices¶
- ctm.generic.rdm.rdm1x1(coord, state, env, operator=None, sym_pos_def=False, force_cpu=False, verbosity=0)[source]¶
- Parameters:
- Returns:
1-site reduced density matrix with indices \(s;s'\). If an operator was provided, returns the expectation value of this operator (not normalized by the norm of the wavefunction).
- 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
If no operator was provided, the physical indices s and s’ of on-site tensor \(A\) at vertex
coord
and it’s hermitian conjugate \(A^\dagger\) are left uncontracted. Else, they are contracted with the operator.
- ctm.generic.rdm.rdm1x2(coord, state, env, sym_pos_def=False, verbosity=0)[source]¶
- Parameters:
- 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_{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.rdm.rdm2x1(coord, state, env, sym_pos_def=False, verbosity=0)[source]¶
- Parameters:
- 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:
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.rdm.rdm2x2(coord, state, env, sym_pos_def=False, verbosity=0)[source]¶
- Parameters:
- 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 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.rdm_kagome.double_layer_a(state, coord, open_sites=[], force_cpu=False)[source]¶
- Parameters:
state (IPEPS_KAGOME) – 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:
torch.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.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) – underlying wavefunction
env (ENV) – 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:
torch.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 reshaped into a single index. If some DoFs remain open, then returned tensor is rank-3 with extra index carrying all physical DoFs reshaped 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.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) – underlying wavefunction
env (ENV) – 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.rdm_kagome.rdm1x2_kagome(coord, state, env, sites_to_keep_00=('A', 'B', 'C'), sites_to_keep_01=('A', 'B', 'C'), sym_pos_def=False, force_cpu=False, verbosity=0, **kwargs)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) specifies position of 1x2 subsystem
state (IPEPS_KAGOME) – underlying wavefunction
env (ENV) – 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_01 – physical sites needed for the unit cell at coord + (0, 1)
- 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_{1x2}\) of a vertical 1x2 subsystem using following strategy:
- ctm.pess_kagome.rdm_kagome.rdm2x1_kagome(coord, state, env, sites_to_keep_00=('A', 'B', 'C'), sites_to_keep_10=('A', 'B', 'C'), force_cpu=False, sym_pos_def=False, verbosity=0, **kwargs)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) specifies position of 2x1 subsystem
state (IPEPS_KAGOME) – underlying wavefunction
env (ENV) – 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)
- 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:
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.pess_kagome.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) – underlying wavefunction
env (ENV) – environment corresponding to
state
verbosity (int) – logging verbosity
op (torch.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:
torch.tensor, torch.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.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) – underlying wavefunction
env (ENV) – 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:
torch.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.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) – underlying wavefunction
env (ENV) – 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:
torch.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.rdm_kagome.trace1x1_dn_kagome(coord, state, env, op, verbosity=0, force_cpu=False)[source]¶
- Parameters:
coord (tuple(int,int)) – vertex (x,y) for which the reduced density matrix is constructed
state (IPEPS_KAGOME) – underlying wavefunction
env (ENV) – environment corresponding to
state
op (torch.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)verbosity (int) – logging verbosity
force_cpu (bool) – perform on CPU
- Returns:
expectation value of the given on-site observable
op
- Return type:
torch.tensor
y\x -1 0 1 -1 C1 T4 C4 0 T1 a*a T3 1 C2 T2 C3
Evaluate operator
op
supported on the three sites of the down triangle of Kagome lattice \(Tr{\rho_{1x1,ABC} op}\) centered on vertexcoord
.