|  View source on GitHub | 
A general, parameterized Fermi-Hubbard model.
openfermion.hamiltonians.FermiHubbardModel(
    lattice, tunneling_parameters=None, interaction_parameters=None,
    potential_parameters=None, magnetic_field=0.0, particle_hole_symmetry=False
)
The general (AKA 'multiband') Fermi-Hubbard model has k degrees of
freedom per site in a lattice.
For a lattice with n sites, there are N = k * n spatial orbitals.
Additionally, in what we call the "spinful" model each spatial orbital is
associated with "up" and "down" spin orbitals, for a total of 2N spin
orbitals; in the spinless model, there is only one spin-orbital per site
for a total of N.
For a lattice with only one type of site and edges from each site only to itself and its neighbors, the Hamiltonian for the spinful model has the form
.. math::
\begin{align}
H = &- \sum_{a < b} t_{a, b}^{(\mathrm{onsite})}
       \sum_{i} \sum_{\sigma}
             (a^\dagger_{i, a, \sigma} a_{i, b, \sigma} +
              a^\dagger_{i, b, \sigma} a_{i, a, \sigma})
    \\
    &- \sum_{a} t_{a, a}^{(\mathrm{nghbr})}
       \sum_{\{i, j\} } \sum_{\sigma}
             (a^\dagger_{i, a, \sigma} a_{j, a, \sigma} +
              a^\dagger_{j, a, \sigma} a_{i, a, \sigma})
     - \sum_{a < b} t_{a, b}^{(\mathrm{nghbr})}
       \sum_{(i, j)} \sum_{\sigma}
             (a^\dagger_{i, a, \sigma} a_{j, b, \sigma} +
              a^\dagger_{j, b, \sigma} a_{i, a, \sigma})
    \\
    &+ \sum_{a < b} U_{a, b}^{(\mathrm{onsite}, +)}
       \sum_{i} \sum_{\sigma}
             n_{i, a, \sigma} n_{i, b, \sigma}
    \\
    &+ \sum_{a} U_{a, a}^{(\mathrm{nghbr}, +)}
       \sum_{\{i, j\} } \sum_{\sigma}
             n_{i, a, \sigma} n_{j, a, \sigma}
     + \sum_{a < b} U_{a, b}^{(\mathrm{nghbr}, +)}
       \sum_{(i, j)} \sum_{\sigma}
             n_{i, a, \sigma} n_{j, b, \sigma}
    \\
    &+ \sum_{a \leq b} U_{a, b}^{(\mathrm{onsite}, -)}
       \sum_{i} \sum_{\sigma}
             n_{i, a, \sigma} n_{i, b, -\sigma}
    \\
    &+ \sum_{a} U_{a, a}^{(\mathrm{nghbr}, -)}
       \sum_{\{ i, j \} } \sum_{\sigma}
             n_{i, a, \sigma} n_{j, a, -\sigma}
     + \sum_{a < b} U_{a, b}^{(\mathrm{nghbr}, -)}
       \sum_{( i, j )} \sum_{\sigma}
             n_{i, a, \sigma} n_{j, b, -\sigma}
    \\
    &- \sum_{a} \mu_a
       \sum_i \sum_{\sigma} n_{i, a, \sigma}
    \\
    &- h \sum_{i} \sum_{a}
        \left(n_{i, a, \uparrow} - n_{i, a, \downarrow}\right)
\end{align}
where
- The indices :math:`(i, j)` and :math:`\{i, j\}` run over ordered and
  unordered pairs, respectively of sites :math:`i` and :math:`j` of
  neighboring sites in the lattice,
- :math:`a` and :math:`b` index degrees of freedom on each site,
- :math:`\sigma \in \{\uparrow, \downarrow\}` is the spin,
- :math:`t_{a, b}^{(\mathrm{onsite})}` is the tunneling amplitude
  between spin orbitals on the same site,
- :math:`t_{a, b}^{(\mathrm{nghbr})}` is the tunneling amplitude
  between spin orbitals on neighboring sites,
- :math:`U_{a, b}^{(\mathrm{onsite, \pm})}` is the Coulomb potential
  between spin orbitals on the same site with the same (+) or different
  (-) spins,
- :math:`U_{a, b}^{(\mathrm{nghbr, \pm})}` is the Coulomb potential
  betwen spin orbitals on neighborings sites with the same (+) or
  different (-) spins,
- :math:`\mu_{a}` is the chemical potential, and
- :math:`h` is the magnetic field.
One can also construct the Hamiltonian for the spinless model, which has the form
.. math::
\begin{align}
H = &- \sum_{a < b} t_{a, b}^{(\mathrm{onsite})}
       \sum_{i}
             (a^\dagger_{i, a} a_{i, b} +
              a^\dagger_{i, b} a_{i, a})
    \\
    &- \sum_{a} t_{a, a}^{(\mathrm{nghbr})}
       \sum_{\{i, j\} }
             (a^\dagger_{i, a} a_{j, a} +
              a^\dagger_{j, a} a_{i, a})
     - \sum_{a < b} t_{a, b}^{(\mathrm{nghbr})}
       \sum_{(i, j)}
             (a^\dagger_{i, a} a_{j, b} +
              a^\dagger_{j, b} a_{i, a})
    \\
    &+ \sum_{a < b} U_{a, b}^{(\mathrm{onsite})}
       \sum_{i}
             n_{i, a} n_{i, b}
    \\
    &+ \sum_{a} U_{a, a}^{(\mathrm{nghbr})}
       \sum_{\{i, j\} }
             n_{i, a} n_{j, a}
     + \sum_{a < b} U_{a, b}^{(\mathrm{nghbr})}
       \sum_{(i, j)}
             n_{i, a} n_{j, b}
    \\
    &- \sum_{a} \mu_a
       \sum_i n_{i, a}
\end{align}
| Args | |
|---|---|
| lattice (HubbardLattice): The lattice on which the model is defined. tunneling_parameters (Iterable[Tuple[Hashable, Tuple[int, int], float]], optional): The tunneling parameters. interaction_parameters (Iterable[Tuple[Hashable, Tuple[int, int], float, int?]], optional): The interaction parameters. potential_parameters (Iterable[Tuple[int, float]], optional): The potential parameters. magnetic_field (float, optional): The magnetic field. Default is 0. | |
| particle_hole_symmetry | If true, each number operator :math: nis
replaced with :math:n - 1/2. | 
Methods
field_terms
field_terms()
hamiltonian
hamiltonian()
interaction_terms
interaction_terms()
parse_interaction_parameters
parse_interaction_parameters(
    parameters
)
parse_potential_parameters
parse_potential_parameters(
    parameters
)
parse_tunneling_parameters
parse_tunneling_parameters(
    parameters
)
potential_terms
potential_terms()
tunneling_terms
tunneling_terms()