# Two-component Bose-Hubbard model

+1 vote
edited

Dear ITensor community,

I want to ask for help in defining the siteset for a two-component Bose-Hubbard Hamiltonian. Hamiltonian of the interest is as follows:
$$H = -J\sum_i (a^\dagger_{i+1}a_i + b^{\dagger}_{i+1}b_i + h.c.) + U_{aa}/2\sum_i n^{a}_i(n^{a}_i-1) + U_{bb}/2\sum_i n^{b}_i (n^{b}_i-1) + U_{ab}\sum_{i}n^{a}_i n^{b}_i$$
where operators @@a_i@@ fulfill bosonic commutation relations, as well as @@b@@.

Can I ask for some steps of modification "bosons.h" file to construct mentioned Hamiltonian?

1. Total number of particles is conserved Na + Nb = const
2. I would like to consider the case that, in general, the magnetization Sz = Na - N_b is not conserved.

Hi Marcin,
Thanks for the question. First of all, to see a typical example of how to set up an alternating, mixed type of system for the C++ version of ITensor you can refer to this example:

http://itensor.org/docs.cgi?vers=cppv3&page=formulas/gs_holst_polaron

which shows how to have your sites alternate between the site types included with ITensor.

But for your case of two kinds of bosons and conserving their particle numbers separately, the easiest approach will be to make a custom site set which slightly generalizes the boson.h one included with ITensor. Here are the steps:

1. make a copy of the file itensor/mps/sites/boson.h and call it something like ab_boson.h

2. inside that file, rename the type "Boson" everywhere to something else like "ABBoson" so it doesn't conflict with the Boson type included with ITensor

3. now modify the constructor for ABBoson around line 55 of that file to instead do this logic:

if(n%2==1)
{
qints[n] = QNInt(QN({"NbA",n}),1);
}
else
{
qints[n] = QNInt(QN({"NbB",n}),1);
}

and that should be all you need.

Now just use this site set in your code as usual, meaning that you make your site set as:

auto sites = ABBoson(N);

And then it should "just work" in the sense of always conserving the number of A and B bosons separately. I'd encourage you to check that by computing and summing up the total density of bosons on odd (A) versus even (B) sites at various points in your calculation.

Best regards,
Miles