At the beginning of the month, from 30th June till 5th July, I attended the
9th Molecular Quantum Mechanics Conference
in my old home Heidelberg.
This occasion was a great opportunity to catch up with friends and colleges
both in science and from my old circle in Heidelberg as well.
At the conference I presented a poster entitled
Modern interdisciplinary software development in electronic-structure theory.
which was highly related to my former
talk in Lille
a couple of weeks ago.
In the poster I wanted to to motivate the use of modern languages and
software development techniques and demonstrate its opportunities for
enabling different communities (like mathematicians and chemists)
to work jointly on the same codes.
As examples I discuss three projects of my own.
Out of these, the molsturm
code for basis-function-independent
method development I have described in detail
in our paper last year.
Some words about our mathematically-driven approach
in the development of the
density-functional toolkit (DFTK)
I already gave in
my previous article.
In this article I will thus focus on the third code
presented on the poster, namely adcc,
short for ADC connect.
The adcc project is a project I started a few years ago
during my time at the Dreuw group in Heidelberg.
I continue to work on it as a side project during my time at the CERMICS,
jointly with some of my old group members.
Our main aim is to provide one independent
building block for excited states computations
using the algebraic-diagrammatic construction (ADC).
This means that adcc does not implement any self-consistent field
algorithm itself, much rather it runs on top of any Hartree-Fock code.
In practice as of now four SCF codes have been connected to adcc
via our Python interface, including
pyscf,
Psi4 and
molsturm.
But Python is not only used as a glue language between
SCF and ADC, much rather it allows to orchestrate
the full computational procedure.
See the attached poster
or the introductory chapter
of the adcc documentation for some examples.
A third aspect where Python plays a crucial role in adcc
are the iterative solver algorithms.
For example the Davidson procedure we use for solving the ADC
equations is implemented purely in high-level Python code.
This allows to rapidly investigate new numerical schemes
and approaches in the context of ADC.
We are, however, not loosing too much performance by this choice,
because the time-consuming tensor contractions we require
are still done in a C++
core library and only called from Python.
Inside our core library we in turn use the
libtensor code for
tensor computations.
Overall adcc therefore shows a comparable performance
to the adcman code,
a pure C++
implementation of ADC also developed in Heidelberg
on top of libtensor.
Currently adcc is not yet publicly available,
but we are in the stage of finalising adcc for a first public release
within the Gator framework. A first standalone release of the code
is planned within the upcoming months as well.
The adcc documentation, however,
is already available and gives an idea of adcc in practice.
As usual I attach my poster as a pdf below.