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:
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.
- 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:
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'
identicalSYM_BOND_S (bool) – make bond tensors
'B_a'
,'B_b'
, and'B_c'
identicalpgs (dict[str: str]) – point group irreps for individual ipess tensors
- Returns:
symmetrized state
- Return type:
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.