Inputs for ZG.x and disca.x¶
List of inputs for ZG.x in EPW¶
ZG is supposed to run in serial but can be parallelized over all cpus X:¶
i.e. mpirun n X ZG.x nk X < ZG.in > ZG.out
Structure of ZG.in (input file for generating ZG displacements)¶
title line
amass(:)
¶
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.

atm_zg(:)
¶
Variable 
atm_zg(i), i=1,ntyp

Type 
CHARACTER

Default 
‘Element’

Description 
Name each atomic type.

asr
¶
Type 
CHARACTER

Default 
‘no’

Description 
Kind of acoustic sum rule that can be imposed in real space. Possible ASR are ‘no’ ‘simple’, ‘crystal’, ‘onedim’ and ‘zerodim’.

ASDM
¶
Type 
LOGICAL

Default 
.false.

Description 
Enables the iterative ASDM procedure for evaluating anharmonic IFCs. See input list &A_ZG.

compute_error
¶
Type 
LOGICAL

Default 
.true.

Description 
If .true. allows the code to find the optimal ZG configuration by minimizing the error based on the error_thresh flag (see below). Set it to .false. if speed up is required when (i) large supercell sizes are considered for which the error is minimized by the first set of signs, (ii) only single phonon displacements are of interest (see below), (iii) nconfs > 1.

dim1, dim2, dim3
¶
Type 
INTEGER

Default 
(0, 0, 0)

Description 
dim1, dim2, and dim3 specify the dimensionality of the supercell i.e.: the size of supercell is [dim1 * a(1), dim2 * a(2), dim3 * a(3)], where a(1), a(2), a(3) are the lattice vectors of the unitcell used to compute the phonons.

error_thresh
¶
Type 
REAL

Default 
0.30

Description 
Error at which the algorithm stops while it’s looking for possible combinations of signs. Once this limit is reached, the ZG dsplacement is constructed. The threshold is usually chosen to be less than 30%, which is a safe boundary for accurate nonperturbative calculations. Meaningful if compute_error = .true.

flfrc
¶
Type 
CHARACTER

Default 
(No default value: must be specified.)

Description 
Name of the input file produced by q2r containing the force constants.

flscf
¶
Type 
CHARACTER

Default 
(No default value. If empty ZGscf.in and equilscf.in files are not generated.)

Description 
Name of the scf input file used to calculate the phonons. The code will read this file to generate new scf files for equilibirum and ZG supercell calculations, i.e. equilscf.in and ZGscf.in. Cell paramaters, number of atoms, kgrid, and atomic coordinates are modified automatically based on the supercell dimensions. The code will always generate the lattice information in angstroms.

fd
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. the code assumes that the interatomic force constants in the “.fc” file come from finite differences as implemented in matdyn.x. This flag is useful with ASDM calculations which rely on finite differences. Remember to add this flag in matdyn.x input for calculating the phonon dispersion, otherwise it might lead to erroneous results and conclusions.

incl_qA
¶
Type 
LOGICAL

Default 
.true.

Description 
If .true. phonons in set A, i.e. phonons that remain invariant under timereversal, are included.

loto_2d
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. activates twodimensional treatment of LOTO splitting.

na_ifc
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. the code adds the non analytic contributions to the interatomic force constants if finite displacements are used. The implementation is as in matdyn.x. This flag, used in conjunction with fd flag, is useful with ASDM calculations. Remember to add this flag in matdyn.x input for calculating the phonon dispersion, otherwise it might lead to erroneous results and conclusions.

nconfs
¶
Type 
INTEGER

Default 
1

Description 
If greater than 1 allows nconfs ZG configurations for each temperature to be generated. If greater than 1, “compute_error” is set to .false.

niters
¶
Type 
Integer

Default 
15000

Description 
Number of attempts the algorithm needs to go through for finding the optimum configuration. The algorithm generates a set of “+,,+, …” signs and its possible permutations, trying to minimize the error coming from the coupling of modes with the same qwavevector but at different branch. For a finite supercell size the order of using the “+,,+, …” set and its permutations is important, giving different results. Therefore, the algorithm checks the combination that brings the error lower than a threshold (see error_thresh flag). Meaningful if compute_error = .true.. If integer nconfs > 1 then niters = nconfs.

