After we released a preliminary snapshot of DFTK last year
our focus in the first half of this year was on using it
for some new science.
Recently, however, we got back into polishing
our code base and our documentation
in order to get DFTK ready for a wider audience.
Today I am proud to announce that DFTK 0.1.0
has been accepted into the Julia Package repository,
such that the package can now be readily installed
within the Julia ecosystem.
Let me take this opportunity to recapitulate on DFTK:
I started the code with Antoine Levitt
about a year ago when I moved to Paris.
What we had in mind was to create a simple platform for methodological developments
in density functional theory (DFT).
Clearly our code should support the interdisciplinary requirements of the field,
where advances are often the result from devising
chemically and physically sound models, using mathematical insight
for suggesting stable algorithms
and then scaling them up to the high-performance regime.
This means that we would need both
(a) the flexibility to mix and match models and numerical approaches
by keeping the code high-level and similar to a scripting language
and (b) access to the usual tricks (vectorisation, GPUs, threading, distributed computing)
to tweak performance down to the metal.
In Julia we found a language
which suits these aims perfectly.
This is illustrated by the fact that after only a good year of
development we already support a sizable number of features
in only about 5k lines of source code.
Right now the focus of DFTK is on DFT ground-state simulations for solids
(LDA/GGA in a plane-wave basis with GTH pseudopotentials)
with more to come.
Special care is taken to have a simple and clean codebase,
well-commented and suitable for teaching or extensions (other models, basis, etc.).
DFT is not hard-coded, and other similar models can be
computed with DFTK (for instance,
the 2D Gross-Pitaevskii equation with a magnetic field).
Nevertheless, the performance is comparable with that of established plane-wave DFT
codes, usually within a factor of 2.
DFTK is fully multithreaded, although not distributed (yet).
We also include interfaces with various codes
(ASE, pymatgen, abipy...) for easy workflows and to integrate to
the world beyond the Julia ecosystem.
See for example the asedftk python package,
which integrates DFTK into the atomistic simulation environment.
The code is of course fully open source
and installation is easy.
Since it is intended as a platform for
multidisciplinary collaboration, we welcome any question, suggestion or addition.
Feel free to get in touch by opening an issue
at any time.