Generic Kagome iPESS

Specialized sub-class of ipeps.ipeps_kagome.IPEPS_KAGOME. A single on-site tensor representing DoFs on down triangle is built from five different tensors: two rank-3 trivalent tensors with only auxiliary indices and three rank-3 bond tensors, each associated to one of the physical DoFs on the vertices of the down triangle.

class ipeps.ipess_kagome.IPESS_KAGOME_GENERIC(ipess_tensors, peps_args=<config.PEPSARGS object>, global_args=<config.GLOBALARGS object>)[source]

Bases: IPEPS_KAGOME

Parameters:
  • ipess_tensors (dict(str, torch.tensor)) – dictionary of five tensors, which make up Kagome iPESS ansatz

  • peps_args (PEPSARGS) – ipeps configuration

  • global_args (GLOBALARGS) – global configuration

iPESS ansatz for Kagome lattice composes five tensors, specified by dictionary:

ipess_tensors = {'T_u': torch.Tensor, 'T_d': ..., 'B_a': ..., 'B_b': ..., 'B_c': ...}

into a single rank-5 on-site tensor of parent IPEPS. These iPESS tensors can be accessed through member ipess_tensors.

The 'B_*' are rank-3 tensors, with index structure [p,i,j] where the first index p is for physical degree of freedom, while indices i and j are auxiliary with bond dimension D. These bond tensors reside on corners shared between different triangles of Kagome lattice. Bond tensors are connected by rank-3 trivalent tensors 'T_u', 'T_d' on up and down triangles respectively. Trivalent tensors have only auxiliary indices of matching bond dimension D.

The on-site tensors of corresponding iPEPS is obtained by the following contraction:

    2(d)            2(c)                    a
     \             /          rot. pi       |
0(w)==B_a         B_b==0(v)   clockwise  b--\
       \         /             =>            \
       1(l)     1(k)                         s0--s2--d
        2(l)   1(k)                           | /
          \   /                               |/   <- down triangle
           T_d                               s1
            |                                 |
            0(j)                              c
            1(j)
            |
            B_c==0(u)
            |
            2(i)
            0(i)
            |
           T_u
          /   \
        1(a)   2(b)

By construction, the degrees of freedom on down triangle are all combined into a single on-site tensor of iPEPS. Instead, DoFs on the upper triangle have to be accessed by construction of 2x2 patch (which is then embedded into environment):

C    T             T          C
     a             a
     |             |
T b--\          b--\
      \        /    \
      s0--s2--d     s0--s2--d T
       | /           | /
       |/            |/
      s1            s1
       |             |
       c             c
      /             /
     a             a
     |             |
T b--\          b--\
      \        /    \
      s0--s2--d     s0--s2--d T
       | /           | /
       |/            |/
      s1            s1
       |             |
       c             c
C      T             T        C
add_noise(noise)[source]
Parameters:

noise (float) – magnitude of noise

Add uniform random noise to iPESS tensors.

build_onsite_tensors()[source]
Returns:

elementary unit cell of underlying IPEPS

Return type:

dict[tuple(int,int): torch.Tensor]

Build rank-5 on-site tensor by contracting the iPESS tensors.

extend_bond_dim(new_d, peps_args=<config.PEPSARGS object>, global_args=<config.GLOBALARGS object>)[source]
Parameters:

new_d (int) – new enlarged auxiliary bond dimension

Returns:

wavefunction with enlarged auxiliary bond dimensions

Return type:

IPESS_KAGOME_GENERIC

Take IPESS_KAGOME_GENERIC and enlarge all auxiliary bond dimensions of T_u, T_d, B_a, B_b, and B_c tensors to the new size new_d.

get_checkpoint()[source]
Returns:

all data necessary to reconstruct the state. In this case member ipess_tensors

Return type:

dict[str: torch.tensor]

This function is called by optimizer to create checkpoints during the optimization process.

get_parameters()[source]
Returns:

variational parameters of IPESS_KAGOME_GENERIC

Return type:

iterable

This function is called by optimizer to access variational parameters of the state. In this case member ipess_tensors.

get_physical_dim()[source]

Return physical dimension of a single DoF of the underlying Kagome system. Assume the first dimension of on-site tensor is obtained as a cube of single DoF physical dimension i.e. 3**3 for spin-1

load_checkpoint(checkpoint_file)[source]
Parameters:

checkpoint_file (str) – path to checkpoint file

Initializes the state according to the supplied checkpoint file.

Note

The vertexToSite mapping function is not a part of checkpoint and must be provided either when instantiating IPEPS_ABELIAN or afterwards.

write_to_file(outputfile, aux_seq=None, tol=1e-14, normalize=False)[source]

See write_ipess_kagome_generic().

ipeps.ipess_kagome.read_ipess_kagome_generic(jsonfile, peps_args=<config.PEPSARGS object>, global_args=<config.GLOBALARGS object>)[source]
Parameters:
  • jsonfile (str or Path object) – input file describing iPEPS in JSON format`

  • peps_args (PEPSARGS) – ipeps configuration

  • global_args (GLOBALARGS) – global configuration

Returns:

wavefunction

Return type:

IPESS_KAGOME_GENERIC

Read state from file.

ipeps.ipess_kagome.write_ipess_kagome_generic(state, outputfile, tol=1e-14, normalize=False)[source]
Parameters:
  • state (IPESS_KAGOME_GENERIC) – wavefunction to write out in json format

  • outputfile – target file

  • tol (float) – minimum magnitude of tensor elements which are written out

  • normalize (bool) – if True, on-site tensors are normalized before writing

Write state into file.