Bader Charges - Trebonius91/utils4VASP GitHub Wiki

In VASP, partial charges cannot be obtained directly from a calculation, since the atomic core electrons are parametrized by the PAW potentials, such that two classes of electrons / charge carriers exist within the systems.

Instead, a Bader charge analysis need to be done, with the program bader provided by the Henkelman group (link). Download the program (Fortran source code) and the script chgsum.pl used for preprocessing from the side.

Then, perform a usual single point calculation, with the same settings as for a DOS calculation. The NEDOS and EMIN as well as EMAX keywords can of course be ignored. To the INCAR file, simply add the command:

  • LCHARG = .TRUE.
  • LAECHG = .TRUE.

With this, the reconstructed all-electron charge density (containing core and valence electrons) is written to files AECCAR0 and AECCAR2. and the usual charge distribution considering the PAW parts to file CHGCAR.

After finishing the VASP calculation, use the script chgsum.pl:

chgsum.pl AECCAR0 AECCAR2

From this, a file CHGCAR_sum results. Finally, run the bader program:

bader CHGCAR -ref CHGCAR_sum

After finishing, the program has written to files:

  • ACF.dat: Atom coordinates and Bader charges
  • BCF.dat: Coordinates of Bader maxima

The desired partial charges can be obtained from the ACF.dat file. In it, all atoms of the system are listed. Besides the indices and the Cartesian coordinates, the column CHARGE contains the actual Bader electron counts. They are, however, noted with respect to the total number of valence electron for the respective element given in the POTCAR file. The electron numbers in the POTCAR must therefore be subtracted from the values in the ACF.dat file. Obtain the electron numbers in the POTCAR by:

grep ZVAL POTCAR

If, e.g., the CHARGE value of an atom is 3.5 and its ZVAL is 3.0, its partial charge is -3.5 since 0.5 more electrons are located in the spacial area allocated to this atom than in the isolated atom case.

In practice, we recommend to use our eval_bader program for the evaluation of arbitrary Bader charge calculations. No tedious manual electron count comparisons are then needed anymore.