There are a number of auxiliary codes performing postprocessing tasks such as plotting, averaging, and so on, on the various quantities calculated by pw.x. Such quantities are saved by pw.x into the output data file(s). Postprocessing codes are in the PP/ directory.
The main postprocessing code pp.x reads data file(s), extracts or calculates the selected quantity, writes it into a format that is suitable for plotting.
Quantities that can be read or calculated are:
charge density spin polarization various potentials local density of states at $E_F$ local density of electronic entropy STM images selected squared wavefunction ELF (electron localization function) planar averages integrated local density of statesVarious types of plotting (along a line, on a plane, three-dimensional, polar) and output formats (including the popular cube format) can be specified. The output files can be directly read by the free plotting system Gnuplot (1D or 2D plots), or by code plotrho.x that comes with PWscf (2D plots), or by advanced plotting software XCrySDen and gOpenMol (3D plots).
See file INPUT_PP.* for a detailed description of the input for code pp.x. See example05/ in the examples/ directory for a charge density plot.
The code bands.x reads data file(s), extracts eigenvalues, regroups them into bands (the algorithm used to order bands and to resolve crossings may not work in all circumstances, though). The output is written to a file in a simple format that can be directly read by plotting program plotband.x. Unpredictable plots may results if k-points are not in sequence along lines. See example05/ in the examples/ directory for a simple band plot.
The code bands.x performs as well a symmetry analysis of the band structure: see example01/.
The calculation of Fermi surface can be performed using kvecs_FS.x and bands_FS.x. The resulting file in .xsf format can be read and plotted using xcrysden. See example08/ for an example of Fermi surface visualization (Ni, including the spin-polarized case).
The code projwfc.x calculates projections of wavefunctions over atomic orbitals. The atomic wavefunctions are those contained in the pseudopotential file(s). The Löwdin population analysis (similar to Mulliken analysis) is presently implemented. The projected DOS (or PDOS: the DOS projected onto atomic orbitals) can also be calculated and written to file(s). More details on the input data are found in file INPUT_PROJWFC.*. The auxiliary code sumpdos.x (courtesy of Andrea Ferretti) can be used to sum selected PDOS, by specifiying the names of files containing the desired PDOS. Type sumpdos.x -h or look into the source code for more details. The total electronic DOS is instead calculated by code PP/dos.x. See example08/ in the examples/ directory for total and projected electronic DOS calculations.