I am interested in implementing a model which has all sites on the lattice with S=1/2, except for one which has S=1. Or, if possible, I would like to specify which sites have S=1/2, and which have S=1 (possibly more than one). Is there any way to do this in TeNPy? I am currently using CouplingModel to implement the case with all spins S=1/2, as shown below, for a honeycomb lattice with a two-site basis. If there is any way I can modify this to specify different spins on selected sites, this would be a great help.
Code: Select all
class Kitaev(CouplingModel, NearestNeighborModel, MPOModel):
def __init__(self, Lx=Lx_val, Ly=Ly_val, Jx=Jx_val, Jy=Jy_val, Jz=Jz_val, g=g_val, bc_MPS="finite"):
site1 = SpinSite(S=0.5, conserve=None)
site2 = SpinSite(S=0.5, conserve=None)
sites = [site1, site2] # Two sites in the unit cell for honeycomb
lat = Honeycomb(Lx, Ly, sites, bc=["open", "open"], bc_MPS="finite")
CouplingModel.__init__(self, lat)