# DeformationPotential¶

class DeformationPotential(configuration, hamiltonian_derivatives, dynamical_matrix, symmetry_label=None, kpoint_cartesian=None, kpoint_fractional=None, q_route=None, points_per_segment=None, q_path=None, electron_bands=None, phonon_modes=None, max_interaction_range=None, rotate_to_pure_spin_states=None)

Constructor for the DeformationPotential object.

Parameters: configuration (BulkConfiguration) – The BulkConfiguration for which to calculate the deformation potential. hamiltonian_derivatives (HamiltonianDerivatives) – The Hamiltonian derivatives for the configuration. dynamical_matrix (DynamicalMatrix) – The dynamical matrix for the configuration. symmetry_label (str) – The kpoint (as a symmetry point) for which to calculate the deformation potential. This option is mutually exclusive to kpoint_cartesian and kpoint_fractional. Default: ‘G’ (Gamma-point) kpoint_cartesian (PhysicalQuantity of type inverse length) – The kpoint (in Cartesian coordinates) for which to calculate the deformation potential. This option is mutually exclusive to symmetry_label and kpoint_fractional. Default: [0.0, 0.0, 0.0] * Angstrom**-1 Gamma-point kpoint_fractional (list(3) of floats) – The kpoint (in fractional coordinates) for which to calculate the deformation potential. This option is mutually exclusive to kpoint_cartesian and symmetry_label. Default: [0.0, 0.0, 0.0] Gamma-point q_route (list of symmetry points, e.g. ['G', 'X', 'G']) – The route to take through the Brillouin-zone. This option is mutually exclusive to q_path. Default: None points_per_segment (int) – The number of points per segment of the route. This option is mutually exclusive to q_path. Default: 20 q_path (list of list of floats) – List of fractional q-points. This option is mutually exclusive to q_route and points_per_segment. The shape of the list is (:, 3), e.g. [[0.0, 0.0, 0.0], [0.25, 0.0, 0.0], [0.5, 0.0, 0.0]]. Default: None electron_bands (list of ints | All) – The band indices of the Bloch states to include. Default: All Include all bands. phonon_modes (list of ints | All) – Phonon modes to include. Default: All Include all phonon modes. maximum_interaction_range (PhysicalQuantity of type length) – Set the maximum range of the interactions in the HamiltonianDerivatives. Default: None rotate_to_pure_spin_states (bool) – Whether the eigenstates should be rotated to pure spin states or not. Default: True for Unpolarized, Polarized and Noncollinear, False for SpinOrbit
couplingMatrix()

Query method for the coupling matrix calculated in the Bloch basis.

Returns: Electron-phonon coupling matrix calculated with the ElectronPhononCoupling object. The shape of the coupling matrix is (number_of_spins, number_of_phonon_modes, number_of_kpoints, number_of_qpoints, number_of_electron_bands). PhysicalQuantity of type energy
eigenvaluesK()

Query method for the electron Bloch state energies as a function of k.

Returns: The electron Bloch state energies as a function of k. The shape of the array is (number_of_spins, number_of_kpoints, number_of_electron_bands). PhysicalQuantity of type energy
eigenvaluesKMinusQ()

Query method for the electron Bloch state energies as a function of k-q.

Returns: The electron Bloch state energies as a function of k-q. The shape of the array is (number_of_spins, number_of_kpoints, number_of_qpoints, number_of_electron_bands). PhysicalQuantity of type energy
eigenvaluesKPlusQ()

Query method for the electron Bloch state energies as a function of k+q.

Returns: The electron Bloch state energies as a function of k+q. The shape of the array is (number_of_spins, number_of_kpoints, number_of_qpoints, number_of_electron_bands). PhysicalQuantity of type energy
electronBands()

Query method for the electron bands.

Returns: The list of electronic band indices used in the calculation. list of int
evaluate()

Query method for the electron-phonon coupling matrix.

Returns: Electron-phonon coupling matrix (unscaled) calculated with the ElectronPhononCoupling object. The shape of the coupling matrix is (n_spins, n_modes, n_kpoints, n_qpoints, n_bloch_states, n_bloch_states). PhysicalQuantity with the unit eV / Angstrom
fitDeformationPotential(mode=None, initial_band=None, final_band=None, spin=None, first_q_index=None, last_q_index=None, coupling_matrix=None)

Method for fitting the deformation potential for a particular phonon mode.