ph_unfold
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. activates the phonon unfolding procedure. To perform phonon unfolding ZG_conf must be set to .false.. If ph_unfold = .true. then q_external = .true.

q_external
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. allows the use of a qpoint list specified by the user in the input file. If .false. the qpoint list is specified automatically by the supercell dimensions dim1, dim2, and dim3. If .true. the qpoint list must be provided by the user and place it after namelist &input. It is advisable to keep this flag to .false. except you know what you are doing.

qhat_in(:)
¶
Variable 
qhat_in(i), i=1,3

Type 
REAL

Default 
(0.1, 0.1, 0.1)

Description 
Vector with three real entries for specifying the direction qhat for the nonanalytic part when dim1=dim2=dim3=1. Use for example “qhat_in(1) = 0.1, qhat_in(2) =0.0, qhat_in(3) = 0.0” to account for LOTO splitting from the direction [1 0 0].

synch
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. the code applies a smooth Berry connection and aligns the sign of the modes with respect to a reference mode. Note that the sign of this reference depends on the machine and it is perfectly reasonable to find different ZG coordinates, since the modes obtained by diagonalizing the dynamical matrix can differ by a phase factor (or a unitary matrix in case of degeneracy) if the processor, or compiler, or libraries have changed. The eigenvalues should remain the same in all cases. Degeneracy is not taken into account.

single_ph_displ
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. allows to displace the nuclei along single phonon modes. Use output configurations to compute electronphonon matrix elements with a direct supercell calculation. Set the displacement to the zero point by T = 0. This finite displacement carries the effect of diagonal elements of [g(q)+g(q)]. Output file is: “single_phonondisplacements.dat”.

T
¶
Type 
REAL

Default 
0.00

Description 
It specifies the temperature at which the calculations will be performed. T essentially defines the amplitude of the normal coordinates through the BoseEinstein factor.

T_array(i)
¶
Type 
REAL

Default 
1.00

Description 
Allows the generation of multiple ZG configurations for different temperatures. If nconfs = 1, the same set of signs is maintained for all temperatures. This is important for consistency reasons. If nconfs > 1 then nconfs ZG configurations are generated for each temperature specified in T_array. A maximum of 100 temperatures are allowed, e.g., T_array(1) = 50, … T_array(100) = 1000.

ZG_conf
¶
Type 
LOGICAL

Default 
.true.

Description 
Enables the construction of the ZG dsplacements.

ZG_strf
¶
Type 
LOGICAL

Default 
.false.

Description 
Enables the calculation of the ZG diffuse scattering maps (see namelist &strf_ZG).

Inputs for evaluating anharmonic IFCs with ZG displacements (used when ASDM = .true.)¶
apply_fd
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. generates scf input files ZGscf_T_K_iter_XX_XXXX.in for the calculation of the IFCs. Finite displacements of amplitude fd_displ along each direction and atom of the ZG configuration are applied.

fd_displ
¶
Type 
REAL

Default 
0.01058

Description 
Finite differences displacement in angstroms to be applied along each direction and atom of the ZG configuration (0.01058 A = 0.02 Bohr).

iter_idx
¶
Type 
INTEGER

Default 
1

Description 
iter_idx0
¶
Type 
INTEGER

Default 
0

Description 
incl_epsil
¶
Type 
LOGICAL

Default 
.false.

Description 
Allows the code to print the information of the dielectric constant and Born effective charge tensors in the “.fc” file printed at each iteration. This flag enables, essentially, the inclusion of longrange dipoledipole interactions in the computation of temperaturedependent anharmonic phonons. Meaningful if read_fd_forces = .true.

mixing
¶
Type 
LOGICAL

Default 
.false.

Description 
poly
¶
Type 
LOGICAL

Default 
.false.

