------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: ph.x / PWscf / Quantum Espresso
------------------------------------------------------------------------
Input data format: { } = optional, [ ] = it depends, # = comment
Structure of the input data:
===============================================================================
title_line
&INPUTPH
...
/
[ xq(1) xq(2) xq(3) ] # if ldisp != .true. and qplot != .true.
[ nqs # if qplot == .true.
xq(1,i) xq(2,i) xq(3,1) nq(1)
...
xq(1,nqs) xq(2,nqs) xq(3,nqs) nq(nqs) ]
[ atom(1) atom(2) ... atom(nat_todo) ] # if "nat_todo" was specified
========================================================================
Line of input:
title_line
DESCRIPTION OF ITEMS:
+--------------------------------------------------------------------
Variable: title_line
Type: CHARACTER
Description: Title of the job, i.e., a line that is reprinted on output.
+--------------------------------------------------------------------
===End of line-of-input=================================================
========================================================================
NAMELIST: &INPUTPH
+--------------------------------------------------------------------
Variable: amass(i), i=1,ntyp
Type: REAL
Default: 0.0
Description: Atomic mass [amu] of each atomic type.
If not specified, masses are read from data file.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: outdir
Type: CHARACTER
Default: value of the ESPRESSO_TMPDIR environment variable if set;
current directory ('./') otherwise
Description: Directory containing input, output, and scratch files;
must be the same as specified in the calculation of
the unperturbed system.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: prefix
Type: CHARACTER
Default: 'pwscf'
Description: Prepended to input/output filenames; must be the same
used in the calculation of unperturbed system.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: niter_ph
Type: INTEGER
Default: maxter=100
Description: Maximum number of iterations in a scf step. If you want
more than 100, edit variable "maxter" in PH/phcom.f90
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: tr2_ph
Type: REAL
Default: 1e-12
Description: Threshold for self-consistency.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: alpha_mix(niter)
Type: REAL
Default: alpha_mix(1)=0.7
Description: Mixing factor (for each iteration) for updating
the scf potential:
vnew(in) = alpha_mix*vold(out) + (1-alpha_mix)*vold(in)
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: nmix_ph
Type: INTEGER
Default: 4
Description: Number of iterations used in potential mixing.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: iverbosity
Type: INTEGER
Default: 0
Description: 0 = short output
1 = verbose output
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: reduce_io
Type: LOGICAL
Default: .false.
Description: Reduce I/O to the strict minimum.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: max_seconds
Type: REAL
Default: 1.d7
Description: Maximum allowed run time before the job stops smoothly.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: fildyn
Type: CHARACTER
Default: 'matdyn'
Description: File where the dynamical matrix is written.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: fildrho
Type: CHARACTER
Default: ' '
Description: File where the charge density responses are written.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: fildvscf
Type: CHARACTER
Default: ' '
Description: File where the the potential variation is written
(for later use in electron-phonon calculation).
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: epsil
Type: LOGICAL
Default: .false.
Description: If .true. in a q=0 calculation for a non metal the
macroscopic dielectric constant of the system is
computed. Do not set epsil to .true. if you have a
metallic system or q/=0: the code will complain and stop.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: lrpa
Type: LOGICAL
Default: .false.
Description: If .true. the dielectric constant is calculated at the
RPA level with DV_xc=0.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: lnoloc
Type: LOGICAL
Default: .false.
Description: If .true. the dielectric constant is calculated without
local fields, i.e. by setting DV_H=0 and DV_xc=0.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: trans
Type: LOGICAL
Default: .true.
Description: If .true. the phonons are computed.
If trans .and. epsil are .true. effective charges are
calculated.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: lraman
Type: LOGICAL
Default: .false.
Description: If .true. calculate non-resonant Raman coefficients
using second-order response as in:
M. Lazzeri and F. Mauri, Phys. Rev. Lett. 90, 036401 (2003).
+--------------------------------------------------------------------
///---
OPTIONAL VARIABLES FOR RAMAN:
+--------------------------------------------------------------------
Variable: eth_rps
Type: REAL
Default: 1.0d-9
Description: Threshold for calculation of Pc R |psi>.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: eth_ns
Type: REAL
Default: 1.0e-12
Description: Threshold for non-scf wavefunction calculation.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: dek
Type: REAL
Default: 1.0e-3
Description: Delta_xk used for wavefunction derivation wrt k.
+--------------------------------------------------------------------
\\\---
+--------------------------------------------------------------------
Variable: recover
Type: LOGICAL
Default: .false.
Description: If .true. restart from an interrupted run.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: low_directory_check
Type: LOGICAL
Default: .false.
Description: If .true. search in the phsave directory only the
quantities requested in input.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: only_init
Type: LOGICAL
Default: .false.
Description: If .true. only the bands and other
initialization quantities are calculated.
(used for GRID parallelization)
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: qplot
Type: LOGICAL
Default: .false.
Description: If .true. a list of q points is read from input.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: q2d
Type: LOGICAL
Default: .false.
Description: If .true. three q points and relative weights are
read from input. The three q points define the rectangle
q(:,1) + l (q(:,2)-q(:,1)) + m (q(:,3)-q(:,1)) where
0< l,m < 1. The weights are integer and those of points two
and three are the number of points in the two directions.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: q_in_band_form
Type: LOGICAL
Default: .false.
Description: This flag is used only when qplot is .true. and q2d is
.false.. When .true. each couple of q points q(:,i+1) and
q(:,i) define the line from q(:,i) to q(:,i+1) and nq
points are generated along that line. nq is the weigth of
q(:,i). When .false. only the list of q points given as
input is calculated. The weights are not used.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: electron_phonon
Type: CHARACTER
Default: ' '
Description: If equal to 'simple' electron-phonon lambda coefficients
are computed for a given q and a grid of k-points specified
by the variables nk1, nk2, nk3, k1, k2, k3.
If equal to 'interpolated' electron-phonon is calculated
by interpolation over the Brillouin Zone as in
M. Wierzbowska, et al. arXiv:cond-mat/0504077
For metals only, requires gaussian smearing.
If trans=.true., the lambdas are calculated in the same
run, using the same k-point grid for phonons and lambdas.
If trans=.false., the lambdas are calculated using
previously saved DeltaVscf in fildvscf, previously saved
dynamical matrix, and the present punch file. This allows
the use of a different (larger) k-point grid.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: zeu
Type: LOGICAL
Default: zeu=epsil
Description: If .true. in a q=0 calculation for a non metal the
effective charges are computed from the dielectric
response. This is the default algorithm. If epsil=.true.
and zeu=.false. only the dielectric tensor is calculated.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: zue
Type: LOGICAL
Default: .false.
Description: If .true. in a q=0 calculation for a non metal the
effective charges are computed from the phonon
density responses. This is an alternative algorithm,
different from the default one (if trans .and. epsil )
The results should be the same within numerical noise.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: elop
Type: LOGICAL
Default: .false.
Description: If .true. calculate electro-optic tensor.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: fpol
Type: LOGICAL
Default: .false.
Description: If .true. calculate dynamic polarizabilities
Requires epsil=.true. ( experimental stage:
see example09 for calculation of methane ).
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: ldisp
Type: LOGICAL
Default: .false.
Description: If .true. the run calculates phonons for a grid of
q-points specified by nq1, nq2, nq3 - for direct
calculation of the entire phonon dispersion.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: nogg
Type: LOGICAL
Default: .false.
Description: If .true. disable the "gamma_gamma" trick used to speed
up calculations at q=0 (phonon wavevector) if the sum over
the Brillouin Zone includes k=0 only. The gamma_gamma
trick exploits symmetry and acoustic sum rule to reduce
the number of linear response calculations to the strict
minimum, as it is done in code phcg.x. This option MUST
BE USED if a run with ph.x is to be followed by a run
with d3.x for third-order terms calculation.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: ldiag
Type: LOGICAL
Default: .false.
Description: If .true. forces the diagonalization of the dynamical
matrix also when only a part of the dynamical matrix
has been calculated. It is used together with start_irr
and last_irr. If all modes corresponding to a
given irreducible representation have been calculated,
the phonon frequencies of that representation are
correct. The others are zero or wrong. Use with care.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: lqdir
Type: LOGICAL
Default: .false.
Description: If .true. ph.x creates inside outdir a separate subdirectory
for each q vector. The flag is set to .true. when ldisp=
.true. and fildvscf /= ' ' or when an electron-phonon
calculation is performed. The induced potential is saved
separately for each q inside the subdirectories.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: search_sym
Type: LOGICAL
Default: .true.
Description: Set it to .false. if you want to disable the mode
symmetry analysis.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variables: nq1, nq2, nq3
Type: INTEGER
Default: 0,0,0
Description: Parameters of the Monkhorst-Pack grid (no offset) used
when ldisp=.true. Same meaning as for nk1, nk2, nk3
in the input of pw.x.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variables: nk1, nk2, nk3, k1, k2, k3
Type: INTEGER
Default: 0,0,0,0,0,0
Description: When these parameters are specified the phonon program
runs a pw non-self consistent calculation with a different
k-point grid thant that used for the charge density.
This occurs even in the Gamma case.
nk1,nk2,nk3 are the parameters of the Monkhorst-Pack grid
with offset determined by k1,k2,k3.
+--------------------------------------------------------------------
///---
SPECIFICATION OF IRREDUCIBLE REPRESENTATION
+--------------------------------------------------------------------
Variable: start_irr
Type: INTEGER
Default: 1
See: last_irr
Description: Perform calculations only from start_irr to last_irr
irreducible representations.
IMPORTANT:
* start_irr must be <= 3*nat
* do not specify "nat_todo" together with
"start_irr", "last_irr"
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: last_irr
Type: INTEGER
Default: 3*nat
See: start_irr
Description: Perform calculations only from start_irr to last_irr
irreducible representations.
IMPORTANT:
* start_irr must be <= 3*nat
* do not specify "nat_todo" together with
"start_irr", "last_irr"
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: nat_todo
Type: INTEGER
Default: 0, i.e. displace all atoms
Description: Choose the subset of atoms to be used in the linear response
calculation: "nat_todo" atoms, specified in input (see below)
are displaced. Can be used to estimate modes for a molecule
adsorbed over a surface without performing a full fledged
calculation. Use with care, at your own risk, and be aware
that this is an approximation and may not work.
IMPORTANT:
* nat_todo <= nat
* if linear-response is calculated for a given atom, it
should also be done for all symmetry-equivalent atoms,
or else you will get incorrect results
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: modenum
Type: INTEGER
Default: 0
Description: For single-mode phonon calculation : modenum is the index of the
irreducible representation (irrep) into which the reducible
representation formed by the 3*nat atomic displacements are
decomposed in order to perform the phonon calculation.
Note that a single-mode calculation will not give you the
frequency of a single phonon mode: in general, the selected
"modenum" is not an eigenvector. What you get on output is
a column of the dynamical matrix.
+--------------------------------------------------------------------
\\\---
///---
Q-POINT SPECIFICATION
+--------------------------------------------------------------------
Variable: start_q
Type: INTEGER
Default: 1
See: last_q
Description: Used only when ldisp=.true..
Computes only the q points from start_q to last_q.
IMPORTANT:
* start_q must be <= nqs (number of q points found)
* do not specify "nat_todo" together with
"start_q", "last_q"
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: last_q
Type: INTEGER
Default: number of q points
See: start_q
Description: Used only when ldisp=.true..
Computes only the q points from start_q to last_q.
IMPORTANT
* last_q must be <= nqs (number of q points)
* do not specify "nat_todo" together with
"start_q", "last_q"
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: dvscf_star
Type: STRUCTURE
Default: disabled
Description: It contains the following components:
dvscf_star%open (logical, default: .false.)
dvscf_star%dir (character, default: outdir//"Rotated_DVSCF" or the
ESPRESSO_FILDVSCF_DIR environment variable)
dvscf_star%ext (character, default: "dvscf") the extension to use
for the name of the output files, see below
dvscf_star%basis (character, default: "cartesian") the basis on which
the rotated dvscf will be saved
dvscf_star%pat (logical, default: true) save an optional file with the
displacement patterns and q vector for each dvscf file
IF dvscf_star%open is .true. use symmetry to compute and store the variation
of the self-consistent potential on every q* in the star of the present q.
The rotated dvscf will then be stored in directory dvscf_star%dir with name
prefix.dvscf_star%ext.q_name//"1". Where q_name is derived from the coordinates
of the q-point, expressed as fractions in crystalline coordinates
(notice that ph.x reads q-points in cartesian coordinates).
E.g. q_cryst= (0, 0.5, -0.25) -> q_name = "0_1o2_-1o4"
The dvscf can be represented on a basis of cartesian 1-atom displacements
(dvscf_star%basis='cartesian') or on the basis of the modes at the rotated q-point
(dvscf_star%basis='modes'). Notice that the el-ph wannier code requires 'cartesian'.
Each dvscf file comes with a corresponding pattern file with an additional ".pat"
suffix; this file contains information about the basis and the q-point of the dvscf.
Note: rotating dvscf can require a large amount of RAM memory and can be i/o
intensive; in its current implementation all the operations are done
on a single processor.
Note2: this feature is currently untested with image parallelisation.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: drho_star
Type: STRUCTURE
See: dvscf_star
Default: disabled
Description: It contains the following components:
drho_star%open (logical, default: .false.)
drho_star%dir (character, default: outdir//"Rotated_DRHO" or the
ESPRESSO_FILDRHO_DIR environment variable)
drho_star%ext (character, default: "drho") the extension to use
for the name of the output files, see below
drho_star%basis (character, default: "modes") the basis on which
the rotated drho will be saved
drho_star%pat (logical, default: false) save an optional file with the
displacement patterns and q vector for each drho file
Like dvscf_star, but for the perturbation of the charge density.
Notice that the defaults are different.
+--------------------------------------------------------------------
\\\---
===END OF NAMELIST======================================================
________________________________________________________________________
* IF ldisp != .true. and qplot != .true. :
========================================================================
Line of input:
xq(1) xq(2) xq(3)
DESCRIPTION OF ITEMS:
+--------------------------------------------------------------------
Variables: xq(1) xq(2) xq(3)
Type: REAL
Description: The phonon wavevector, in units of 2pi/a0
(a0 = lattice parameter).
Not used if ldisp=.true. or qplot=.true.
+--------------------------------------------------------------------
===End of line-of-input=================================================
* ELSE IF qplot == .true. :
SPECIFICATION Q POINTS WHEN QPLOT=.TRUE.
========================================================================
CARD:
/////////////////////////////////////////
// Syntax: //
/////////////////////////////////////////
nqs
xq1(1) xq2(1) xq3(1) nq(1)
xq1(2) xq2(2) xq3(2) nq(2)
. . .
xq1(nqs) xq2(nqs) xq3(nqs) nq(nqs)
/////////////////////////////////////////
DESCRIPTION OF ITEMS:
+--------------------------------------------------------------------
Variable: nqs
Type: INTEGER
Description: Number of q points in the list. Used only if qplot=.true.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variables: xq1, xq2, xq3
Type: REAL
Description: q-point coordinates; used only with ldisp=.true. and qplot=.true.
The phonon wavevector, in units of 2pi/a0 (a0 = lattice parameter).
The meaning of these q points and their weights nq depend on the
flags q2d and q_in_band_form. (NB: nq is integer)
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: nq
Type: INTEGER
Description: The weight of the q-point; the meaning of nq depends
on the flags q2d and q_in_band_form.
+--------------------------------------------------------------------
===END OF CARD==========================================================
ENDIF
________________________________________________________________________
________________________________________________________________________
* IF nat_todo was specified :
========================================================================
Line of input:
atom(1) atom(2) ... atom(nat_todo)
DESCRIPTION OF ITEMS:
+--------------------------------------------------------------------
Variables: atom(1) atom(2) ... atom(nat_todo)
Type: INTEGER
Description: Contains the list of indices of atoms used in the
calculation if "nat_todo" is specified.
+--------------------------------------------------------------------
===End of line-of-input=================================================
ENDIF
________________________________________________________________________
:::: ADDITIONAL INFORMATION
NB: The program ph.x writes on the tmp_dir/_ph0/{prefix}.phsave directory
a file for each representation of each q point. This file is called
dynmat.#iq.#irr.xml where #iq is the number of the q point and #irr
is the number of the representation. These files contain the
contribution to the dynamical matrix of the irr representation for the
iq point.
If recover=.true. ph.x does not recalculate the
representations already saved in the tmp_dir/_ph0/{prefix}.phsave
directory. Moreover ph.x writes on the files patterns.#iq.xml in the
tmp_dir/_ph0/{prefix}.phsave directory the displacement patterns that it
is using. If recover=.true. ph.x does not recalculate the
displacement patterns found in the tmp_dir/_ph0/{prefix}.phsave directory.
This mechanism allows:
1) To recover part of the ph.x calculation even if the recover file
or files are corrupted. You just remove the _ph0/{prefix}.recover
files from the tmp_dir directory. You can also remove all the _ph0
files and keep only the _ph0/{prefix}.phsave directory.
2) To split a phonon calculation into several jobs for different
machines (or set of nodes). Each machine calculates a subset of
the representations and saves its dynmat.#iq.#irr.xml files on
its tmp_dir/_ph0/{prefix}.phsave directory. Then you collect all the
dynmat.#iq.#irr.xml files in one directory and run ph.x to
collect all the dynamical matrices and diagonalize them.
NB: To split the q points in different machines, use the input
variables start_q and last_q. To split the irreducible
representations, use the input variables start_irr, last_irr. Please
note that different machines will use, in general, different
displacement patterns and it is not possible to recollect partial
dynamical matrices generated with different displacement patterns. A
calculation split into different machines will run as follows: A
preparatory run of ph.x with start_irr=0, last_irr=0 produces the sets
of displacement patterns and save them on the patterns.#iq.xml files.
These files are copied in all the tmp_dir/_ph0/{prefix}.phsave directories
of the machines where you plan to run ph.x. ph.x is run in different
machines with complementary sets of start_q, last_q, start_irr and
last_irr variables. All the files dynmat.#iq.#irr.xml are
collected on a single tmp_dir/_ph0/{prefix}.phsave directory (remember to
collect also dynmat.#iq.0.xml). A final run of ph.x in this
machine collects all the data contained in the files and diagonalizes
the dynamical matrices. This is done requesting a complete dispersion
calculation without using start_q, last_q, start_irr, or last_irr.
See an example in examples/GRID_example.
On parallel machines the q point and the irreps calculations can be split
automatically using the -nimage flag. See the phonon user guide for further
information.