TABLE OF CONTENTS
INTRODUCTION
&INPUTPP
prefix | outdir | filplot | plot_num | spin_component | spin_component | sample_bias | stm_wfc_matching | z | dz | kpoint | kband | lsign | spin_component | emin | emax | spin_component | spin_component
&PLOT
nfile | filepp | weight | iflag | output_format | fileout | e1 | x0 | nx | e1 | e2 | x0 | nx | ny | e1 | e2 | e3 | x0 | nx | ny | nz | radius | nx | ny
INTRODUCTION
Purpose of pp.x: data analysis and plotting.
The code performs two steps:
(1) reads the output file produced by pw.x, extract and calculate
the desired quantity (rho, V, ...)
(2) writes the desired quantity to file in a suitable format for
various types of plotting and various plotting programs
The input data of this program are read from standard input
or from a file and have the following format:
NAMELIST &INPUTPP
containing the variables for step (1), followed by
NAMELIST &PLOT
containing the variables for step (2)
The two steps can be performed independently. In order to perform
only step (2), leave namelist &inputpp blank. In order to perform
only step (1), do not specify namelist &plot
Intermediate results from step 1 can be saved to disk (see
variable "filplot" in &inputpp) and later read in step 2.
Since the file with intermediate results is formatted, it
can be safely transferred to a different machine. This
also allows plotting of a linear combination (for instance,
charge differences) by saving two intermediate files and
combining them (see variables "weight" and "filepp" in &plot)
Namelist: INPUTPP |
prefix |
CHARATER |
prefix of files saved by program pw.x
|
outdir |
CHARACTER |
temporary directory where pw.x files resides
|
filplot |
CHARACTER |
file "filplot" contains the quantity selected by plot_num
(can be saved for further processing)
|
plot_num |
INTEGER |
selects what to save in filplot:
0 = charge
1 = total potential V_bare+V_H + V_xc
2 = local ionic potential
3 = local density of states at e_fermi
4 = local density of electronic entropy
5 = STM images
6 = spin polarization (rho(up)-rho(down))
7 = |psi|^2
8 = electron localization function (ELF)
9 = planar average of all |psi|^2
10 = integrated local density of states (ILDOS)
from emin to emax (emin, emax in eV)
if emax is not specified, emax=E_fermi
11 = the V_bare + V_H potential
12 = the electric field potential
13 = the noncollinear magnetization.
|
IF plot_num=0 :
Options for total charge (plot_num=0):
spin_component |
INTEGER |
Default: |
0
|
0=total charge (default value),
1=spin up charge,
2=spin down charge.
|
|
ELSEIF plot_num=1 :
Options for total potential (plot_num=1):
spin_component |
INTEGER |
Default: |
0
|
0=spin averaged potential (default value),
1=spin up potential,
2=spin down potential.
|
|
ELSEIF plot_num=5 :
Options for STM images (plot_num=5):
sample_bias |
REAL |
the bias of the sample (Ry) in stm images
|
stm_wfc_matching |
LOGICAL |
if .true. match the wavefunctions to an exponentially
vanishing function
if .true. specify also (in celldm(1) units): z and dz variables
|
IF stm_wfc_matching = .true. :
z |
REAL |
height of matching
|
dz |
REAL |
distance of next stm image calculation
|
|
|
ELSEIF plot_num=7 :
Options for |psi|^2 (plot_num=7):
kpoint |
INTEGER |
Unpolarized and noncollinear case: k-point to be plotted
LSDA: k-point and spin polarization to be plotted
(spin-up and spin-down correspond to different k-points!)
|
kband |
INTEGER |
band to be plotted
|
lsign |
LOGICAL |
if true and k point is Gamma, save |psi|^2 sign(psi)
|
spin_component |
INTEGER |
Noncollinear case only:
plot the contribution of the given state to the charge
or to the magnetization along the direction indicated
by spin_component:
0 = charge (default),
1 = x,
2 = y,
3 = z.
Ignored in unpolarized or LSDA case
|
|
ELSEIF plot_num=10 :
Options for ILDOS (plot_num=10):
emin |
REAL |
lower energy boundary (in eV)
|
emax |
REAL |
upper energy boundary (in eV), i.e. compute
ILDOS from emin to emax
|
spin_component |
INTEGER |
for LSDA case only: plot the contribution to ILDOS of
0 = spin-up + spin-down (default)
1 = spin-up only
2 = spin-down only
|
|
ELSEIF plot_num=13 :
Options for noncollinear magnetization (plot_num=13):
spin_component |
INTEGER |
Default: |
0
|
0=absolute value (default value)
1=x component of the magnetization
2=y component of the magnetization
3=z component of the magnetization
|
|
|
Unfinished and untested option:
plot_num = 14, 15, 16 polarisation along x, y, z resp.
epsilon = macroscopic dielectric constant
|
|
Namelist: PLOT |
nfile |
INTEGER |
Default: |
1
|
Status: |
OPTIONAL
|
the number of data files
|
filepp(i), i=1,nfile |
CHARACTER |
Default: |
filepp(1)=filplot
|
nfile = 1 : file containing the quantity to be plotted
nfile > 1 : see "weight"
|
weight(i), i=1,nfile |
REAL |
Default: |
weight(1)=1.0
|
weighing factors: assuming that rho(i) is the quantity
read from filepp(i), the quantity that will be plotted is:
weight(1)*rho(1) + weight(2)*rho(2) + weight(3)*rho(3)+...
|
BEWARE: atomic coordinates are read from the first file;
if their number is different for different files,
the first file must have the largest number of atoms
|
iflag |
INTEGER |
0 1D plot of the spherical average
1 1D plot
2 2D plot
3 3D plot
4 2D polar plot on a sphere
|
output_format |
INTEGER |
(ignored on 1D plot)
0 format suitable for gnuplot (1D)
1 format suitable for contour.x (2D)
2 format suitable for plotrho (2D)
3 format suitable for XCRYSDEN (1D, 2D, 3D)
4 format suitable for gOpenMol (3D)
(formatted: convert to unformatted *.plt)
5 format suitable for XCRYSDEN (3D)
6 format as gaussian cube file (3D)
(can be read by many programs)
|
fileout |
CHARACTER |
Default: |
standard output
|
name of the file to which the plot is written
|
IF iflag = 0 or 1 :
the following variables are REQUIRED:
e1(i), i=1,3 |
REAL |
3D vector which determines the plotting line
|
x0(i), i=1,3 |
REAL |
3D vector, origin of the line
|
!!! x0 and e1 are in alat units !!!
nx |
INTEGER |
number of points in the line:
rho(i) = rho( x0 + e1 * (i-1)/(nx-1) ), i=1, nx
|
|
ELSEIF iflag = 2 :
the following variables are REQUIRED:
e1(i),
e2(i),
i=1,3
|
REAL |
3D vectors which determine the plotting plane
(must be orthogonal)
|
x0(i), i=1,3 |
REAL |
3D vector, origin of the plane
|
!!! x0, e1, e2 are in alat units !!!
nx, ny
|
INTEGER |
Number of points in the plane:
rho(i,j) = rho( x0 + e1 * (i-1)/(nx-1)
+ e2 * (j-1)/(ny-1) ), i=1,nx ; j=1,ny
|
|
ELSEIF iflag = 3 :
the following variables are OPTIONAL:
x0(i), i=1,3 |
REAL |
3D vector, origin of the parallelepiped
|
!!! x0, e1, e2, e3 are in alat units !!!
nx, ny, nz
|
INTEGER |
Number of points in the parallelepiped:
rho(i,j,k) = rho( x0 + e1 * (i-1)/nx
+ e2 * (j-1)/ny
+ e3 * (k-1)/nz ),
i = 1, nx ; j = 1, ny ; k = 1, nz
- If output_format = 3 (XCRYSDEN), the above variables
are used to determine the grid to plot.
- If output_format = 5 (XCRYSDEN), the above variables
are ignored, the entire FFT grid is written in the
XCRYSDEN format - works for any crystal axis (VERY FAST)
- If e1, e2, e3, x0 are present, e1 e2 e3 are parallel
to xyz and parallel to crystal axis, a subset of the
FFT grid that approximately covers the parallelepiped
defined by e1, e2, e3, x0, is written (presently only
if output_format = 4, i.e. gopenmol format) - works only
if the crystal axis are parallel to xyz
- Otherwise, the required 3D grid is generated from the
Fourier components (may be VERY slow)
|
|
ELSEIF iflag = 4 :
the following variables are REQUIRED:
radius |
REAL |
Radius of the sphere (alat units), centered at (0,0,0)
|
nx, ny
|
INTEGER |
Number of points in the polar plane:
phi(i) = 2 pi * (i - 1)/(nx-1), i=1, nx
theta(j) = pi * (j - 1)/(ny-1), j=1, ny
|
|
|
|
|
|