PhononBandstructure¶
- class PhononBandstructure(dynamical_matrix, configuration=None, route=None, points_per_segment=None, qpoints=None, number_of_bands=None, projection_list=None)¶
Analysis class for calculating the phonon bandstructure for a bulk configuration.
- Parameters:
dynamical_matrix (
DynamicalMatrix
) – The DynamicalMatrix to calculate the phonon bandstructure from.configuration (
BulkConfiguration
) – The configuration for which the vibrational modes should be calculated. If no calculator is attached to the configuration, the calculator from dynamical_matrix is used. Currently, configuration must be the same as the configuration from dynamical_matrix and is therefore not needed. Default: The configuration fromdynamical_matrix
route (list of str) – The route to take through the Brillouin-zone as a list of symmetry points of the unit cell, e.g.
['G', 'X', 'G']
. This option is mutually exclusive toqpoints
. Default: Unit-cell dependent route.points_per_segment (Positive int) – The number of points per segment of the route. Default:
20
.qpoints (list of lists of floats) – A list of 3-dimensional fractional q-points at which to calculate the energies of the bands e.g.
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.1], ...]
. The shape is (Q, 3) where Q is the number of q-points. This option is mutually exclusive toroute
, andpoints_per_segment
. Default: Unit-cell dependent route.number_of_bands (Positive int |
All
) – The number of bands. Default:All
(All bands are included).projection_list (
ProjectionList
) – A projection list object defining a projection. Default: If no projection list is specified all orbitals will be used.
- conductionBandEdge()¶
Override base method for getting the conduction band edge.
- directBandGap()¶
Override base method for getting the direct band-gap.
- evaluate()¶
- Returns:
The eigenvalues for the phonon bandstructure. The shape is (Q, B) where Q is the number of q-points and B is the number of bands.
- Return type:
PhysicalQuantity
of type energy
- indirectBandGap()¶
Override base method for getting the indirect band-gap.
- metatext()¶
- Returns:
The metatext of the object or None if no metatext is present.
- Return type:
str | None
- nlprint(stream=None)¶
Print a string containing an ASCII table useful for plotting the AnalysisSpin object.
- Parameters:
stream (python stream) – The stream the table should be written to. Default:
NLPrintLogger()
- qpoints()¶
- Returns:
The list of q-points at which the energies of the bands are calculated as a list of 3-dimensional fractional q-points. The shape is (Q, 3) where Q is the number of q-points.
- Return type:
list of lists of floats
- route()¶
- Returns:
The route through the Brillouin-zone as a list of symmetry points of the unit cell.
- Return type:
list of str
- setMetatext(metatext)¶
Set a given metatext string on the object.
- Parameters:
metatext (str | None) – The metatext string that should be set. A value of “None” can be given to remove the current metatext.
- uniqueString()¶
Return a unique string representing the state of the object.
- valenceBandEdge()¶
Override base method for getting the valence band edge.
Usage Examples¶
Calculate the PhononBandstructure of silicon using the TremoloXCalculator calculator with the Stillinger-Weber potential [1]:
# -------------------------------------------------------------
# Bulk configuration
# -------------------------------------------------------------
# Set up lattice
lattice = FaceCenteredCubic(5.4306*Angstrom)
# Define elements
elements = [Silicon, Silicon]
# Define coordinates
fractional_coordinates = [[0.0 , 0.0 , 0.0 ],
[0.25, 0.25, 0.25]]
# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
potentialSet = StillingerWeber_Si_1985()
calculator = TremoloXCalculator(parameters=potentialSet)
bulk_configuration.setCalculator(calculator)
# -------------------------------------------------------------
# Dynamical matrix
# -------------------------------------------------------------
dynamical_matrix = DynamicalMatrix(
configuration=bulk_configuration,
repetitions=Automatic,
atomic_displacement=0.01*Angstrom,
acoustic_sum_rule=False,
symmetrize=True,
finite_difference_method=Central,
)
# -------------------------------------------------------------
# Phonon bandstructure
# -------------------------------------------------------------
phonon_bandstructure = PhononBandstructure(
configuration=bulk_configuration,
dynamical_matrix=dynamical_matrix,
route=['G', 'X', 'W', 'L', 'G', 'K', 'X', 'U', 'W', 'K', 'L'],
points_per_segment=20,
number_of_bands=All
)
nlsave('si_phonon_bandstructure.nc', phonon_bandstructure)
Note
The PhononBandstructure can be visualized by selecting the file si_phonon_bandstructure.nc
in the Lab Floor of QuantumATK and opening it using the Bandstructure Analyzer or the 2D Plot tool.
Notes¶
The details of the force constant calculation to obtain the dynamical matrix, can be found under DynamicalMatrix.
To export the data of a PhononBandstructure, use the method nlprint.
Symmetry points of the Brillouin zones can be found in Bravais Lattices.