Description 
Enables the starting point of ASDM using the polymorphous structure. The code searches for ZGrelax.out whose final atomic coordinates represent the ground state polymorphous network. If ZGrelax.out exists the code, will apply finite displacements and generate ZGscf_poly_iter_XXXX.in input files. If ZGrelax.out does not exist, then the code will generate ZGrelax.in containing an initial ZG configuration for performing optimization of the nuclei coordinates and thus obtain ZGrelax.out.

poly_fd_forces
¶
Type 
LOGICAL

Default 
.false.

Description 
Enables reading of the forces from files ZGscf_poly_iter_XXXX.out in directory fd_forces after performing finite differences on the polymorphous configuration.

read_fd_forces
¶
Type 
LOGICAL

Default 
.false.

Description 
update_equil
¶
Type 
LOGICAL

Default 
.false.

Description 
Updates the atomic positions at each iteration. This flag serves for minimizing the free energy with respect to atomic positions based on the NewtonRaphson method. Meaningful only if atomic coordinates of the highsymmetry reference structure are specified by general Wyckoff positions or symetries are disabled.

Inputs for generating diffuse scattering maps from ZG displacements (used when ZG_strf = .true.)¶
atmsf_a(i,j), atmsf_b(i,j)
¶
Type 
REAL

Default 
0.d0

Description 
Arrays atmsf_a and atmsf_b that define the atomic scattering factor as a sum of Gaussians. 5 entries (j), per atom type (i). Parameters can be taken from Ref. [L. Peng, Micron 30, 625648, (1999)].

col1, col2
¶
Type 
INTEGER

Default 
(1, 2)

Description 
Integers that take values from 1 to 3 for specifying the two Cartesian directions of the scattering vectors Q in the 2D map (1 –> Qx, 2 –> Qy, and 3 –> Qz).

kmax
¶
Type 
REAL

Default 
5.d0

Description 
kmax indicates the maximum value of the momentum axis.

kmin
¶
Type 
REAL

Default 
5.d0

Description 
kmin indicates the minimum value of the momentum axis.

kres1, kres2
¶
Type 
INTEGER

Default 
(250, 250)

Description 
kres1 and kres2 define the resolution/smearing along the momentumaxes as: (kmax  kmin) / kresX. For kmax, kmin see above.

nrots
¶
Type 
INTEGER

Default 
1

Description 
nrots defines the number of rotations for obtaining the full structure factor map. This number depends on the space group of the structure. For example, for a hexagonal system set nrots to 6.

Np
¶
Type 
INTEGER

Default 
400000

Description 
Np defines the number of reduced wavevectors (qpoints) used to sample each Brillouin zone of reciprocal space. This number is equal to (dim1 * dim2 * dim3) as specified in ZG input namelist. The code divides the scattering intensity for every Q by Np**2 for normalization reasons. One can specify a different value.

qpts_strf
¶
Type 
INTEGER

Default 
0

Description 
Specifies how many coordinates (rows) to read from the file qpts_strf.dat containing the scattering vectors Q in crystal coordinates. qpts_strf.dat can be automatically generated from disca.x.

flfrq
¶
Type 
CHARACTER

Default 
‘frequencies.dat’

Description 
Name of the output file for frequencies to printed with unfolding weights.

flweights
¶
Type 
CHARACTER

Default 
‘unfold_weights.dat’’

Description 
Name of the output file for unfolding weights to printed with frequncies.

ng1, ng2, ng3
¶
Type 
INTEGER

Default 
(10, 10, 10)

Description 
ng1, ng2, and ng3 correspond to the (h k l) indices of the reciprocal lattice vector g. Increase their values to check convergence. Default is a good starting point.

