I want to simulate the following Boson-Hubbard Hamiltonian on a simple SSH chain:

\(H = \sum_i \left(t_1 b_i^\dagger a_i + t_2 a_{i+1}^\dagger b_i + H.c.\right) + \sum_i (U_1 a_i^\dagger a_i a_i^\dagger a_i + U_2 b_i^\dagger b_i b_i^\dagger b_i) + \sum_i (V_i a_i^\dagger a_i + Q_i b_i^\dagger b_i) \)

where each unit cell contains two Bosons \( a_i, b_i \), and \(V_i\) and \(Q_i\) are random onsite potentials. I have the following four questions to simulate this model in TeNPy:

(1) About the function "multi_sites_combine_charges":

I firstly set the site and lattice as follows

Code: Select all

```
boson_site1 = BosonSite(Nmax=n_max, conserve='N')
boson_site2 = BosonSite(Nmax=n_max, conserve='N')
multi_sites_combine_charges([boson_site1, boson_site2])
lat = Lattice([L], [boson_site1, boson_site2], bc=bc, bc_MPS=bc_MPS)
```

(2) To add terms of the Hamiltonian, how I can use the function "add_onsite" to add disorders for \(V_i\) and \(Q_i\), respectively?

(3) How to set the onsite energy at a specific site of the chain, e.g., \(J *a_p^\dagger a_p\) at p site (0<p<L) using the function "add_onsite_term"?

(4) If I want the first site and last site of the chain to be the Boson \(a\) (i.e., to remove the last site \(b_L\)), how I can write the python script?

Thank you very much!