Thursday, September 12, 2013

Quantum many-body physics on Mathematica

A common problem in the practical implementation of quantum many-body theory [whether for quantum chemistry, solid state physics, or nuclear physics] goes like this. One starts with a Hamiltonian and observables that are written in terms of second quantised operators. Real calculations of observables requires diagonalising the Hamiltonian matrix. It must then be written as a symmetric real matrix in some basis of many-body states.

To do this means manipulating large numbers of creation and annihilation operators. This  can quickly become cumbersome, particularly for fermions. It is easy to loose track of signs when calculating matrix elements. It would be nice to be able to do this in an automated way, e.g., using Mathematica.

Sriram Shastry and John Wright have developed a Mathematica program DiracQ that will do all this. It can be downloaded for free and is described in detail in a preprint. The latter contains some highly non-trivial examples, e.g., finding the conserved quantities of the one-dimensional Hubbard model.

This should be very useful, both for research and teaching.


  1. Yesterday I wanted to know something about a 4-site Hubbard model So I constructed my first Hamiltonians with DiracQ. It is outstanding. I prepared a two-site basis, calculated matrix elements, and checked some commutators to see it was working. I then extended it by one site, then another, ... then I stopped. It took less than an hour, two including learning time.

    I was really really impressed.

  2. I prefer to use QuTip ( to simulate open quantum systems. It is a freely available toolbox for Python and much more accessible to students than a Mathematica notebook. It has a beautiful website, excellent documentation, a slew of very helpful tutorials, and simple functions that make all sorts of calculations (e.g. Bloch Redfield master equation simulations) nearly trivial to execute.