Bader Charge Analysis

This tutorial explains how to perform Bader charge analysis in VQkit using VASP-derived charge-density files.

Important

VQkit does not include the external Bader executable.

The Bader program must be installed separately and available in your system PATH before VQkit can run the analysis.

VQkit currently supports Bader analysis for VASP-derived charge-density data.

Typical required files

For a normal Bader workflow, the working directory should contain:

CHGCAR
POTCAR

For a reference-density calculation, also include:

AECCAR0
AECCAR2

A complete directory may therefore look like:

CHGCAR
AECCAR0
AECCAR2
POTCAR

If Bader has already been run externally, the directory may also contain:

ACF.dat

Open the Bader menu

From the VQkit main menu, open:

[2] Post-processing

Then choose:

[4] Charge, spin and bonding

and select:

[2] Bader charge

The Bader submenu is:

[1] Check Bader executable and required files
[2] Prepare AECCAR0 + AECCAR2 reference density
[3] Run Bader analysis
[4] Analyze an existing ACF.dat
[0] Back

You can also use the smart keyword:

bader

1. Check the executable and files

Before running the analysis, select:

1

VQkit checks whether the external bader program can be found.

It also checks for:

CHGCAR
AECCAR0
AECCAR2
CHGCAR_sum
POTCAR
ACF.dat

Example output

A successful setup may look similar to:

External Bader executable : /usr/local/bin/bader
CHGCAR      : found
AECCAR0     : found
AECCAR2     : found
CHGCAR_sum  : not found
POTCAR      : found
ACF.dat     : not found

If the executable shows:

NOT FOUND

install the external Bader program or add its location to PATH.

2. Prepare the reference density

For the recommended reference-density workflow, choose:

2

VQkit reads:

AECCAR0
AECCAR2

and creates:

CHGCAR_sum

The reference density is calculated as:

\[\rho_{\mathrm{ref}} = \rho_{\mathrm{AECCAR0}} + \rho_{\mathrm{AECCAR2}}\]

Before summing, VQkit checks that:

  • the FFT grids are identical;

  • the atomic structures contain the same atom counts.

If either condition is not satisfied, VQkit stops and reports an error.

Why use CHGCAR_sum?

When AECCAR0 and AECCAR2 are available, the summed reference density provides a better all-electron-like reference for the Bader partitioning.

The external Bader command then uses:

-ref CHGCAR_sum

3. Run Bader analysis

Choose:

3

VQkit first searches for the Bader executable.

It then checks for:

CHGCAR

Reference-density behavior

VQkit automatically chooses the reference density.

Priority:

  1. If both AECCAR0 and AECCAR2 exist, VQkit creates CHGCAR_sum automatically.

  2. If CHGCAR_sum already exists, VQkit can use it.

  3. If no reference density is available, Bader analysis proceeds without the reference-density option.

The effective external command is similar to:

bader CHGCAR -ref CHGCAR_sum

when a reference density is available.

The Bader executable produces:

ACF.dat

VQkit then parses ACF.dat automatically.

4. Analyze an existing ACF.dat

If Bader has already been run outside VQkit, select:

4

VQkit reads:

ACF.dat

and exports the parsed charge information without rerunning the external Bader program.

This is useful when:

  • Bader was run manually;

  • Bader was run on an HPC system;

  • you only want VQkit to process and organize the results.

Output file

VQkit writes:

VQkit_BADER_CHARGES.csv

The CSV contains columns such as:

index
element
x
y
z
bader_electrons
zval
net_charge
min_dist
atomic_volume

Meaning of the columns

index

The 1-based atom index.

element

The chemical symbol obtained from the structure information in CHGCAR when available.

x, y, z

The atomic coordinates reported by Bader in ACF.dat.

bader_electrons

The number of electrons assigned to the atom by Bader partitioning.

zval

The VASP valence-electron count read from POTCAR.

