## Learn to Use ITensor

main / classes / hubbard C++v3 | C++v2

# Hubbard and HubbardSite

The Hubbard class is a specialization of SiteSet which initializes its sites to be of type HubbardSite, representing a particle with spin 1/2 (either a fermion or a spinful boson) occupying a single local orbital (meaning that the maximum occupancy of the site is two particles: one with spin up and one with spin down).

The HubbardSite class can also be used to create custom SiteSets which mix HubbardSites with other types of sites.

A Hubbard site set (and HubbardSite) accepts the following optional named arguments:

• "ConserveNf" — (default is true) make the quantum numbers carried by a HubbardSite include the particle number. If set to false, the quantum numbers will only reflect the particle number modulo 2 (the "parity").
• "ConserveSz" — (default is true) make the quantum numbers carried by a HubbardSite include the spin. If set to false, the quantum numbers will only charge or parity, depending on the value of "ConserveNf"

Hubbard and HubbardSite are defined in the file "itensor/mps/sites/hubbard.h"

## Synopsis

auto sites = Hubbard(100);

auto Ntot_3 = sites.op("Ntot",3);

auto Cup_4 = sites.op("Cup",4);

//Make a Hubbard site set which only conserves parity
auto psites = Hubbard(100,{"ConserveNf",false});


## States of a HubbardSite

• "Emp" — the vacuum (empty) state (alternate name "0")

• "Up" — site occupied by one spin up particle (alternate name "+")

• "Dn" — site occupied by one spin down particle (alternate name "-")

• "UpDn" — site occupied by two particles, one of each spin (alternate name "S" for singlet)

## Operators Provided by HubbardSite

• "Nup" — density of up-spin particles $\hat{n}_\uparrow$

• "Ndn" — density of down-spin particles $\hat{n}_\downarrow$

• "Nupdn" — density of doubly-occupied sites $\hat{n}_\uparrow \hat{n}_\downarrow$

• "Ntot" — the total density operator $\hat{n}_\text{tot} = \sum_\sigma \hat{n}_\sigma$

• "Aup" — the up-spin annihilation operator $\hat{a}_\uparrow$

• "Adagup" — the up-spin creation operator $\hat{a}^\dagger_\uparrow$

• "Adn" — the down-spin annihilation operator $\hat{a}_\downarrow$

• "Adagdn" — the down-spin creation operator $\hat{a}^\dagger_\downarrow$

• "F" — the Jordan-Wigner fermion 'string' operator $\hat{F}=(-1)^{\hat{n}_\text{tot}}$

• "Sz" — the z-component spin operator (matrix elements +0.5 for an up spin, -0.5 for a down spin)

• "S+" — the spin raising operator (matrix element +1.0 for mapping a down spin to an up spin)

• "S-" — the spin lowering operator (matrix element +1.0 for mapping an up spin to a down spin)

For the following fermionic operators, it is crucial to note that when obtaining them as individual tensors from a site set, they do not anti-commute with each other on different sites, only on the same site (for more details on how these operators act on a single site read more at this tutorial). In contrast, when used as operator names in the construction of an AutoMPO, they do anti-commute but only in that context.

• "Cup" — the up-spin annihilation operator $\hat{c}_\uparrow$ .

• "Cdagup" — the up-spin creation operator $\hat{c}^\dagger_\uparrow$ .

• "Cdn" — the down-spin annihilation operator $\hat{c}_\downarrow$ .

• "Cdagdn" — the down-spin creation operator $\hat{c}^\dagger_\downarrow$ .

Back to Classes
Back to Main