intw_input_parameters Module

This module contains the definitions of all input parameters for INTW as well as subroutines for reading and checking the input.

Details

Input parameters

&input
    outdir                = 'directory'
    prefix                = 'prefix'
    nk1                   = integer
    nk2                   = integer
    nk3                   = integer
    tr_symmetry           = T or F (Default: T)
    chemical_potential    = real (Default: 0.0 eV)
    use_exclude_bands     = 'none', 'wannier' or 'custom'
    include_bands_initial = integer
    include_bands_final   = integer
/
&intw2W
    intw2w_fullzone = T or F (Default: F)
    intw2w_method   = 'CONVOLUTION' or 'FFT' (Default: 'CONVOLUTION')
    compute_amn     = T or F (Default: T)
    compute_mmn     = T or F (Default: T)
/
&ph
    qlist           = 'file' (Default: 'qlist.txt')
    read_for_dynmat = 'fc' or 'dynq' (Default: 'dynq')
    fc_mat          = 'file'
    nq1             = integer
    nq2             = integer
    nq3             = integer
    nqirr           = integer
    apply_asr       = T or F (Default: T)
/
&DOS
    nk1_dos    = integer (Default: 20)
    nk2_dos    = integer (Default: 20)
    nk3_dos    = integer (Default: 20)
    ne_dos     = integer (Default: 100)
    eini_dos   = real (Default: -10.0 eV)
    efin_dos   = real (Default: 10.0 eV)
    esmear_dos = real (Default: 0.05 eV)
    ktsmear    = real (Default: 0.01 eV)
/
&DOS_ph
    nq1_dosph = integer (Default: 20)
    nq2_dosph = integer (Default: 20)
    nq3_dosph = integer (Default: 20)
    nomega    = integer (Default: 100)
    omega_ini = real (Default: 0.0 Ry)
    omega_fin = real (Default: 0.005 Ry)
    osmear_q  = real (Default: 0.000075 Ry)
    omega_cut = real (Default: 0.0 Ry)
/
&elphon
    ep_mat_file         = 'file' (Default: 'ep_mat.dat')
    ep_bands            = 'intw' or 'custom' (Default: 'intw')
    ep_bands_initial    = integer
    ep_bands_final      = integer
    ep_interp_method    = 'wannier' or 'dV_interpolate'
    ep_interp_bands     = 'intw_bands' or 'ef_crossing' (Default: 'intw_bands')
    nfs_sheets_initial  = integer
    nfs_sheets_final    = integer
    nscf_code           = 'QE' or 'SIESTA'
    command_pw          = 'command'
    command_pw2intw     = 'command'
    file_pw             = 'file'
    command_siesta2intw = 'command'
    file_siesta2intw    = 'file'
/
K_PATH
    nkpath nkspecial
    label(1) kspecial_x(1) kspecial_y(1) kspecial_z(1)
    label(2) kspecial_x(2) kspecial_y(2) kspecial_z(2)
    ...
    label(nkspecial) kspecial_x(nkspecial) kspecial_y(nkspecial) kspecial_z(nkspecial)
Q_PATH
    nqpath nqspecial
    label(1) qspecial_x(1) qspecial_y(1) qspecial_z(1)
    label(2) qspecial_x(2) qspecial_y(2) qspecial_z(2)
    ...
    label(nqspecial) qspecial_x(nqspecial) qspecial_y(nqspecial) qspecial_z(nqspecial)

K_PATH and Q_PATH cards are used to generate the path along the Brilloin zone to plot electron band structure and phonon frequency dispersion, respectively.

Variables without default values must be explicitly set in the input file; otherwise, an error will be raised.


Uses


Variables

Type Visibility Attributes Name Initial
character(len=256), public :: outdir = 'unassigned'

The directory where the DFT calculations are stored

character(len=256), public :: prefix = 'unassigned'

The prefix of the DFT calculation

integer, public :: nk1 = -1

