Calculating charge transfer using the Bader analysis method in VASP

in bader •  2 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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!