Parameters: mode (int) – Phonon mode index. Default: The first mode calculated initial_band (int) – Quantum number (band index) of the initial Bloch state. Default: The first band calculated final_band (int) – Quantum number (band index) of the final Bloch state. Default: The last band calculated spin (Spin.Up | Spin.Down) – The spin flag. Default: Spin.Up first_q_index (int) – Index of the first q-point to consider in the fit. Default: 0 last_q_index (int) – Index of the last q-point to consider in the fit. Default: Last index coupling_matrix ('scaled' | 'unscaled') – String indicating if the scaled or unscaled coupling matrix should be plotted. Default: 'unscaled' Fitted zeroth, first-order deformation potentials, model deviation and R squared. PhysicalQuantity, PhysicalQuantity, PhysicalQuantity, numpy.array
kpoint()

Query method for the k-point.

Returns: The k-point the deformation potential is calculated for. numpy.array
metatext()
Returns: The metatext of the object or None if no metatext is present. str | unicode | 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()
phononEnergies()

Query method for the phonon energies.

Returns: The phonon energies as a function of q. The shape of the array is (number_of_degrees_of_freedom, number_of_qpoints), where number_of_degrees_of_freedom = 3*number_of_atoms. PhysicalQuantity of type energy
phononModes()

Query method for the phonon modes.

Returns: The list of phonon mode indices used in the calculation. list of int.
qRoute()

Query method for the q-route.

Returns: The route to taken through the Brillouin-zone in the calculation. list of str
qpoints()

Query method for the q-points.

Returns: The list of fractional q-points used in the calculation. list
setMetatext(metatext)

Set a given metatext string on the object.

Parameters: metatext (str | unicode | None) – The metatext string that should be set. A value of “None” can be given to remove the current metatext.
unscaledCouplingMatrix()

Query method for the unscaled electron-phonon coupling matrix.

Returns: Electron-phonon coupling matrix calculated with the ElectronPhononCoupling object. The shape of the coupling matrix is (number_of_spins, number_of_phonon_modes, number_of_kpoints, number_of_qpoints, number_of_electron_bands). PhysicalQuantity with the unit eV / Angstrom

## Usage Examples¶

Calculate the deformation potential in graphene for different wave-vector paths in reciprocal space, specified by symmetry points connected by linear segments or a series of fractional q-points:

# -------------------------------------------------------------
# Bulk configuration
# -------------------------------------------------------------
lattice = Hexagonal(2.4612*Angstrom, 6.709*Angstrom)

elements = [Carbon, Carbon]

fractional_coordinates = [[0.0           , 0.0           , 0.5],
[0.333333333333, 0.666666666667, 0.5]]

bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=(5, 5, 1),
)

calculator = LCAOCalculator(
numerical_accuracy_parameters=numerical_accuracy_parameters,
)

bulk_configuration.setCalculator(calculator)
bulk_configuration.update()

# -------------------------------------------------------------
# Hamiltonian derivatives
# -------------------------------------------------------------
hamiltonian_derivatives = HamiltonianDerivatives(
bulk_configuration,
repetitions=(5, 5, 1),
)

# -------------------------------------------------------------
# Dynamical matrix
# -------------------------------------------------------------
dynamical_matrix = DynamicalMatrix(
bulk_configuration,
repetitions=(5, 5, 1),
max_interaction_range=10*Angstrom,
)

# -------------------------------------------------------------
# Deformation potential
# -------------------------------------------------------------
deformation_potential_1 = DeformationPotential(
bulk_configuration,
hamiltonian_derivatives,
dynamical_matrix,
symmetry_label='L',
q_route=['G', 'M', 'L', 'A', 'G', 'K', 'H', 'A'],
points_per_segment=30,
electron_bands=[0, 1, 2],
phonon_modes=[0, 1],
)

nlsave('graphene.nc', deformation_potential_1)

deformation_potential_2 = DeformationPotential(
bulk_configuration,
hamiltonian_derivatives,
dynamical_matrix,
kpoint_fractional=[0.0, 0.0, 0.5],
q_path=[[0.0, 0.0, 0.0], [0.2, 0.0, 0.0], [0.3, 0.0, 0.0], \
[0.4, 0.0, 0.0], [0.45, 0.0, 0.0], [0.5, 0.0, 0.0]],
electron_bands=[0, 1, 2],
phonon_modes=[0, 1],
)

nlsave('graphene.nc', deformation_potential_2)


deformation_potential.py