Monkhorst-Pack mesh indices for the coarse k-mesh

integer, public :: nk2 = -1

Monkhorst-Pack mesh indices for the coarse k-mesh

integer, public :: nk3 = -1

Monkhorst-Pack mesh indices for the coarse k-mesh

real(kind=dp), public :: chemical_potential = 0.0_dp

The value which determines the occupation factors (Units: eV)

logical, public :: TR_symmetry = .true.

If TR symmetry is present TR_symmetry = .true.

character(len=256), public :: use_exclude_bands = "unassigned"

Three options to select the bands used in various utilities:

  • use_exclude_bands='none': we don't exclude any band and therefore we use all bands from the DFT calculation (Error if nnkp file is present)

  • use_exclude_bands='wannier': we exclude the bands indicated by Wannier90 in nnkp file (Error if nnkp file is NOT present)

  • use_exclude_bands='custom': use the subset of bands (include_bands_initial:include_bands_final) from the bands considered by the DFT calculation and exclude the rest of bands (Error if include_bands_initial, include_bands_final not present)

integer, public :: include_bands_initial = 0

The initial and final band indices for use_exclude_bands='custom'

integer, public :: include_bands_final = 0

The initial and final band indices for use_exclude_bands='custom'

logical, public :: intw2W_fullzone = .false.

If True, the code wil assume that a full zone DFT calculation has been performed and that wavefunctions for every k-point are available. This is mostly for testing and directly comparing the results of intw2W90 and pw2wannier

character(len=256), public :: intw2W_method = 'CONVOLUTION'

Two options to select which method use to compute matrix elements:

  • intw2W_method = 'CONVOLUTION'
  • intw2W_method = 'FFT'
logical, public :: compute_mmn = .true.

If True, the code produces the $prefix.mmn and $prefix.eig files

logical, public :: compute_amn = .true.

If True, the code produces the $prefix.amn file

character(len=256), public :: qlist = 'qlist.txt'

Name of the file containing the irreducible q-points list (relative to outdir)

character(len=256), public :: fc_mat = '--.fc'

Name of the force constants matrix (relative to outdir)

character(len=256), public :: read_for_dynmat = 'dynq'

Two options to choose:

  • read_for_dynmat = 'fc': to read force constants from fc_mat file
  • read_for_dynmat = 'dynq': to read .dyn files from the phonon calculations
logical, public :: apply_asr = .true.

Whether apply Acoustic Sum Rule or not

integer, public :: nq1 = -1

Monkhorst-Pack mesh indices for the coarse q-mesh

integer, public :: nq2 = -1

Monkhorst-Pack mesh indices for the coarse q-mesh

integer, public :: nq3 = -1

Monkhorst-Pack mesh indices for the coarse q-mesh

integer, public :: nqirr = -1

Number of irreducible q-points

integer, public :: nk1_dos = 20

Interpolation k-grid for DOS plot

integer, public :: nk2_dos = 20

Interpolation k-grid for DOS plot

integer, public :: nk3_dos = 20

Interpolation k-grid for DOS plot

integer, public :: ne_dos = 100

Number of energy points in DOS plot

real(kind=dp), public :: eini_dos = -10.0_dp

Energy range for electron DOS plot (Units: eV)

real(kind=dp), public :: efin_dos = 10.0_dp

Energy range for electron DOS plot (Units: eV)

real(kind=dp), public :: esmear_dos = 0.05_dp

Smearing width for electron DOS plot (Units: eV)

real(kind=dp), public :: ktsmear = 0.01_dp

Smearing (kT) for Fermi level electron DOS calculation (Units: eV)

integer, public :: nq1_dosph = 20

Interpolation q-grid for phonon DOS plot

integer, public :: nq2_dosph = 20

Interpolation q-grid for phonon DOS plot

integer, public :: nq3_dosph = 20

Interpolation q-grid for phonon DOS plot

integer, public :: nomega = 100

Number of energy points in DOS plot

