velph.toml-[vasp] section#
The [vasp] section is the largest part of velph.toml. It stores the VASP
INCAR tags, k-point sampling, and job-script settings used to generate the
input files of each calculation of the workflow.
The settings of one kind of calculation are called an input set, and each input
set is a sub-section [vasp.<input set>]. The generate command of an input set,
for example velph relax generate for [vasp.relax], writes the VASP input
files in the directory of the same name. The input sets are:
Input set |
Purpose |
Subcommand |
Written by |
|---|---|---|---|
|
Crystal structure relaxation |
always |
|
|
Dielectric constant and Born effective charges |
always |
|
|
Supercells for derivatives of potentials/PAW strengths |
with |
|
|
Supercells for phonon (phonopy) |
with |
|
|
Supercells for anharmonic phonon (phono3py) |
with |
|
|
Fan self-energy (electron-phonon) |
|
with |
|
Transport properties (electron-phonon) |
|
with |
|
Electronic band structure |
|
always |
|
Electronic density of states |
|
always |
|
Phonon band structure |
|
with |
The VASP input files of relax are written in relax/iter1, relax/iter2, ….
Those of the supercells of phelel are written in phelel/disp-000,
phelel/disp-001, …, and those of phonopy and phono3py in the same way.
Common sub-block structure#
Every input set is built from the following kinds of sub-blocks:
[vasp.<input set>.incar] # INCAR tags
[vasp.<input set>.kpoints] # k-point sampling mesh
[vasp.<input set>.kpoints_dense] # dense mesh (only some input sets)
[vasp.<input set>.kpoints_opt] # band path (el_bands only)
[vasp.<input set>.qpoints] # q-point path (ph_bands only)
[vasp.<input set>.scheduler] # job-script settings of this input set
Each k-point block is written to one k-point file of VASP:
Input set |
|
Second k-point file |
|---|---|---|
|
|
— |
|
|
|
|
|
|
|
|
|
|
|
|
In velph.toml, the k-point blocks of this table are required. incar and
scheduler are optional:
incaris written byvelph initfor all input sets.scheduleris optional. When present, it overrides the top-level [scheduler] settings for this input set only.
The relax and nac sections also have a cell key, which is required in
velph.toml:
[vasp.relax]
cell = "unitcell"
[vasp.nac]
cell = "primitive"
cell selects whether the unit cell or the primitive cell is used for that input
set. The defaults of velph init are unitcell for relax and primitive for
nac, and they can be set with the velph init options --cell-for-relax and
--cell-for-nac (see velph init). The value is "unitcell" or
"primitive", compared in lower case. Any other value, such as
"primitive_cell", is an error in velph init and in the generate commands.
The other input sets use a fixed cell: the supercells with displacements for
phelel, phonopy and phono3py, and [primitive_cell] for the others.
INCAR settings#
Each input set holds all of its INCAR tags in [vasp.<input set>.incar]. The
generate command of the input set writes them to the INCAR file as they are.
[vasp.phelel.incar]
ismear = 0
sigma = 0.01
ediff = 1e-08
encut = 500
prec = "accurate"
lreal = false
lwave = false
lcharg = false
elph_prepare = true
isym = 0
INCAR tags are written as plain key-value pairs. Tag names are case-insensitive
and are normalized to lower case. A tag given twice in different cases, such as
encut and ENCUT, is an error.
velph always writes the k-point files from the k-point blocks described below.
For this reason, the VASP tags kspacing and elph_kspacing, which make VASP
generate the k-points without these files, cannot be written in an INCAR
section. If a template has one of them, velph init stops with an error, and if
a velph.toml has one of them, the generate commands stop with an error. To give
the k-point mesh by a spacing, write kspacing in a k-point block of the
template instead (see [vasp.<input set>.kpoints] : sampling mesh).
[vasp.<input set>.kpoints] : sampling mesh#
A k-point block of velph.toml gives a regular sampling mesh with the following
keys:
[vasp.phelel.kpoints]
mesh = [4, 4, 4]
shift = [0.5, 0.5, 0.5]
mesh: either three integers for a Gamma-centered grid, or a 3x3 integer matrix for a generalized regular grid:[vasp.phelel.kpoints] mesh = [ [-4, 4, 4], [4, -4, 4], [4, 4, -4], ]
shift: optional shift of the mesh relative to neighboring grid points, in units of the grid spacing.0.5is a half-grid shift.
In a template of velph init, a k-point block can give kspacing, a spacing in
1/Angstrom, instead of mesh:
[vasp.relax.kpoints]
kspacing = 0.2
velph init computes the mesh from it on the cell of the input set and writes
the mesh as mesh in velph.toml. The number of divisions along each
reciprocal basis vector b_i is max(1, ceiling(|b_i| 2π / kspacing)), the same
rule as the VASP INCAR tag KSPACING. Give either mesh or kspacing in one
block. A block that gives neither takes the kspacing or kspacing_dense option
of velph init (see velph init).
[vasp.<input set>.kpoints_dense]#
The electron-phonon input sets (selfenergy,
transport) use a second, denser mesh for the
charge-density part of the sandwich calculation, and el_dos uses it as the mesh
on which VASP computes the density of states. It has the same syntax as
kpoints:
[vasp.transport.kpoints]
mesh = [12, 12, 12]
[vasp.transport.kpoints_dense]
mesh = [24, 24, 24]
Band and q-point paths (kpoints_opt, qpoints)#
Band-structure input sets add a line-mode block on top of the regular kpoints
mesh:
[vasp.el_bands.kpoints_opt]for the electronic band structure.[vasp.ph_bands.qpoints]for the phonon band structure.
Both use the same line-mode syntax:
[vasp.ph_bands.qpoints]
line = 51
path = [
[ [0.000000, 0.000000, 0.000000], [0.500000, 0.000000, 0.500000] ],
[ [0.500000, 0.000000, 0.500000], [0.500000, 0.250000, 0.750000] ],
]
label = [
[ "GAMMA", "X" ],
[ "X", "W" ],
]
line: number of sampling points per path segment. It is required, andvelph initwritesline = 51.path: a list of segments, each segment being a pair of endpoints in fractional coordinates of the reciprocal basis of[primitive_cell].label: optional labels for the endpoints of each segment, used when plotting.
velph init writes line only. When path is not given, the generate command
writes the band path that seekpath gives, so seekpath has to be installed.
For el_bands, the regular [vasp.el_bands.kpoints] mesh is still required
(VASP reads it as the self-consistent mesh), and the band path is given in the
kpoints_opt block. For ph_bands, [vasp.ph_bands.kpoints] is the
Gamma-only SCF mesh, and the q-point path is given in qpoints.
[vasp.<input set>.scheduler]#
A scheduler block of an input set overrides the top-level [scheduler]
settings for that input set only. Any key written here replaces the
corresponding key of [scheduler]; keys that are not written are inherited.
Without the top-level [scheduler], _job.sh is not written. See
velph.toml-[scheduler] section for the full description of the scheduler mechanism
and the scheduler_template format.
[scheduler]
job_name = "PbTe"
pe = "vienna 24"
...
[vasp.phono3py.scheduler]
pe = "paris 24"
Section ordering#
velph init writes the input sets in the order of the table at the top of this
page. Only the input sets
relevant to the chosen codes are written. The ordering has no semantic meaning;
TOML sections can appear in any order.