Introduction
Many years ago, Richard
Bader from McMaster University, developed an intuitive way of dividing molecules
into atoms. His definition of an atom is based purely on the electronic charge density.
Bader uses what are called zero flux surfaces to divide atoms. A zero flux surface
is a 2-D surface on which the charge density is a minimum perpendicular to the
surface. Typically in molecular systems, the charge density reaches a minimum
between atoms and this is a natural place to separate atoms from each other.
Besides being an intuitive scheme for visualizing atoms in molecules, Bader's
definition is often useful for charge analysis. For example, the charge enclosed
within the Bader volume is a good approximation to the total electronic charge
of an atom. The charge distribution can be used to determine multipole
moments of interacting atoms or molecules. Bader's analysis has also been used
to define the hardness of atoms, which can be used to quantify the cost of
removing charge from an atom.
Program Overview
We have developed a fast algorithm for doing Bader's analysis on a charge
density grid. The program (see below) can read in charge densities in the
VASP CHGCAR format, or the
Gaussian CUBE format. The program
outputs the total charge associated with each atom, and the zero flux
surfaces defining the Bader volumes.
NEW: Information about generating total charge density grids with vasp
(including core charge) can be found here.
Download
Select the appropriate platform to download a binary of the Bader analysis
program:
The F90 source code is also available:
Version history
Running the Program
The program can be run with the command
bader chargefile
It will automatically determine if the chargefile is a VASP CHGCAR file or a
Gaussian CUBE file. The only required input argument is the name of the
charge density file.
Command line arguments and output files
The following options can be used when running the Bader analysis program.
bader [ -c bader | voronoi ]
[ -n bader | voronoi ]
[ -b neargrid | ongrid ]
[ -r refine_edge_iterations ]
[ -ref reference_charge ]
[ -p all_atom | all_bader ]
[ -p sel_atom | sel_bader ] [volume list]
[ -p atom_index | bader_index ]
[ -i cube | chgcar ]
[ -h ] [ -v ]
chargefile
To get a description of the options, run 'bader -h'.
Output files
The following output files are generated: ACF.dat, BCF.dat, AtomVolumes.dat.
ACF.dat contains the coordinates of each atom, the charge associated
with it according to Bader partitioning, percentage of the whole
according to Bader partitioning and the minimum distance to the surface. This
distance should be compared to maximum cut-off radius for the core region if pseudo
potentials have been used.
BCF.dat contains the coordinates of each Bader maxima, the charge within
that volume, the nearest atom and the distance to that atom.
AtomVolumes.dat contains the number of each volume that has been
assigned to each atom. These numbers correspond to the number of the BvAtxxxx.dat
files.
The Bader volumes can be written using the print options.
bader [ -p all_atom | all_bader ] chargefile
bader [ -p sel_atom | sel_bader ] [volume list] chargefile
bader [ -p atom_index | bader_index ] chargefile
-p none The default is to write no charge density files.
-p all_atom Combine all volumes associated with an atom and write to file.
This is done for all
atoms and written to files named BvAtxxxx.dat. The volumes
associated with atoms are those for which the maximum in charge density within the
volume is closest to the atom.
-p all_bader Write all Bader volumes (containing charge above threshold of 0.0001)
to a file. The charge distribution in each volume is written to a separate file,
named Bvolxxxx.dat. It will either be of a CHGCAR format or a CUBE file format,
depending on the format of the initial charge density file. These files can be
quite large, so this option should be used with caution.
-p sel_atom Write the selected atomic volumes, read from the subsequent list of volumes.
-p sel_bader Write the selected Bader volumes, read from the subsequent list of volumes.
-p atom_index Write the atomic volume index to a charge density file.
-p bader_index Write the Bader volume index to a charge density file.
Visualization
The Bader volumes can be written and visualized with the
VASP Data Viewer,
VMD, or a cube
file viewer (such as GaussView) for Gaussian cube files.
Examples
- NaCl crystal (vasp chgcar)
- C2H4 molecule, orientation 1 (vasp chgcar)
- C2H4 molecule, orientation 2 (vasp chgcar)
- H2O molecule (gaussian cube)
Discussion Forum
We have a discussion forum to address issues related to the code and running the program.
References
-
G. Henkelman, A. Arnaldsson, and H. Jónsson,
A fast and robust algorithm for Bader decomposition of charge density,
Comput. Mater. Sci. 36 254-360 (2006).
-
E. Sanville, S. D. Kenny, R. Smith, and G. Henkelman
An improved grid-based algorithm for Bader charge allocation,
J. Comp. Chem. 28 899-908 (2007).
-
W. Tang, E. Sanville, and G. Henkelman
A grid-based Bader analysis algorithm without lattice bias,
J. Phys.: Condens. Matter (in press, 2008).
This program was written by
Andri Arnaldsson,
Wenjie Tang, and
Graeme Henkelman.
Improvements to the original algorithm were developed by Ed Sanville (Loughborough University, UK).
With contributions from: Johannes Voss (DTU)
The code is under development, so please send us any comments or suggestions.
|