# DFTK features

Standard methods and models:

- Standard DFT models (LDA, GGA, meta-GGA): Any functional from the libxc library
- Norm-conserving pseudopotentials: Goedecker-type (GTH, HGH) or numerical (in UPF pseudopotential format), see Pseudopotentials for details.
- Brillouin zone symmetry for $k$-point sampling using spglib
- Standard smearing functions (including Methfessel-Paxton and Marzari-Vanderbilt cold smearing)
- Collinear spin polarization for magnetic systems
- Self-consistent field approaches including Kerker mixing, LDOS mixing, adaptive damping
- Direct minimization, Newton solver
- Multi-level threading ($k$-points eigenvectors, FFTs, linear algebra)
- MPI-based distributed parallelism (distribution over $k$-points)
- Treat systems of 1000 electrons

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)

Unique features

- Support for arbitrary floating point types, including
`Float32`

(single precision) or`Double64`

(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)

- Support for arbitrary floating point types, including
Third-party integrations:

- Seamless integration with many standard Input and output formats.
- Integration with ASE and AtomsBase for passing atomic structures (see AtomsBase integration).
- Wannierization using Wannier.jl or Wannier90

- Runs out of the box on Linux, macOS and Windows

Missing a feature? Look for an open issue or create a new one. Want to contribute? See our contributing notes.