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_ZG

&strf_ZG

&phonon_unfold

&input

A atm_zg(i), amass(i), asr, ASDM

C compute_error

D dimX

E error_thresh

F flfrc, flscf, fd

I incl_qA

L loto_2d

N niters, na_ifc

P ph_unfold

Q q_external, qhat_in(i)

S synch, single_ph_displ

T T

Z ZG_conf, ZG_strf

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.

Back to ZG.x input

atm_zg(:)

Variable

atm_zg(i), i=1,ntyp

Type

CHARACTER

Default

‘Element’

Description

Name each atomic type.

Back to ZG.x input

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’.

Back to ZG.x input

ASDM

Type

LOGICAL

Default

.false.

Description

Enables the iterative A-SDM procedure for evaluating anharmonic IFCs. See input list &A_ZG.

Back to ZG.x input

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).

Back to ZG.x input

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.

Back to ZG.x input

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.

Back to ZG.x input

flfrc

Type

CHARACTER

Default

(No default value: must be specified.)

Description

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

Back to ZG.x input

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.

Back to ZG.x input

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.

Back to ZG.x input

incl_qA

Type

LOGICAL

Default

.true.

Description

If .true. phonons in set A, i.e. phonons that remain invariant under time-reversal, are included.

Back to ZG.x input

loto_2d

Type

LOGICAL

Default

.false.

Description

If .true. activates two-dimensional treatment of LO-TO splitting.

Back to ZG.x input

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.

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.

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.

Back to ZG.x input

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.

Back to ZG.x input

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].

Back to ZG.x input

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.

Back to ZG.x input

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”.

Back to ZG.x input

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.

Back to ZG.x input

ZG_conf

Type

LOGICAL

Default

.true.

Description

Enables the construction of the ZG dsplacements.

Back to ZG.x input

ZG_strf

Type

LOGICAL

Default

.false.

Description

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

Back to ZG.x input

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

P poly, poly_fd_forces

R read_fd_forces

U update_equil

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.

Back to A_ZG

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).

Back to A_ZG

iter_idx

Type

INTEGER

Default

1

Description

Index of the current iteration. If poly flag is true then the code sets “iter_idx = 0”. If not specified, the code stops. Based on this index, the code performs iterative mixing of IFCs between iter_idx0 and iter_idx.

Back to A_ZG

iter_idx0

Type

INTEGER

Default

0

Description

Integer indicating the index of the initial IFCs matrix for the iterative mixing process. Mixing is performed between IFCs of iterations “iter_idx0” and iter_idx. If poly flag is true, then the code sets iter_idx0 = 0.

Back to A_ZG

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.

Back to A_ZG

mixing

Type

LOGICAL

Default

.false.

Description

Enables mixing of IFCs between iter_idx0 and iter_idx. Stongly suggested for speed up.

Back to A_ZG

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.

Back to A_ZG

read_fd_forces

Type

LOGICAL

Default

.false.

Description

Enables reading the forces from files ZG-scf_T_K_iter_XX_XXXX.out in directory fd_forces after performing finite differences on the ZG-configuration. Meaningful only if ASDM is true and IFCs have been calculated (i.e. after apply_fd).

Back to A_ZG

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.

Back to A_ZG

Inputs for generating diffuse scattering maps from ZG displacements (used when ZG_strf = .true.)

&strf_ZG

A atmsf(i,j)

C colX

K kmax, kmin, kresX

N nrots, Np

Q qpts_strf

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)].

Back to strf_ZG

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).

Back to strf_ZG

kmax

Type

REAL

Default

5.d0

Description

kmax indicates the maximum value of the momentum axis.

Back to strf_ZG

kmin

Type

REAL

Default

5.d0

Description

kmin indicates the minimum value of the momentum axis.

Back to strf_ZG

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.

Back to strf_ZG

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.

Back to strf_ZG

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.

Back to strf_ZG

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.

Back to strf_ZG

&phonon_unfold

F flfrq, flweights

D dimX

N ng1, ng2, ng3

flfrq

Type

CHARACTER

Default

‘frequencies.dat’

Description

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

Back to phonon_unfold

flweights

Type

CHARACTER

Default

‘unfold_weights.dat’’

Description

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

Back to phonon_unfold

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.

Back to phonon_unfold

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.

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

&pp_disca

&input

A amass, asr, atm_zg(i), atmsf(i,j), atom_resolved

D dimX

E eps2

F flfrc, full_phonon

L loto_2d

M mode_resolved

N nks1, nks2, nks3, nksf1, nksf2, nksf3

Q qstart, qfinal

P plane_dir, plane_val, print_raw_data

T T

Z zero_one_phonon

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.

Back to disca.x input

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’.

Back to disca.x input

atm_zg(:)

Variable

atm_zg(i), i=1,ntyp

Type

CHARACTER

Default

‘Element’

Description

Name each atomic type.

Back to disca.x input

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)].

Back to disca.x input

atom_resolved

Type

LOGICAL

Default

.ture.

Description

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

Back to disca.x input

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.

Back to disca.x input

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.

Back to disca.x input

flfrc

Type

CHARACTER

Default

(No default value: must be specified.)

Description

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

Back to disca.x input

full_phonon

Type

LOGICAL

Default

.false.

Description

If .true. the code calculates the all-phonon diffuse scattering (including Bragg scattering).

Back to disca.x input

loto_2d

Type

LOGICAL

Default

.false.

Description

If .true. activates two-dimensional treatment of LO-TO splitting.

Back to disca.x input

mode_resolved

Type

LOGICAL

Default

.ture.

Description

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

Back to disca.x input

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).

Back to disca.x input

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.

Back to disca.x input

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.

Back to disca.x input

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).

Back to disca.x input

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.

Back to disca.x input

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.

Back to disca.x input

zero_one_phonon

Type

LOGICAL

Default

.ture.

Description

If .true. the code calculates the one-phonon contribution to diffuse scattering (including Bragg scattering).

Back to disca.x input

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.

Back to disca.x input

Inputs for the convolution of the phonon diffuse scattering maps

&pp_disca

C colX

K kmax, kmin, kresX

N nrots, Np

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).

Back to pp_disca

kmax

Type

REAL

Default

5.d0

Description

kmax indicates the maximum value of the momentum axis.

Back to pp_disca

kmin

Type

REAL

Default

5.d0

Description

kmin indicates the minimum value of the momentum axis.

Back to pp_disca

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.

Back to pp_disca

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.

Back to pp_disca

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.

Back to pp_disca

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

&input

C colX

F flstrfin, flstrfout

K kmax, kmin, kresX

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).

Back to pp_disca.x input

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..

Back to pp_disca.x input

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.

Back to pp_disca.x input

kmax

Type

REAL

Default

5.d0

Description

kmax indicates the maximum value of the momentum axis.

Back to pp_disca.x input

kmin

Type

REAL

Default

5.d0

Description

kmin indicates the minimum value of the momentum axis.

Back to pp_disca.x input

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.

Back to pp_disca.x input

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.

Back to pp_disca.x input