The Algorithms for Lattice Fermions package provides a general code for auxiliary-field quantum Monte Carlo simulations.


General Hamiltonian

ALF simulates any model that can be written (see below) in terms of sums of:
  • single-body operators,
  • squares of single-body operators, and
  • single-body operators coupled to an Ising field with given dynamics.


Choosing from predefined types or defining their own, the user can specify:
  • the model,
  • the Bravais lattice, and
  • observables (equal-time and time-displaced).

High Performance

ALF makes full use of the computational resources available, boasting:
  • parallelization via MPI and OpenMP,
  • near-optimal single-core performance, and
  • restart facilities.

Ease of Use

The package capabilities are made easily accessible through:
  • its Python interface, pyALF,
  • extensive documentation and a short tutorial, as well as
  • a large set of Predefined Structures, which substantially simplify extending the code.

Advanced Features

Among other facilities, ALF also provides:
  • parallel tempering,
  • ground state projective QMC,
  • global Monte Carlo updates,
  • continuous fields,
  • Langevin dynamics updates,
  • stochastic Maximum Entropy method,
  • symmetric Trotter decomposition,
  • Dimer-Dimer correlations,
  • Cotunneling for Kondo models, and
  • Rényi Entropy.


Users can contact us at any time.

ALF’s code is available from our Git instance at where one can also sign in to file issues.

General Hamiltonian

The general Hamiltonian ALF simulates can be written as:

$$ \begin{align} \hat{\mathcal{H}} &= \hat{\mathcal{H}}_{T}+\hat{\mathcal{H}}_{V} + \hat{\mathcal{H}}_{I} + \hat{\mathcal{H}}_{0,I}, \end{align} $$ where $$ \begin{align} \hat{\mathcal{H}}_{T} &= \sum\limits_{k=1}^{M_T} \sum\limits_{\sigma=1}^{N_{\mathrm{col}}} \sum\limits_{s=1}^{N_{\mathrm{fl}}} \sum\limits_{x,y}^{N_{\mathrm{dim}}} \hat{c}^{\dagger}_{x \sigma s}T_{xy}^{(k s)} \hat{c}^{\phantom\dagger}_{y \sigma s} \equiv \sum\limits_{k=1}^{M_T} \hat{T}^{(k)} \label{eqn:general_ham_t}\,,\\ \hat{\mathcal{H}}_{V} &= \sum\limits_{k=1}^{M_V}U_{k} \left\{ \sum\limits_{\sigma=1}^{N_{\mathrm{col}}} \sum\limits_{s=1}^{N_{\mathrm{fl}}} \left[ \left( \sum\limits_{x,y}^{N_{\mathrm{dim}}} \hat{c}^{\dagger}_{x \sigma s}V_{xy}^{(k s)}\hat{c}^{\phantom\dagger}_{y \sigma s} \right) +\alpha_{k s} \right] \right\}^{2} \equiv \sum\limits_{k=1}^{M_V}U_{k} \left(\hat{V}^{(k)} \right)^2 \label{eqn:general_ham_v}\,,\\ \hat{\mathcal{H}}_{I} & = \sum\limits_{k=1}^{M_I} \hat{Z}_{k} \left( \sum\limits_{\sigma=1}^{N_{\mathrm{col}}} \sum\limits_{s=1}^{N_{\mathrm{fl}}} \sum\limits_{x,y}^{N_{\mathrm{dim}}} \hat{c}^{\dagger}_{x \sigma s} I_{xy}^{(k s)}\hat{c}^{\phantom\dagger}_{y \sigma s} \right) \equiv \sum\limits_{k=1}^{M_I} \hat{Z}_{k} \hat{I}^{(k)} \,.\label{eqn:general_ham_i} \end{align} $$