DFTK features
The following lists the functionality of DFTK achieved in less than 10 000 lines of code. Our code has a performance comparable to standard DFT codes and runs out of the box on Linux, windows and macOS, see Installation.
Standard methods and models
- DFT models (LDA, GGA, meta-GGA): Any functional from the libxc library
- Norm-conserving pseudopotentials: Goedecker-type (GTH) or numerical (in UPF pseudopotential format), see Pseudopotentials.
- Black-box self-consistent field approaches, such as LDOS mixing (autodetects metal versus insulator) or adaptive damping.
- Direct minimisation methods, see Comparison of DFT solvers.
- Various smearing methods
- Collinear spin, see Collinear spin and magnetic systems.
Parallelisation
- MPI-based distributed parallelism (distribution over $k$-points)
- Using DFTK on GPUs: Nvidia (mostly supported) and AMD GPUs (preliminary support)
- Multi-level threading ($k$-points eigenvectors, FFTs, linear algebra)
Ground-state properties and post-processing
- Total energy, forces, stresses
- Density of states (DOS), local density of states (LDOS)
- Band structures
- Easy access to all intermediate quantities (e.g. density, Bloch waves)
Response and response properties
- Density-functional perturbation theory (DFPT)
- Integration of DFPT with algorithmic differentiation, e.g. Polarizability using automatic differentiation
- Phonon computations (preliminary implementation)
Unique features
- Support for arbitrary floating point types, including
Float32
(single precision) orDouble64
(from DoubleFloats.jl). - Forward-mode algorithmic differentiation (see Polarizability using automatic differentiation)
- Flexibility to build your own Kohn-Sham model: Anything from analytic potentials, linear Cohen-Bergstresser model, the Gross-Pitaevskii equation, Anyonic models, etc.
- Analytic potentials (see Tutorial on periodic problems)
- 1D / 2D / 3D systems (see Tutorial on periodic problems)
Third-party integrations
- Many standard Input and output formats.
- AtomsBase integration and via this ecosystem an integration with the Atomistic simulation environment.
- Wannierization using Wannier.jl or Wannier90
Missing a feature ?
Look for an open issue or create a new one. Want to contribute? See our contributing notes.