Corner Transfer Matrix Algorithm

ctm.generic.ctmrg.ctm_MOVE(direction, state, env, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>, verbosity=0, diagnostics=None)[source]
Parameters
  • direction (tuple(int,int)) – one of Up=(0,-1), Left=(-1,0), Down=(0,1), Right=(1,0)

  • state (IPEPS) – wavefunction

  • env (ENV) – environment

  • ctm_args (CTMARGS) – CTM algorithm configuration

  • global_args (GLOBALARGS) – global configuration

Executes a single directional CTM move in one of the directions. First, build projectors for each non-equivalent bond (to be truncated) in the unit cell of iPEPS. Second, construct enlarged environment tensors and then truncate them to obtain updated environment tensors.

ctm.generic.ctmrg.run(state, env, conv_check=None, ctm_args=<config.CTMARGS object>, global_args=<config.GLOBALARGS object>)[source]
Parameters
  • state (IPEPS) – wavefunction

  • env (ENV) – environment

  • conv_check (function(IPEPS,ENV,list[float],CTMARGS)->bool) – function which determines the convergence of CTM algorithm. If None, the algorithm performs ctm_args.ctm_max_iter iterations.

  • ctm_args (CTMARGS) – CTM algorithm configuration

  • global_args (GLOBALARGS) – global configuration

Executes directional CTM algorithm for generic iPEPS starting from the intial environment env.

To establish the convergence of CTM before the maximal number of iterations is reached a conv_check function is invoked. Its expected signature is conv_check(IPEPS,ENV,Object,CTMARGS) where Object is an arbitary argument. For example it can be a list or dict used for storing CTM data from previous steps to check convergence.