If I have a 1D chain, each unit cell contains three sublattices: two bosons and one spin. "Two bosons" here refers to one boson with pseudo spins (or two species bosons). In the simulation, I want to fix the number of both bosons (For each boson, we set a fixed number, as the same case of spin-1/2 fermion with both "N" and "Sz" conservations). To self define the lattice structure, how we can set the "site.multi_sites_combine_charges() " for boson and spin? Is it ok for the below example:

Code: Select all

```
class Model(lattice.Lattice):
def __init__(self, Lx, siteA, siteB, siteC, **kwargs):
site.multi_sites_combine_charges([siteA, siteC]) # siteA for Boson with pseudo spin up; siteB for Boson with pseudo spin down
site.multi_sites_combine_charges([siteB, siteC]) # siteC for spin
super().__init__([Lx], [siteA, siteB, siteC], **kwargs)
class BosonSin(CouplingMPOModel):
def init_lattice(self, model_params):
siteA = BosonSite(Nmax=2, conserve='N')
siteB = SpinHalfSite(None)
lat = Model(Lx, site[0], siteA, siteA, siteB, order=order, bc=bc_x, bc_MPS=bc_MPS)
```

Code: Select all

`site.multi_sites_combine_charges([siteA, siteB, siteC])`

In the simulation, how I can keep number conservations for bosons A and B?