Calculating charge transfer using the Bader analysis method in VASP

in #bader6 years ago (edited)

A step-by-step guide to performing charge transfer calculations on VASP, using the Bader analysis method. There can be two methods of extracting the charge transfer; (1) without the consideration of the core charge, i.e. valence charge only, and (2) with the inclusion of core + valence charges. We will focus on method (2) here.

Let's just say we have a slab consisting of graphene above Cu(111):

  1. Get the CHGCAR (as well as other necessary files) from the geometrically optimized SCF run, put into a new folder.
    For simplicity's sake we'll name it Bader_01.

  2. Now, we have CHGCAR, CONTCAR, POSCAR, INCAR, KPOINTS, jobscript files in the Bader_01 folder


  4. Add this tag into your INCAR: LAECHG = .TRUE. (core charge will then be written in AECCAR0)
    Other parameters include: NSW=0, LWAVE = .FALSE., LCHARG = .TRUE.

  5. qsub jobscript

  6. The following files will be generated:
    Only pay attention to AECCAR0 (contains core charge) and AECCAR2 (contains valence charge), I usually delete AECCAR1

  7. The following scripts will be needed: (1) bader, and (2)
    They can be obtained from the Henkelman group web site:

  8. Then combine them using this command: AECCAR0 AECCAR2 > chgsum_output

  9. CHGCAR_sum will be written

AVF.dat, BCF.dat


  1. mkdir core-val_chg_method
  2. cp AECCAR0 AECCAR2 core-val_chg_method
  3. AECCAR0 AECCAR2 --> CHGCAR_sum will be created, where CHGCAR_sum is the sum of AECCAR0 and AECCAR2
  4. bader CHGCAR -ref CHGCAR_sum > bader_output
  5. If you get a relatively large vacuum charge, then you can consider using:
    bader CHGCAR -ref CHGCAR_sum -vac 1E-5 > bader-vac1E-5_output
  6. If you get an error message in the bader-vac1E-5_output file, then refer to the error note [1] below.
  7. Copy & paste ACF.dat into your Excel sheet.

A few notes on possible errors:

  1. If you get this error " ERROR: should be no new maxima in edge refinement"
    --> Then there might be a problem with the CHGCAR_sum figure.

  2. If you are including core charge (LAECHG = .TRUE.) in your calculation, then ACF.dat & BCF.dat should give the same partial charges. For calcs with fragmented volumes, then ACF.dat is better [].

*Credit: the Bader code is written by Graeme Henkelman's group at the University of Texas

Coin Marketplace

STEEM 0.20
TRX 0.06
JST 0.025
BTC 27115.33
ETH 1710.51
USDT 1.00
SBD 2.73