quantum-espresso/Doc/INPUT_PP

203 lines
8.7 KiB
Plaintext

! Program: pp.x
! Purpose: 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 &inputtpp 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)
!
! DESCRIPTION of the INPUT:
!
!-&inputPP Namelist &inputPP; contains
!
! prefix prefix of files saved by program pw.x
! outdir temporary directory where pw.x files resides
!
! filplot file "filplot" contains the quantity selected by plot_num
! (can be saved for further processing)
!
! plot_num selects what is saved 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 (See below)
! 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 noncolinear magnetization.
!
!
! plot_num=7 in the noncollinear case, plot the contribution of the
! given state to the charge or to the magnetization
! along the direction indicated by spin_component
! (0 = charge, 1 = x, 2 = y, 3 = z ).
!
!
! Options for total charge
!
! spin_component 0=total charge (default value),
! 1=spin up charge,
! 2=spin down charge.
!
! Options for total potential
!
! spin_component 0=spin averaged potential (default value),
! 1=spin up potential,
! 2=spin down potential.
!
! Options for STM images:
!
! sample_bias the bias of the sample (Ryd) in stm images
! stm_wfc_matching if .t. match the wavefunctions to
! an exponentially vanishing function
! if .t. specify also (in celldm(1) units):
! z height of matching
! dz distance of next stm image calculation
!
! Options for |psi|^2:
!
! kpoint which k-point
! kband which band
! lsign if true and k point is Gamma, save |psi|^2 sign(psi)
!
! Options for ILDOS:
!
! emin lower energy boundary (in eV)
! emax upper energy boundary (in eV), i.e. compute
! ILDOS from emin to emax
!
! Options for noncolinear magnetization
!
! spin_component 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
!
!-/ END of namelist &inputpp
!
!-&plot Namelist &plot; contains
!
! nfile the number of data files (OPTIONAL, default: 1)
!
!----FOR i = 1, nfile:
!
! filepp(i) nfile=1: file containing the quantity to be plotted
! nfile>1: see "weight"
! (default: filepp(1)=filplot)
! weight(i) 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)+...
! (OPTIONAL: default weight(1)=1.0)
!
! 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
!
!----END_FOR
!
! iflag 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 (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)
!
!-IF iflag = 0 or 1
! REQUIRED:
! e1 3D vector which determines the plotting line
! x0 3D vector, origin of the line
! nx number of points in the line:
! rho(i) = rho( x0 + e1 * (i-1)/(nx-1) ), i=1, nx
!
!-ELSEIF iflag = 2
! REQUIRED:
! e1, e2 3D vectors which determine the plotting plane
! (must be orthogonal)
! x0 3D vector, origin of the plane
! nx, ny 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
! OPTIONAL:
! e1, e2, e3 3D vectors which determine the plotting parallelepiped
! (if present, must be orthogonal)
! x0 3D vector, origin of the parallelepiped
! nx,ny,nz number of points in the parallelepiped:
! rho(i,j,k) = rho( x0 + e1 * (i-1)/(nx-1)
! + e2 * (j-1)/(ny-1)
! + e3 * (k-1)/(nz-1) ),
! 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
! REQUIRED:
! radius Radius of the sphere (alat units), centered at (0,0,0)
! nx, ny 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
!
! END IF
! !!! x0, e1, e2, e3 are in alat units !!!
!
! fileout name of the file to which the plot is written
! (DEFAULT: standard output)
!
!-/ END of namelist &plot