The design of molsturm

Yesterday I was invited to the give a talk at the group seminar of Prof. Thomas Kühne at the University of Paderborn. I was really happy about this invitation, since this gave me a great opportunity to talk about the recent direction my PhD has taken.

Motivated from the problems we had with finite-element based Hartree-Fock we wanted to seek a way to design a modular quantum chemistry program package, which enables quick experimentation on all levels. From the choice of the SCF algorithm, the integral library as well as the linear algebra backend: Everything should be ideally configurable at runtime. For this I once again joined forces with James Avery from the University of Copenhagen.

We started by developing linalgwrap: A lightweight linear algebra wrapper library, which easily allows switching between different linear algebra backends. For this we employ so-called lazy matrices, i.e. data structures, which offer a matrix-like interface, but where the matrix elements may no longer need to be stored in memory. This has a couple of consequences: On the one hand it might no longer be possible to obtain elements of a matrix very cheaply, but on the other hand this simplifies writing algorithms based on matrix-vector applications very much. It turns out that for some cases --- including finite elements --- these type of algorithms can reduce the scaling in storage and time by an order of magnitude.

Currently we will not use linalgwrap together with finite elements, however, but instead we will take a look at Coulomb-Sturmian basis functions, which James and his father John Avery have developed in the recent years. These share a lot of properties with finite elements, for example very sparse matrix structures, but unlike finite elements they only require small basis sizes (comparable to Gaussian basis sets) for reasonable results and hence are easier to deal with.

The presentation I gave in Paderborn both talks about the lessons we learned from trying our luck with finite-element based Hartree-Fock as well as the design of our new modular program package molsturm.

Link
Design of molsturm (Slides)