Addition of a chemical potential term to 2D Hubbard Hamiltonians

ITensor Developers,

I’m wondering if there’s a way to add a chemical potential term to a 2D Hubbard Hamiltonian to control filling. The term of the HH usually looks like this:


and is formulated completely in equation 1 of this paper:

If a way to implement such a term doesn’t exist in ITensor, is my best bet to use a particle-conserving model and encode information about filling in the initial state? I’m not including any code, as this is a general question that I’ve thought about asking in the context of multiple different projects of mine.

I feel like I’ve looked pretty thoroughly, but the LAST thing I want to do is to ask a question that I could easily find an answer to, so I’m sorry in advance if this is covered somewhere in ITensor’s documentation.

Particle conserving Hamiltonians dont need this term - just specify the sector you want by the initial state as you said. If they, for example, only conserve parity due to a pinning term (like equation 17 in your arxiv link), then you’ll need that term to control filling.

Regardless, with OpSum that term is easy to add, e.g. a 1d Hubbard model

os = OpSum()
for b in 1:(N - 1)
  os += -t, "Cdagup", b, "Cup", b + 1
  os += -t, "Cdagup", b + 1, "Cup", b
  os += -t, "Cdagdn", b, "Cdn", b + 1
  os += -t, "Cdagdn", b + 1, "Cdn", b
for i in 1:N
  os += U, "Nupdn", i
  os += -mu, "Ntot", i # The term you're asking about
H = MPO(os, sites)