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
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
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