Mar 042014

Our new computer cluster, Helium, arrived yesterday!

This little stack of metal and silicon packs 20 nodes with 2 Intel Xeon E5-2650 v2 CPUs and 128 GB of RAM, connected by a QDR Infiniband switch (for a total of 320 cores). Helium is a cluster in progress. Once RAM is cheaper we are going to add a few more nodes (12) with 256 GB of memory.

Helium packed

As you can see it barely fit into our elevators.

Helium size

photo 4

Wallace and Francesco building the cluster.

photo 2-1

Front and rear. Check out our QDR Infiniband switch!

photo 3-1
photo 4-1

 March 4, 2014  Uncategorized 3 Responses »
Feb 172014

I just created a web site for the 2014 meeting of the Southeast Theoretical Chemistry Association (SETCA). This year this event will be hosted at Emory and I will be the principal organizer. Information about the meeting can be found at

 February 17, 2014  Uncategorized No Responses »
Sep 162013

Just found this interesting paper on the structure of the simplest Criegee intermediate. The Criegee has been for a long time an elusive molecule and pops up in many fields like astrochemistry and atmospheric chemistry.

Communication: Determination of the molecular structure of the simplest Criegee intermediate CH2OO
J. Chem. Phys. 139, 101103 (2013)
 September 16, 2013  Uncategorized No Responses »
Aug 212013

Just read this very interesting article on compression of the wave function information using singular value decomposition of the full CI vector. The idea of factorizing the CI matrix can already be found in a paper by Koch and Dalgaard, however this earlier paper showed results for system with small number of electrons and basis sets and has a different purpose. As mentioned in the paper, the cost of the SVD step used in the compression step scales as N_{\rm FCI}^{3/2}, where N_{\rm FCI} is the size of the FCI space. This step actually costs a bit more (asymptotically) than what is required to evaluate the product of the Hamiltonian matrix times a trial vector.

Lossless compression of wave function information using matrix factorization: A “gzip” for quantum chemistry
J. Chem. Phys. 139, 074113 (2013)
 August 21, 2013  Uncategorized No Responses »
Jun 232013

A general quadratic programming problem consists in minimizing a quadratic function of the form: 

    \[f(\mathbf{x}) = \frac{1}{2} \mathbf{x}^{T} \mathbf{Q} \mathbf{x} + \mathbf{c}^{T} \mathbf{x},\]

where the vector \mathbf{x} \in \mathbb{R}^n is subject to inequality and equality constraints:

    \[\mathbf{A} \mathbf{x} \leq \mathbf{b},\]

    \[\mathbf{E} \mathbf{x} = \mathbf{d}.\]

The n \times n matrix \mathbf{Q} is symmetric, while \mathbf{A} and \mathbf{E} are general matrices that enforce the constraints.

It turns out that there are a few interesting problems in electronic structure theory that can be formulated as quadratic programming problems.  For example, the energy of a Slater determinant is: 

    \[E = \sum_{i}^{\rm occ} h_{ii} + \frac{1}{2} \sum_{ij}^{\rm occ} (J_{ij} - K_{ij}),\]

where h_{ii} is the diagonal matrix element of the one-body component of the Hamiltonian, while J_{ij} and K_{ij} are Coulomb and exchange integrals, respectively.  All the sums run over the occupied orbitals of the Slater determinant.

If we introduce the occupation vector \mathbf{n}, with elements n_i = 0,1, then the energy of a Slater determinant may be written as a quadratic function: 

    \[E(\mathbf{n}) = \mathbf{h}^T \mathbf{n} + \frac{1}{2} \mathbf{n}^{T} \mathbf{V} \mathbf{n},\]

 with the matrix \mathbf{V} is defined as V_{ij} = J_{ij}-K_{ij}.  Now let’s ask the question: given a set of molecular orbitals \phi_p, what is the occupation vector that minimizes the energy of a Slater determinant with a given number of alpha and beta electrons (N_\alpha, N_\beta?  This is a binary quadratic programming problem, because the set of conditions given by the general quadratic programming problem are augmented with the requirement that n_i = 0 \text{ or } 1.  Binary quadratic problems are NP-hard, but in the case of the electronic structure counterpart, a good dose of heuristics (physics) can be used to find a solution.

For a wave function whose two- and higher-body cumulants are zero, in the natural orbital basis the energy expression is identical to the  one for a single Slater determinant, with the difference that the natural occupation numbers n_i must satisfy 0 \leq n_i \leq 1.  Thus, finding the optimal uncorrelated state is equivalent to a standard quadratic programming problem.  Interestingly, the computational complexity of this problem appears to depend on the properties of the matrix \mathbf{V} (\mathbf{Q}).  If \mathbf{V} is positive definite this problem can be solved in polynomial time, otherwise it is NP-hard (according to the wikipedia article on quadratic programming).  I do not know whether the \mathbf{V} that arises in electronic structure problems is always positive definite, but I suspect it is.  It would be interesting to check this property numerically.  In addition, if the orbitals are variationally optimal, then n_i will either be 0 or 1, and the uncorrelated state will be a Slater determinant.

 June 23, 2013  Uncategorized No Responses »
May 102013

I just got a new macbook pro and I am reinstalling a lot of libraries and scientific software that I use in my work.

Mac settings

In the Terminal program I like to use the Pro setting and prefer to use the font Menlo, which I find more readable than the default Monaco.


I use Xcode and Qt Creator as programming environments. Qt Creator is part of the Qt SDK and is a very fast editor for C++ code.

I cannot start programming without the boost library and a fresh copy of psi4.

Install Homebrew from the Terminal shell by calling:
bash [if you are using the tcsh shell] ruby -e "$(curl -fsSL"

Then, install autoconf
brew install autoconf


Since Mountain Lion does not ship with X11 support I installed XQuartz.

sudo ln -sf /Applications/Utilities/ /Applications/Utilities/

I installed gnuplot using brew

brew install gnuplot


I downloaded boost 1.53

In  boost/config/stdlib/libcpp.hpp
#if _LIBCPP_VERSION < 1002
Then I ran
./ –with-libraries=filesystem,python,regex,serialization,system,thread –with-python=/usr/bin/python –with-toolset=clang
./b2 install toolset=clang cxxflags=”-stdlib=libc++” linkflags=”-stdlib=libc++” –prefix=/Users/francesco/Source/boost_1_53_0-bin-c++11
 May 10, 2013  Uncategorized No Responses »