Kagome iPESS with point groups

Specialized sub-class of ipeps.ipess_kagome.IPESS_KAGOME_GENERIC. This iPESS ansatz can be constrained in several ways:

  • make trivalent tensor of up and down triangles identical

  • make bond tensors identical

  • constrain individual iPESS tensors to some point group irrep

Supported point groups are \(A\) and \(B\) for bond tensor and \(A_1\) and \(A_2\) for trivalent tensors.

class ipeps.ipess_kagome.IPESS_KAGOME_PG(T_u, B_c, T_d=None, B_a=None, B_b=None, SYM_UP_DOWN=True, SYM_BOND_S=True, pgs=None, pg_symmetrize=False, peps_args=<config.PEPSARGS object>, global_args=<config.GLOBALARGS object>)[source]

Bases: IPESS_KAGOME_GENERIC

Parameters:
  • T_u (torch.tensor) – rank-3 tensor

  • B_c (torch.tensor) – rank-3 tensor containing physical degree of freedom

  • T_d – rank-3 tensor

  • B_a (torch.tensor) – rank-3 tensor containing physical degree of freedom

  • B_b (torch.tensor) – rank-3 tensor containing physical degree of freedom

  • SYM_UP_DOWN (bool) – is up triangle equivalent to down triangle

  • SYM_BOND_S (bool) – are bond tensors equivalent to each other

  • pgs (dict(str,str)) – dictionary assigning point-group irreps to elementary tensors

  • peps_args (PEPSARGS) – ipeps configuration

  • global_args (GLOBALARGS) – global configuration

Single unit-cell iPESS ansatz (3 sites per unit cell) for Kagome lattice with additional spatial symmetries.

  • If SYM_UP_DOWN, then T_d trivalent tensor is taken to be identical to T_u. The choice of the contraction guarantees the same (direction of) chirality on up and down triangles.

  • If SYM_BOND_S, then B_a and B_b bond tensors are taken to be identical to B_c.

All non-equivalent tensors can be accessed through member elem_tensors, which is a dictionary:

if SYM_UP_DOWN and SYM_BOND_S

    elem_tensors = {'T_u': torch.Tensor, 'B_c': torch.Tensor}

if SYM_UP_DOWN

    elem_tensors = {'T_u': torch.Tensor, 'B_c': torch.Tensor, 'B_a': ..., 'B_c': ...}

etc.

Argument pgs is assumed to be dictionary, with keys being the names of elementary ipess tensors. Predefined choices are:

IPESS_KAGOME_PG.PG_A1_B= {'T_u': 'A_1', 'T_d': 'A_1', 'B_a': 'B', 'B_b': 'B', 'B_c': 'B'}
IPESS_KAGOME_PG.PG_A2_B= {'T_u': 'A_2', 'T_d': 'A_2', 'B_a': 'B', 'B_b': 'B', 'B_c': 'B'}

If the elementary tensor is present in the pgs, it is constrained to given irrep of the point group.

add_noise(noise)[source]
Parameters:

noise (float) – magnitude of noise

Add uniform random noise to iPESS tensors, respecting the spatial symmetry constraints.

extend_bond_dim(new_d)[source]
Parameters:

new_d (int) – new enlarged auxiliary bond dimension

Returns:

wavefunction with enlarged auxiliary bond dimensions

Return type:

IPESS_KAGOME_PG

Take IPESS_KAGOME_PG and enlarge all auxiliary bond dimensions of ipess tensors to the new size new_d

get_checkpoint()[source]
Returns:

all data necessary to reconstruct the state. In this case member elem_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_PG

Return type:

iterable

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

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, pg_symmetrize=True)[source]

See write_ipess_kagome_pg().

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

  • peps_args (PEPSARGS) – ipeps configuration

  • global_args (GLOBALARGS) – global configuration

Returns:

wavefunction

Return type:

IPESS_KAGOME_PG

Read IPESS_KAGOME_PG state from file.

ipeps.ipess_kagome.to_PG_symmetric(state, SYM_UP_DOWN=None, SYM_BOND_S=None, pgs=None)[source]
Parameters:
  • state (IPESS_KAGOME_PG) – wavefunction

  • SYM_UP_DOWN (bool) – make trivalent tensors 'T_u' and 'T_d' identical

  • SYM_BOND_S (bool) – make bond tensors 'B_a', 'B_b', and 'B_c' identical

  • pgs (dict[str: str]) – point group irreps for individual ipess tensors

Returns:

symmetrized state

Return type:

IPESS_KAGOME_PG

Symmetrize IPESS_KAGOME_PG wavefunction by imposing additional spatial symmetries.

ipeps.ipess_kagome.write_ipess_kagome_pg(state, outputfile, tol=1e-14, normalize=False, pg_symmetrize=False)[source]
Parameters:
  • state (IPESS_KAGOME_PG) – 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

  • pg_symmetrize (bool) – symmetrize state before writing out

Write state to file.