Comments for bands_unfold.x in ZG tree of EPW v5.5¶
Input variables’ description for bands_unfold.x is as for bands.x of Quantum Espresso. (see → https://www.quantumespresso.org/Doc/INPUT_BANDS.html) The only difference is that, here, we introduce the flags dim1, dim2, dim3 which specify the dimensions of the supercell used. This routine is general and can be used for band structure unfolding of ZG supercell structures, supercells with defects, or any other distorted configuration. It is implemented to deal with normconserving, paw, and us pseudopotentials.
List of inputs for disca.x in ZG tree of EPW v5.5¶
For optimum performance parallelize over all cpus X:¶
i.e. mpirun n X disca.x nk X < disca.in > disca.out
Structure of disca.in (input file for generating allphonon scattering maps)¶
title line
&input¶
A amass, asr, atm_zg(i), atmsf(i,j), atom_resolved
D dimX
E eps2
F flfrc, full_phonon
L loto_2d
N nks1, nks2, nks3, nksf1, nksf2, nksf3
P plane_dir, plane_val, print_raw_data
T T
amass(:)
¶
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.

asr
¶
Type 
CHARACTER

Default 
‘no’

Description 
Kind of acoustic sum rule that can be imposed in real space. Possible ASR are ‘no’ ‘simple’, ‘crystal’, ‘onedim’ and ‘zerodim’.

atm_zg(:)
¶
Variable 
atm_zg(i), i=1,ntyp

Type 
CHARACTER

Default 
‘Element’

Description 
Name each atomic type.

atmsf_a(i,j), atmsf_b(i,j)
¶
Type 
REAL

Default 
0.d0

Description 
Arrays atmsf_a and atmsf_b that define the atomic scattering factor as a sum of Gaussians. 5 entries (j), per atom type (i). Parameters can be taken from Ref. [L. Peng, Micron 30, 625648, (1999)].

atom_resolved
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. the code calculates the atom resolved (k,k’) contribubution to diffuse scattering.

dim1, dim2, dim3
¶
Type 
INTEGER

Default 
(0, 0, 0)

Description 
dim1, dim2, and dim3 specify the dimensionality of the supercell i.e.: the size of supercell is [dim1 * a(1), dim2 * a(2), dim3 * a(3)], where a(1), a(2), a(3) are the lattice vectors of the unitcell used to compute the phonons.

eps2
¶
Type 
REAL

Default 
1.0d15

Description 
Real variable to exlude phonon frequencies below eps2. This flag is useful when negative or spuriously small phonon frequencies exist.

flfrc
¶
Type 
CHARACTER

Default 
(No default value: must be specified.)

Description 
Name of the input file produced by q2r containing the force constants.

full_phonon
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. the code calculates the allphonon diffuse scattering (including Bragg scattering).

loto_2d
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. activates twodimensional treatment of LOTO splitting.

mode_resolved
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. the code calculates the mode resolved (ν) contribubution to diffuse scattering.

nks1, nks2, nks3
¶
Type 
INTEGER

Default 
(0, 0, 0)

Description 
nks1, nks2, and nks3 specify the initial coordinates of the reciprocal lattice vector Gi = [nks1 * b1 + nks2 * b2 + nks3 * b3], where b1, b2, b3 are the reciprocal lattice vectors of the unitcell (see also nksf1, nksf2, nksf3).

nksf1, nksf2, nksf3
¶
Type 
INTEGER

Default 
(6, 6, 6)

Description 
nksf1, nksf2, and nksf3 specify the the final coordinates of the reciprocal lattice vector Gf = [nksf1 * b1 + nksf2 * b2 + nksf3 * b3], where b1, b2, b3 are the reciprocal lattice vectors of the unitcell. Reciprocal lattice vectors from Gi to Gf define the centers of the Brillouin zones for which the scattering vectors Q are computed.

plane_dir
¶
Type 
INTEGER

Default 
3

Description 
Integer number that defines the Cartesian direction perpendicular to the plane (1 –> x, 2 –> y, and 3 –> z) for which the structure factor is calculated for.

plane_val
¶
Type 
REAL

Default 
0.d0 in units of 2pi/alat

Description 
Real number that defines the plane (in units of 2pi/alat) for which the structure factor map is calculated for. For example to obtain the map for the Qz = 0 plane use plane_val = 0.d0 and plane_dir = 3 (see above).

print_raw_data
¶
Type 
LOGICAL

Default 
.false.

Description 
If .true. the code prints the raw data (Bragg & phonon contributions to diffuse scattering) before applying convolution. The raw data can be used together with &input of pp_disca.x code for postprocessing.

qstart
¶
Type 
INTEGER

Default 
1

Description 
Number that is used together with qfinal (see below) to define how many scattering vectors Q will be included in the present run. These flags enable the separation of the full calculation into different runs.

qfinal
¶
Type 
INTEGER

Default 
2

Description 
Number that is used together with qstart (see above) to define how many scattering vectors Q will be included in the present run. These flags enable the separation of the full calculation into different runs.

zero_one_phonon
¶
Type 
LOGICAL

Default 
.ture.

Description 
If .true. the code calculates the onephonon contribution to diffuse scattering (including Bragg scattering).

T
¶
Type 
REAL

Default 
0.00

Description 
It specifies the temperature at which the calculations will be performed. T essentially defines the amplitude of the normal coordinates through the BoseEinstein factor.

Inputs for the convolution of the phonon diffuse scattering maps¶
col1, col2
¶
Type 
INTEGER

Default 
(1, 2)

Description 
Integers that take values from 1 to 3 for specifying the two Cartesian directions of the scattering vectors Q in the 2D map (1 –> Qx, 2 –> Qy, and 3 –> Qz).

kmax
¶
Type 
REAL

Default 
5.d0

Description 
kmax indicates the maximum value of the momentum axis.

kmin
¶
Type 
REAL

Default 
5.d0

Description 
kmin indicates the minimum value of the momentum axis.

kres1, kres2
¶
Type 
INTEGER

Default 
(250, 250)

Description 
kres1 and kres2 define the resolution/smearing along the momentumaxes as: (kmax  kmin) / kresX. For kmax, kmin see above.

nrots
¶
Type 
INTEGER

Default 
1

Description 
nrots defines the number of rotations for obtaining the full structure factor map. This number depends on the space group of the structure. For example, for a hexagonal system set nrots to 6.

Type 
INTEGER

Default 
400000

Description 
Np defines the number of reduced wavevectors (qpoints) used to sample each Brillouin zone of reciprocal space. This number is equal to (dim1 * dim2 * dim3) as specified in ZG input namelist. The code divides the scattering intensity for every Q by Np**2 for normalization reasons. One can specify a different value.

List of inputs for pp_disca.x in ZG tree of EPW¶
For optimum performance parallelize over all cpus X:¶
i.e. mpirun n X pp_disca.x nk X < pp_disca.in > pp_disca.out
col1, col2
¶
Type 
INTEGER

Default 
(1, 2)

Description 
Integers that take values from 1 to 3 for specifying the two Cartesian directions of the scattering vectors Q in the 2D map (1 –> Qx, 2 –> Qy, and 3 –> Qz).

flstrfin
¶
Type 
CHARACTER

Default 
(No default value: must be specified.)

Description 
Name of the input file that contains the scattering vectors’ coordinates (columns 1:3), and the scattering intensity (column 4). Usually the file printed when print_raw_data = .true..

flstrfout
¶
Type 
CHARACTER

Default 
(No default value: must be specified.)

Description 
Name of the output file that contains the convoluted structure factor map. Columns 1:2 is the scattering vector coordinates, and column 3 is the scattering intensity.

kmax
¶
Type 
REAL

Default 
5.d0

Description 
kmax indicates the maximum value of the momentum axis.

kmin
¶
Type 
REAL

Default 
5.d0

Description 
kmin indicates the minimum value of the momentum axis.

kres1, kres2
¶
Type 
INTEGER

Default 
(250, 250)

Description 
kres1 and kres2 define the resolution/smearing along the momentumaxes as: (kmax  kmin) / kresX. For kmax, kmin see above.

Type 
INTEGER

Default 
400000

Description 
Np defines the number of reduced wavevectors (qpoints) used to sample each Brillouin zone of reciprocal space. This number is equal to (dim1 * dim2 * dim3) as specified in ZG input namelist. The code divides the scattering intensity for every Q by Np**2 for normalization reasons. One can specify a different value.
