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
&input
A atm_zg(i), amass(i), asr, ASDM
D dimX
I incl_qA
L loto_2d
T T, T_array(i)
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’, ‘one-dim’ and ‘zero-dim’.
|
ASDM
Type |
LOGICAL
|
Default |
.false.
|
Description |
Enables the iterative A-SDM 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 unit-cell 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 non-perturbative 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 ZG-scf.in and equil-scf.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. equil-scf.in and ZG-scf.in. Cell paramaters, number of atoms, k-grid, 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 A-SDM 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 time-reversal, are included.
|
loto_2d
Type |
LOGICAL
|
Default |
.false.
|
Description |
If .true. activates two-dimensional treatment of LO-TO 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 A-SDM 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 q-wavevector 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 q-point list specified by the user in the input file. If .false. the q-point list is specified automatically by the supercell dimensions dim1, dim2, and dim3. If .true. the q-point 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 non-analytic 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 LO-TO 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 electron-phonon 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_phonon-displacements.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 Bose-Einstein 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.)
&A_ZG
A apply_fd
F fd_displ
I iter_idx, iter_idx0, incl_epsil
M mixing
apply_fd
Type |
LOGICAL
|
Default |
.false.
|
Description |
If .true. generates scf input files ZG-scf_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 long-range dipole-dipole interactions in the computation of temperature-dependent 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 ZG-relax.out whose final atomic coordinates represent the ground state polymorphous network. If ZG-relax.out exists the code, will apply finite displacements and generate ZG-scf_poly_iter_XXXX.in input files. If ZG-relax.out does not exist, then the code will generate ZG-relax.in containing an initial ZG configuration for performing optimization of the nuclei coordinates and thus obtain ZG-relax.out.
|
poly_fd_forces
Type |
LOGICAL
|
Default |
.false.
|
Description |
Enables reading of the forces from files ZG-scf_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 Newton-Raphson method. Meaningful only if atomic coordinates of the high-symmetry 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.)
&strf_ZG
C colX
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, 625-648, (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 momentum-axes 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 (q-points) 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.
|
&phonon_unfold
D dimX
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.
|
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 all-phonon 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’, ‘one-dim’ and ‘zero-dim’.
|
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, 625-648, (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 unit-cell used to compute the phonons.
|
eps2
Type |
REAL
|
Default |
1.0d-15
|
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 all-phonon diffuse scattering (including Bragg scattering).
|
loto_2d
Type |
LOGICAL
|
Default |
.false.
|
Description |
If .true. activates two-dimensional treatment of LO-TO 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 unit-cell (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 unit-cell. 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 post-processing.
|
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 one-phonon 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 Bose-Einstein factor.
|
Inputs for the convolution of the phonon diffuse scattering maps
&pp_disca
C colX
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 momentum-axes 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 (q-points) 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
pp_disca.x is used to process the raw data from disca.x (if print_raw_data = .true.)
&input
C colX
N Np
S steps
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 momentum-axes as: (kmax - kmin) / kresX. For kmax, kmin see above.
|
Type |
INTEGER
|
Default |
400000
|
Description |
Np defines the number of reduced wavevectors (q-points) 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.
|
steps
Type |
INTEGER
|
Default |
10000
|
Description |
Integer specifying how many entries from file flstrfin are included in the computation of the scattering intensity, starting from the first row.
|
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.quantum-espresso.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 norm-conserving, paw, and us pseudopotentials.