The aim of the package is to become a platform for methodological developments in density-functional theory (DFT), one of the most widespread methods for simulating electronic structures and properties of materials. This field is highly interdisciplinary in nature, where advances are often the result from devising
chemically and physically sound models, using mathematical insight for suggesting and stable algorithms
and then scaling the code to the high-performance regime. Therefore we believe that compared to the traditional approach of wrapping low-level FORTRAN and C++ cores in Python, Julia is better-suited as a language to support our aims.
In its current stage DFTK focuses on simulating electronic properties of extended systems such as crystals or surfaces. We support already a sizable set of standard models and approaches (plane-wave basis sets, LDA/GGA functionals, GTH pseudopotentials, self-consistent field methods, direct minimisation, various forms of mixing) in only about 5k lines. This has only been possible by being able to fix and match the plenty of good packages in the Julia ecosystem (so thanks to all of you!).
Interfaces to established Python frameworks (ASE, pymatgen, abipy…) are available, such that DFTK also integrates to the world beyond Julia. See our documentation for a full list of features or a tutorial and examples to get started.
As the code is intended as a platform for multidisciplinary collaboration, any questions, suggestions or additions from the community are welcome!