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.
- DFT models (LDA, GGA, meta-GGA): Any functional from the libxc library
- DFT+U and Hubbard corrections
- 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.
- 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)
- Total energy, forces, stresses
- Density of states (DOS), local density of states (LDOS), projected density of states (PDOS)
- Band structures
- Easy access to all intermediate quantities (e.g. density, Bloch waves)
- Density-functional perturbation theory (DFPT)
- Integration of DFPT with algorithmic differentiation, e.g. Elastic constants, Polarizability using automatic differentiation
- Phonon computations (preliminary implementation)
- 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](@ref custom-potential), linear Cohen-Bergstresser model, the [Gross-Pitaevskii equation](@ref gross-pitaevskii), Anyonic models, etc.
- Analytic potentials (see [Tutorial on periodic problems](@ref periodic-problems))
- 1D / 2D / 3D systems (see [Tutorial on periodic problems](@ref periodic-problems))
- 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
Look for an open issue or create a new one. Want to contribute? See our contributing notes.