VQkit reads the ZVAL value from each POTCAR dataset.

net_charge

When both POTCAR and structure information are available, VQkit calculates:

\[q = Z_{\mathrm{VAL}} - N_{\mathrm{Bader}}\]

where:

  • \(Z_{\mathrm{VAL}}\) is the VASP ZVAL value;

  • \(N_{\mathrm{Bader}}\) is the Bader electron count.

VQkit uses the convention:

positive net charge = electron depletion
negative net charge = electron accumulation

Example interpretation

Suppose a Li atom has:

ZVAL = 1.0000
Bader electrons = 0.1200

Then:

\[q = 1.0000 - 0.1200 = +0.8800 e\]

This indicates strong electron depletion from Li.

Suppose an O atom has:

ZVAL = 6.0000
Bader electrons = 6.6500

Then:

\[q = 6.0000 - 6.6500 = -0.6500 e\]

This indicates electron accumulation on O.

Complete example workflow

Assume your VASP calculation directory contains:

CHGCAR
AECCAR0
AECCAR2
POTCAR

Step 1 — Open the Bader menu

Start VQkit in the calculation directory.

At a VQkit prompt type:

bader

Step 2 — Check the setup

Choose:

1

Confirm that:

  • bader is detected;

  • CHGCAR is present;

  • AECCAR0 is present;

  • AECCAR2 is present;

  • POTCAR is present.

Step 3 — Prepare the reference density

Choose:

2

VQkit creates:

CHGCAR_sum

Step 4 — Run Bader

Choose:

3

VQkit runs the external Bader executable.

After completion you should have:

ACF.dat
VQkit_BADER_CHARGES.csv

Step 5 — Inspect the result

Open:

VQkit_BADER_CHARGES.csv

For each atom, inspect:

  • Bader electron population;

  • ZVAL;

  • calculated net charge;

  • atomic volume.

Step 6 — Use the charge-sign convention correctly

Remember:

+q  = electron depletion
-q  = electron accumulation

Existing ACF.dat example

Assume you already ran:

bader CHGCAR -ref CHGCAR_sum

outside VQkit.

Your directory contains:

ACF.dat
CHGCAR
POTCAR

Open the VQkit Bader menu and choose:

4

VQkit reads the existing ACF.dat and creates:

VQkit_BADER_CHARGES.csv

No new Bader calculation is run.

Common problems

Bader executable not found

Problem:

Bader executable not found

Check:

which bader

on Linux/HPC.

On Windows, check that the executable directory is included in PATH.

CHGCAR not found

The run option requires:

CHGCAR

Make sure VQkit is operating in the correct working directory.

AECCAR grid mismatch

If AECCAR0 and AECCAR2 were generated from different calculations or different FFT grids, VQkit refuses to create CHGCAR_sum.

Use AECCAR0 and AECCAR2 generated from the same VASP calculation.

Atom-count mismatch

The structure in the charge-density files must be identical.

If the atom counts differ, VQkit stops before summing the reference density.

POTCAR missing

Bader electron populations can still be parsed without POTCAR.

However, VQkit cannot calculate the net_charge column from ZVAL if POTCAR is unavailable.

Scientific cautions

Bader charge is not a formal oxidation state

The Bader net charge is a charge-partitioning result and should not automatically be interpreted as an integer oxidation state.

Reference density

For VASP Bader analysis, using AECCAR0 + AECCAR2 as the reference density is generally preferable when those files are available.

Grid quality

Charge-partitioning accuracy can depend on the charge-density grid.

For quantitative comparisons, use consistent calculation settings and sufficiently converged FFT grids.

Comparing systems

When comparing Bader charges across several structures, keep the following consistent where possible:

  • pseudopotential family;

  • exchange-correlation functional;

  • plane-wave cutoff;

  • FFT-grid quality;

  • charge-density generation settings;

  • Bader analysis procedure.

The scientific interpretation remains the responsibility of the researcher.