Abelian-symmetric environment¶
- class ctm.generic_abelian.env_abelian.ENV_ABELIAN(chi=1, state=None, settings=None, init=False, init_method=None, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
chi (int) – environment bond dimension \(\chi\)
state (IPEPS_ABELIAN) – wavefunction
settings (NamedTuple or SimpleNamespace (TODO link to definition)) – YAST configuration
init (bool) – initialize environment tensors
init_method (str) – choice of environment initialization. See
init_env()
.ctm_args (CTMARGS) – CTM algorithm configuration
global_args (GLOBALARGS) – global configuration
For each pair of (vertex, on-site tensor) in the elementary unit cell of
state
, create corresponding environment tensors: Half-row/column tensors T’s and corner tensors C’s. The corner tensors have dimensions \(\chi \times \chi\) and the half-row/column tensors have dimensions \(\chi \times \chi \times D^2\) (D might vary depending on the corresponding dimension of on-site tensor). The environment of each double-layer tensor (A) is composed of eight different tensors:y\x -1 0 1 -1 C T C 0 T A T 1 C T C
The individual tensors making up the environment of a site are defined by four directional vectors \(d = (x,y)_{\textrm{environment tensor}} - (x,y)_\textrm{A}\) as follows:
C(-1,-1) T (1,-1)C |(0,-1) T--(-1,0)--A(0,0)--(1,0)--T |(0,1) C(-1,1) T (1,1)C
These environment tensors of some ENV object
e
are accesed through its membersC
andT
by providing a tuple of coordinates and directional vector to the environment tensor:coord=(0,0) # tuple(x,y) identifying vertex on the square lattice rel_dir_vec_C=(-1,-1) # tuple(rx,ry) identifying one of the four corner tensors rel_dir_vec_T=(-1,0) # tuple(rx,ry) identifying one of the four half-row/column tensors C_upper_left= e.C[(coord,rel_dir_vec_C)] # return upper left corner tensor of site at coord T_left= e.T[(coord,rel_dir_vec_T)] # return left half-row tensor of site at coord
The index-position convention is as follows: Start from the index in the direction “up” <=> (0,-1) and continue anti-clockwise. The reference symmetry signatures are shown on the right:
C--1 0--T--2 0--C C(+1) (-1)T(+1) (-1)C | | | (+1) (+1) (+1) 0 1 1 0 0 | | (-1) (-1) T--2 1--T T(+1) (-1)T | | (+1) (+1) 1 2 0 0 0 | | | (-1) (-1) (-1) C--1 1--T--2 1--C C(+1) (-1)T(+1) (-1)C
Note
The structure of fused double-layer legs, which are carried by T-tensors, is obtained by fusing on-site tensor (ket) with its conjugate (bra). The leg of ket always preceeds bra when fusing.
- clone()[source]¶
- Returns:
returns a clone of the environment
- Return type:
Create a clone of environment with all tensors (their blocks) attached to the computational graph.
Note
This operation preserves gradient tracking.
- detach()[source]¶
- Returns:
returns a view of the environment with all C,T tensors detached from computational graph.
- Return type:
In case of using PyTorch backend, get a detached “view” of the environment. See torch.Tensor.detach.
Note
This operation does not preserve gradient tracking.
- to_dense(state, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
state (IPEPS_ABELIAN) – abelian-symmetric iPEPS
- Returns:
returns equivalent of the environment with all C,T tensors in their dense representation on PyTorch backend.
- Return type:
Create a copy of environment with all on-site tensors as dense possesing no explicit block structure (symmetry). The virtual spaces of on-site tensors in
state
are added to corresponding spaces of environment’s T tensors to guarantee consistency.Note
This operations preserves gradients on the returned dense environment.
- ctm.generic_abelian.env_abelian.init_env(state, env, init_method=None, ctm_args=<config.CTMARGS object>)[source]¶
- Parameters:
state (IPEPS_ABELIAN) – wavefunction
env (ENV_ABELIAN) – CTM environment
init_method (str) – desired initialization method
ctm_args (CTMARGS) – CTM algorithm configuration
Initializes the environment env according to one of the supported options specified by
CTMARGS.ctm_env_init_type
CTMRG - tensors C and T are built from the on-site tensors of state