Supplied with a list of k-points this function will calculate the energy bands of bulk system.
List of arguments
An object returned from a previously performed self-consistent calculation for a BulkConfiguration.
Default:
None
A list of k-points, for example
[(0,0,0),(0.1,0.1,0.1),(0.5,0.5,0.5)], given in units of
the reciprocal lattice vectors.
Default:
None
The electron spin (up or down) must be defined for spin-polarized calculations.
Default:
None
The returned object from the function calculateEnergyBands() has the following two query methods:
int numberOfBands(): Returns the number of bands,
i.e. the number of energy levels for each k-point.
Array band(bandnumber): Returns a NumPy array,
which contains the energies of the band specified by the index
bandnumber. The maximum value of
bandnumber is
numberOfBands() - 1 and it must
therefore be represented by an integer between 0 and
numberOfBands() - 1.
Setup a line with 20 points from [0,0,0] to
[1,1,1] in the first Brillouin zone and calculate and print the
band structure along this line (for more elaborate examples, see Spin-polarized iron)
from ATK.KohnSham import * my_bulk = BulkConfiguration(...) scf = executeSelfConsistentCalculation(my_bulk) n_points = 20 brillouin_zone_line = [(float(i)/(n_points-1),)*3 for i in range(n_points)] for k in brillouin_zone_line: energy_bands = calculateEnergyBands(scf,[k]) for band_ix in range(energy_bands.numberOfBands()): energies = energy_bands.band(band_ix) print k, for E in energies: print E.inUnitsOf(eV), print
The k-points are dimensionless, and given in units of the reciprocal lattice vectors.
The zero-level energy for the band structure is the Fermi energy.