Generating Lattices#
We have several functions in the qse.lattices submodule to directly generate known lattices and geometries.
import numpy as np
import qse
One Dimensional Chain#
qchain = qse.lattices.chain(lattice_spacing=3, repeats=10)
qchain.draw(radius="nearest", equal_aspect=False)
Ring geometry#
qring = qse.lattices.ring(spacing=2.0, nqbits=12)
qring.draw(radius="nearest")
Square lattice#
qsquare = qse.lattices.square(1, repeats_x=6, repeats_y=6)
qsquare.set_centroid(0.0)
qsquare.draw(radius=2)
Triangular lattice#
qtriangle = qse.lattices.triangular(1, repeats_x=6, repeats_y=5)
qtriangle.draw(radius="nearest")
Hexagonal lattice#
qhexagon = qse.lattices.hexagonal(1, repeats_x=5, repeats_y=5)
qhexagon.draw(radius="nearest", show_labels=True)
del qhexagon[[0, 49]]
qhexagon.draw(radius="nearest")
Kagome lattice#
qkagome = qse.lattices.kagome(1, repeats_x=5, repeats_y=5)
qkagome.set_centroid(0.0)
qkagome.draw(radius=3)
Constructing lattices via lattice vectors#
Rectangluar lattice#
spacing = 1.0
cell = spacing * np.array([[2.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 0.0]])
# qbits object with one qubit at origin
q_unit = qse.Qbits(positions=np.zeros((1, 3)), cell=cell)
# now repeat the pattern to get lattice of desired size
qrectangle = q_unit.repeat((5, 5, 1))
qrectangle.draw(radius=2)
Simple Cubic lattice#
spacing = 1.0
cell = spacing * np.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]])
# qbits object with one qubit at origin
q_unit = qse.Qbits(positions=np.zeros((1, 3)), cell=cell)
# now repeat the pattern to get lattice of desired size
qsquare = q_unit.repeat((5, 5, 5))
qsquare.draw(radius="nearest")
Some special geometries#
Torus geometry#
qtorus = qse.lattices.torus(n_outer=15, n_inner=15, inner_radius=2.0, outer_radius=6.0)
qtorus.draw(radius=2.0)
Version#
qse.utils.print_environment()
Python version: 3.12.12
qse version: 1.0.3