Lattices

Models can be defined on different lattices, and several lattices lend themselves to a description in terms of a (quasi-)one-dimensional operator. In order to facilitate this mapping, the combination of the @mpoham macro and the lattices in this package provides an easy interface.

MPSKitModels.HoneycombYCType
HoneycombYC(L::Integer, N::Integer=L)

A honeycomb lattice on an infinite cylinder with L sites per rung and N sites per unit cell. The y-axis is aligned along an edge of the hexagons, and the circumference is $3L/4$.

source

Having defined a lattice, it is possible to iterate over several points or combinations of points that can be of interest. Such a point is represented as a LatticePoint, which is defined in terms of an integer N-dimensional coordinate system representation, and supports addition and subtraction, both with other points or with tuples. These structures also handle the logic of being mapped to a one-dimensional system.

Sometimes it might be useful to change the order of the linear indices of certain lattices. In this case a wrapper around a lattice can be defined through the following:

Any mapping of linear indices can be used, but the following patterns can be helpful: