Skip to content

Generic Band interpolation

By setting geninterp=TRUE, postw90 will calculate the band energies (and possibly the band derivatives, if also geninterp_alsofirstder is set to TRUE) on a generic list of \(k\) points provided by the user.

The list of parameters of the Generic Band Interpolation module are summarized in Table geninterp Parameters. The list of input \(k\) points for which the band have to be calculated is read from the file named seedname_geninterp.kpt. The format of this file is described below.

Files

seedname_geninterp.kpt

INPUT. Read by postw90 if geninterp is true.

The first line is a comment (its maximum allowed length is 500 characters).

The second line must contain crystal (or frac) if the \(k\)-point coordinates are given in crystallographic units, i.e., in fractional units with respect to the primitive reciprocal lattice vectors. Otherwise, it must contain cart (or abs) if instead the \(k-\)point coordinates are given in absolute coordinates (in units of 1/Å) along the \(k_x\), \(k_y\) and \(k_z\) axes.

Note

Note on units: In the case of absolute coordinates, if \(a_{lat}\) is the lattice constant expressed in angstrom, and you want to represent for instance the point \(X=\frac {2\pi}{a_{lat}} [0.5, 0, 0]\), then you have to input for its \(x\) coordinate \(k_x = 0.5 * 2 * \pi / a_{lat}\). As a practical example, if \(a_{lat}=4\)Å, then \(k_x = 0.78539816339745\) in absolute coordinates in units of 1/Å.

The third line must contain the number \(n\) of following \(k\) points.

The following \(n\) lines must contain the list of \(k\) points in the format

kpointidx k1 k2 k3

where kpointidx is an integer identifying the given \(k\) point, and k1, k2 and k3 are the three coordinates of the \(k\) points in the chosen units.

seedname_geninterp.dat or seedname_geninterp_NNNNN.dat

OUTPUT. This file/these files contain the interpolated band energies (and also the band velocities if the input flag geninterp_alsofirstder is true).

If the flag geninterp_single_file is true, then a single file seedname_geninterp.dat is written by the code at the end of the calculation. If instead one sets geninterp_single_file to false, each process writes its own output file, named seedname_geninterp_00000.dat, seedname_geninterp_00001.dat, ...

This flag is useful when one wants to parallelize the calculation on many nodes, and it should be used especially for systems with a small number of Wannier functions, when one wants to compute the bands on a large number of \(k\) points (if the flag geninterp_single_file is true, instead, all the I/O is made by the root node, which is a significant bottleneck).

Note

Important! The files are not deleted before the start of a calculation, but only the relevant files are overwritten. Therefore, if one first performs a calculation and then a second one with a smaller number of processors, care is needed to avoid to mix the results of the older calculations with those of the new one. In case of doubt, either check the date stamp in the first line of the seedname_geninterp_*.dat files, or simply delete the seedname_geninterp_*.dat files before starting the new calculation.

To join the files, on can simply use the following command:

cat seedname_geninterp_*.dat > seedname_geninterp.dat

or, if one wants to remove the comment lines:

rm seedname_geninterp.dat
for i in seedname_geninterp_*.dat ; do grep -v \# "$i" >> \
seedname_geninterp.dat ; done

The first few lines of each files are comments (starting with #), containing a datestamp, the comment line as it is read from the input file, and a header. The following lines contain the band energies (and derivatives) for each band and \(k\) point (the energy index runs faster than the \(k\)-point index). For each of these lines, the first four columns contain the \(k\)-point index as provided in the input, and the \(k\) coordinates (always in absolute coordinates, in units of 1/Å). The fifth column contains the band energy.

If geninterp_alsofirstder is true, three further columns are printed, containing the three first derivatives of the bands along the \(k_x\), \(k_y\) and \(k_z\) directions (in units of eV\(\cdot\)Å).

The \(k\) point coordinates are in units of 1/Å, the band energy is in eV.