Corner Transfer Matrix Algorithm¶
- ctm.one_site_c4v.ctmrg_c4v.ctm_MOVE_dl(a, env, f_c2x2_decomp, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
a (torch.Tensor) – on-site C4v symmetric tensor
env (ENV_C4V) – C4v symmetric environment
f_c2x2_decomp (function(torch.Tensor, int)->torch.Tensor, torch.Tensor) – function performing the truncated spectral decomposition (eigenvalue/svd) of enlarged corner. The
f_c2x2_decomp
returns a tuple composed of leading chi spectral values and projector on leading chi spectral values.ctm_args (CTMARGS) – CTM algorithm configuration
global_args (GLOBALARGS) – global configuration
Executes a single step of C4v symmetric CTM algorithm for 1-site C4v symmetric iPEPS. This variant of CTM step does explicitly build double-layer on-site tensor. Hence, the leading cost in memory usage with bond dimension D is \(O(D^8)\).
- ctm.one_site_c4v.ctmrg_c4v.ctm_MOVE_sl(a, env, f_c2x2_decomp, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>, past_steps_data=None)[source]¶
- Parameters:
a (torch.Tensor) – on-site C4v symmetric tensor
env (ENV_C4V) – C4v symmetric environment
f_c2x2_decomp (function(torch.Tensor, int)->torch.Tensor, torch.Tensor) – function performing the truncated spectral decomposition (eigenvalue/svd) of enlarged corner. The
f_c2x2_decomp
returns a tuple composed of leading chi spectral values and projector on leading chi spectral values.ctm_args (CTMARGS) – CTM algorithm configuration
global_args (GLOBALARGS) – global configuration
past_steps_data – dictionary used for recording diagnostic information during CTM
Executes a single step of C4v symmetric CTM algorithm for 1-site C4v symmetric iPEPS. This variant of CTM step does not explicitly build double-layer on-site tensor.
- ctm.one_site_c4v.ctmrg_c4v.run(state, env, conv_check=None, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
state (IPEPS_C4V) – wavefunction
env (ENV_C4V) – initial C4v symmetric environment
conv_check (function(IPEPS_C4V,ENV_C4V,Object,CTMARGS)->bool) – function which determines the convergence of CTM algorithm. If
None
, the algorithm performsctm_args.ctm_max_iter
iterations.ctm_args (CTMARGS) – CTM algorithm configuration
global_args (GLOBALARGS) – global configuration
Executes specialized CTM algorithm for 1-site C4v symmetric iPEPS starting from the intial environment
env
. The is a single-layer version, which avoids explicitly building double-layer on-site tensor.To establish the convergence of CTM before the maximal number of iterations is reached a
conv_check
function is invoked. Its expected signature isconv_check(IPEPS_C4V,ENV_C4V,Object,CTMARGS)
whereObject
is an arbitary argument. For example it can be a list or dict used for storing CTM data from previous steps to check convergence.If desired, CTM can be accelerated by fixed-point corner-matrix algorithm (FPCM) controlled by settings in
CTMARGS
.Note
Currently, FPCM does not support reverse-mode differentiation.
- ctm.one_site_c4v.ctmrg_c4v.run_dl(state, env, conv_check=None, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
state (IPEPS_C4V) – wavefunction
env (ENV_C4V) – initial C4v symmetric environment
conv_check (function(IPEPS,ENV_C4V,Object,CTMARGS)->bool) – function which determines the convergence of CTM algorithm. If
None
, the algorithm performsctm_args.ctm_max_iter
iterations.ctm_args (CTMARGS) – CTM algorithm configuration
global_args (GLOBALARGS) – global configuration
A double-layer variant (explicitly building double-layer tensor) of CTM algorithm. See
run()
.