real(kind=dp), public :: omega_ini = 0.0_dp

Energy range for phonon DOS plot (Units: Ry)

real(kind=dp), public :: omega_fin = 0.005_dp

Energy range for phonon DOS plot (Units: Ry)

real(kind=dp), public :: osmear_q = 0.000075

Smearing width for phonon DOS plot (Units: Ry)

real(kind=dp), public :: omega_cut = -1.0_dp

Phonon frequency cut-off for removing w -> 0 peak in a2F (Units: Ry)

character(len=256), public :: ep_mat_file = "ep_mat.dat"

Name of the electron-phonon matrix elements file

character(len=256), public :: ep_bands = 'intw'

Two options to select the subset of bands for computing the electron-phonon matrix elements:

  • ep_bands = 'intw': compute matrix elements for all bands considered by INTW (See use_exclude_bands variable)
  • ep_bands = 'custom': compute matrix elements for the custom subset of bands (ep_bands_initial:ep_bands_final) from the bands considered by INTW (See use_exclude_bands variable)
integer, public :: ep_bands_initial = 0

The initial and final band indices for ep_bands = 'custom'

integer, public :: ep_bands_final = 0

The initial and final band indices for ep_bands = 'custom'

character(len=256), public :: ep_interp_method = 'unassigned'

Two options to choose the interpolation method:

  • ep_interp_method = 'wannier'
  • ep_interp_method = 'dV_interpolate'
character(len=256), public :: ep_interp_bands = 'intw_bands'

Two options to select the subset of bands to interpolate electron-phonon matrix elements:

  • ep_interp_bands = 'intw_bands': interpolate matrix elements for all bands considered by INTW (See use_exclude_bands variable)
  • ep_interp_bands = 'ef_crossing': interpolate matrix elements for the substet of bands that cross the Fermi level (nfs_sheets_initial:nfs_sheets_final) from the bands considered by INTW (See use_exclude_bands variable)
integer, public :: nfs_sheets_initial = 0

The initial band index for ep_interp_bands = 'ef_crossing'

integer, public :: nfs_sheets_final = 0

The final band index for ep_interp_bands = 'ef_crossing'

character(len=256), public :: nscf_code = 'unassigned'

The DFT code used for running the nscf calculation (only needed if ep_interp_method = 'dV_interpolate' is chosen):

  • nscf_code = 'QE'
  • nscf_code = 'SIESTA'
character(len=256), public :: command_pw = 'unassigned'

pw.x executable, with optional running options that go ahead of the executable like 'mpirun -np N', 'nice', etc.

character(len=256), public :: command_pw2intw = 'unassigned'

pw2intw.x executable, with optional running options that go ahead of the executable like 'mpirun -np N', 'nice', etc.

character(len=256), public :: file_pw = 'unassigned'

The input file for pw.x.

character(len=256), public :: command_siesta2intw = 'unassigned'

siesta2intw.x executable, with optional running options that go ahead of the executable like 'mpirun -np N', 'nice', etc.

character(len=256), public :: file_siesta2intw = 'unassigned'

The input file for siesta2intw.x.

logical, public :: exist_kpath
integer, public :: nkpath

Number of total k-points in the path

integer, public :: nkspecial

Number of special k-points in the path

real(kind=dp), public, allocatable :: kspecial(:,:)

List of special k-points in crystal coordinates

logical, public :: exist_qpath
integer, public :: nqpath

Number of total q-points in the path

integer, public :: nqspecial

Number of special q-points in the path

real(kind=dp), public, allocatable :: qspecial(:,:)

List of special q-points in crystal coordinates


Subroutines

public subroutine read_input(read_status)

This subroutine reads all namelists from standard input, and checks their validity and consistency.

Arguments

Type IntentOptional Attributes Name
logical :: read_status

public subroutine read_cards()

This subroutine reads K_PATH and Q_PATH cards from standard input if present.

Read more…

Arguments

None