Thursday, October 31, 2013

Charge Density Difference Plots

Quick Description: The CHCAR file is a large matrix of electron density values. The first part of the file described the type of atoms and their locations in a manner similar to that of POSCAR and CONTCAR. This is followed by 3 values which define the dimensions of the following charge density matrix. Aptly named, charge density difference plots require three calculations of charge density (the full system, the substrate, and the adsorbed system) to look at the difference or the effect the adsorbed system's interaction with the substrate places on charge distribution.

The Point: Track charge transfer to get an idea of what is interacting with what in the system and how strongly.

Prerequisites: Finalized geometry optimizations for a full system and system components.

Rerunning the jobs to get the separate systems' CHGCAR files:
  1. Separate the finalized combined system into the systems (substrate and adsorbed...also combined system if you never generated the CHGCAR for that) with coordinates in two different POSCAR files. 
  2. Lock the xyz either by setting "F F F" in the POSCAR or by setting "NSW=0"  in the INCAR. Lock the ionic steps with "IBRION=-1"
  3. Your INCAR should have a setting "LCHARG=.True." to ensure that the CHGCAR files are written. This can be set concurrent with "LWAVE=.True." (which is not true for writing PARCHG).
Notes: Again, we have Mathematica and VESTA options.

VESTA (notes from Dr. Renqin Zhang from Yonsei University and provided by Mark Micklich):
  1. Open the combined system's CHGCAR.
  2. Edit > Edit Data > Volumetric Data...
  3. Import CHGCAR for the adsorbed (CHGCAR_ads) and select subtract from current data.
  4. Repeat step #3 for the substrate (CHGCAR_sub)... click "OK"
  5. You can use the properties menu to modify the isosurface...
    • min/max values - this can really bring out the contour
    • isosurface level - this is the most important part so really play around with values here
    • opacity range - generally leave this alone, but this can be useful to play with if you can't see your model or if the contours are particularly complicated
  6. File > Export Raster Image and select a scale value in the range of 3-5
    • Can do different views
    • Can slice the image: Utilities > 2D data display
      • Slice: a top down view might give you something more akin to a simulated STM image, but hkl (100) and (010) are more interesting in terms of understanding charge distribution
      • work with general and contour tabs to adjust figure - I find that using RGB can be more helpful in bringing out interesting contours but that gray scale is more intuitive
      • try using the "shift slice by mouse wheel" option to get a good idea of how the gradient changes
Mathematica: Don't remember instructions, but see/play with code here.


  1. Thank you, this saved me a lot of time trying to write a Python script to subtract one PARCHG file from another.

  2. hi
    not sure you see this message. I am frantically looking for some discussion on why the atom positions are so drastically changing while i optimize the Hybrid system i.e. say with A.B? I am using the A, the bottom part of the system as perovskite with 6 layers and on top adding a semiconductor material as B.

    May suggest some opinion.

  3. I am very enjoyed for this blog. Its an informative topic. It help me very much to solve some problems. Its opportunity are so fantastic and working style so speedy. Apartments