ComplexBandstructure — Class for representing the complex band structure for a given configuration and calculator.
Constructor for the ComplexBandstructure object.
The bulk configuration with attached calculator for which the complex bandstructure should be calculated.
Type: A BulkConfiguration.
Default:
None
The energies for which the complex bandstructure should be calculated.
Type: List containing elements of the type PhysicalQuantity of with energy unit.
Default:
numpy.linspace(-2, 2, 101)*eV
The k-point (in the A-B plane) for which the complex bandstructure should be calculated.
Type: Tuple of length 2
Default:
(0, 0)
Specifies the choice for the energy zero.
Type: FermiLevel | AbsoluteEnergy.
Default:
FermiLevel.
A ComplexBandstructure object provides the following methods:
energies(): Query function for the energies
energyZero(): Return the energy zero
evaluate(spin): Method for obtaining the complex bandstructure k vectors,
i.e. the touple (k_propagating, k_decaying)
fermiLevel(): Return the Fermi level in absolute energy
fermiTemperature(): Return the Fermi_temperatures
kPoint(): Query function for the k_point
nlprint(stream): Print a string containing an ASCII table useful for plotting the complex bandstructure.
repetition(): Return the repetition used
spins(): Query function for the spins
Calculate the complex bandstructure of silicon in the (100) direction and save it to a file
# Set up si (100) surface
bulk_configuration = BulkConfiguration(
bravais_lattice=SimpleTetragonal(3.84*Angstrom, 5.43*Angstrom),
elements=[Silicon, Silicon, Silicon, Silicon],
fractional_coordinates=[[0.0, 0.0, 0.00],
[0.5, 0.0, 0.25],
[0.5, 0.5, 0.50],
[0.0, 0.5, 0.75]]
)
# Define calculator
calculator = SlaterKosterCalculator(
basis_set=Vogl.Si_Basis,
numerical_accuracy_parameters=NumericalAccuracyParameters(
k_point_sampling=(4, 4, 2))
)
bulk_configuration.setCalculator(calculator)
# Calculate and save the complex bandstructure
complex_bandstructure = ComplexBandstructure(
configuration=bulk_configuration,
energies=numpy.linspace(-2,2,501)*eV,
)
nlsave('si_complex_band.nc', complex_bandstructure)
nlprint(complex_bandstructure)
Figure 10: Complex bandstructure for Silicon in the (100) direction. The right part of the plots illustrates the real bands, while the left hand side of the plot shows the complex bands.
The complex bandstructure is obtained by for a specified energy,
and
parallel k-point
finding the eigenstates,
, with no imposed boundary conditions in the z
direction,
We may write the eigenstates as
where
is a periodic function and
is a complex
number.
To calculate the complex bandstructure you must have a BulkConfiguration that could be used as a valid electrode in a DeviceConfiguration. This means that the geometry must be sufficiently long in the z-direction(typically > 7 Å), such that there are only matrix elements with atoms in the nearest cell along the z-direction.
In case the cell is too small in the z-direction, the structure will automatically be repeated along the z-direction. The repetition will give rise to zone folding of the calculated bands.
To print the data of a complex bandstructure, use the method nlprint.