Skip to content

Adding Heavy-hex lattice

Created by: PhilipVinc

I would like to add the heavy hex lattice as a built-in one in netket to make it easy to look at ibm's stuff.

This is relatively easy to do, thanks to @attila-i-szabo implementation of lattice, and I think can be done by adding two new sites to the unit cell

import netket as nk

extent = (2,2)
site_offsets = [
    [0.50, 0.50 / 3**0.5],
    [0.75, 0.75 / 3**0.5],
    [1.00, 1.00 / 3**0.5],
    [1.25, 0.75 / 3**0.5],
    [1.00, 1.50 / 3**0.5],
]

g = nk.graph._common_lattices._hexagonal_general(
    extent=extent,
    site_offsets=site_offsets,
    pbc=False,
)

but this gives the following graph

Screenshot 2023-07-13 at 13 44 46

which is correct, but does not really match the way that IBM does it (also, the 'unit' used by ibm corresponds to 2 unit cells in this representation.

But the way IBM uses this lattice is that... they have a certain number of unit cells plus some extra sites. I'm unsure how to do it exactly if we want to keep using a Lattice... Indeed we could just hardcode the same graph structure that they use, but maybe I'm missing something...