DFTK features
The following lists the functionality of DFTK achieved in about 10k 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. DFTK agrees very well with standard codes, see the recent verification dataset by Bosoni and others on unary compounds and oxides across the periodic table.
Standard methods and models
- LDA, GGA, meta-GGA DFT functionals; any functional from the libxc library is supported.
- Hubbard correction (DFT+U).
- Exact exchange and Hybrid DFT (preliminary implementation)
- Norm-conserving pseudopotentials: Goedecker-type (GTH) or numerical (in UPF or PSP8 pseudopotential format), see Pseudopotentials.
- Collinear spin, see Collinear spin and magnetic systems.
- 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, see Temperature and metallic systems and Energy cutoff smearing.
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)
- See also: Using DFTK on compute clusters.
Ground-state properties and post-processing
- Total energy, forces, stresses
- Density of states (DOS), local density of states (LDOS), projected density of states (PDOS)
- Band structures, see Tutorial
- Geometry optimization
- 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 (AD-DFPT), e.g. Elastic constants, 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 Elastic constants)
- 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 (ASE).
- 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.