338 Database entries


Ratings:    3  votes
Please vote:   

OS: Linux, ...

License: Freeware, GPL

GPAW is a density-functional theory (DFT) Python code based on the projector-augmented wave (PAW) method. It uses real-space uniform grids and multigrid methods or atom-centered basis-functions.


Using the projector-augmented wave (PAW) method allows us to get rid of the core electrons and work with soft pseudo valence wave functions. The pseudo wave functions don't need to be normalized - this is important for the efficiency of calculations involving 2. row elements (such as oxygen) and transition metals. A further advantage of the PAW method is that it is an all-electron method (frozen core approximation) and there is a one to one transformation between the pseudo and all-electron quantities.


Pseudo wave functions, pseudo electron densities and potentials are represented on uniform real-space orthorhombic grids. Two kinds of grids are involved in the calculations: A coarse grid used for the wave functions and a fine grid (2^3=8 times higher grid point density) used for densities and potentials. The pseudo electron density is first calculated on the coarse grid from the wave functions, and then interpolated to the fine grid, where compensation charges are added for achieving normalization. The effective potential is evaluated on the fine grid (solve the Poisson equation and calculate the exchange-correlation potential) and then restricted to the coarse grid where it needs to act on the wave functions (also on the coarse grid).

Multi-grid techniques

The Poisson equation is solved using a standard multi-grid solver. Solving the Kohn-Sham equation is done via the "residual minimization method - direct inversion in iterative subspace" (RMM-DIIS) method. A good starting guess for the wave functions is obtained by diagonalizing a Hamiltonian for the subspace of atomic orbitals. We use the multi-grid preconditioner described by Briggs et al. for the residuals, and standard Pulay mixing is used to update the density.

Compensation charges

Compensation charges are expanded to give correct multipole moments up to angular momentum number l=2.

Boundary conditions

In each of the three directions, the boundary conditions can be either periodic or open.

Mask function technique

Due to the discreticed nature of space in finite difference methods, the energy of an atom will depend on its position relative to the grid points. The problem comes from the calculation of the integral of a wave function times an atom centered localized function (radial functions times a spherical harmonic). To reduce this dependence, we use the technique of , where the radial functions (projector functions) are smoothened as follows:

Divide function by a mask function that goes smoothly to zero at approximately twice the cutoff radius.
Fourier transform.
Cut off short wavelength components.
Inverse Fourier transform.
Multiply by mask function.

Exchange-correlation functionals

All the functionals from the libxc library can be used. Calculating the XC-energy and potential for the extended pseudo density is simple. For GGA functionals, a nearest neighbor finite difference stencil is used for the gradient operator. In the PAW method, there is a correction to the XC-energy inside the augmentation spheres. The integration is done on a non-linear radial grid - very dense close to the nuclei and less dense away from the nuclei.


Parallelization is done by distributing k-points, spins, and bands over all processors and on top of that domain-decomposition is used.

ASE interface

The code has been designed to work together with the atomic simulation environment (ASE). ASE provides:

Structure optimization.
Molecular dynamics.
Nudged elastic band calculations.
Maximally localized Wannier functions.
Scanning tunneling microscopy images.
Transport calculations