The phonon contribution module
Longitudinal and off-diagonal phonon contribution
- class cij.core.phonon_contribution.nonshear.ElasticModulus
Bases:
object
- class cij.core.phonon_contribution.nonshear.LongitudinalElasticModulusPhononContribution(calculator, e)
Bases:
ElasticModulus
Represents the phonon part of the longitudinal thermal elastic modulus \(c^\text{ph}_{ii}(T, V)\)
\[c^\text{ph}_{ii}(T, V) = c^\text{zpm}_{ii}(V) + c^\text{th}_{ii}(T, V)\]- Parameters
calculator (cij.core.calculator.Calculator) –
e (
Tuple
[ndarray
,ndarray
]) – the “strain” corresponding to the subscript (\(e_i/\Delta\) and e_j/Delta) for calculating strain-Gruneisen parameter \(\gamma^{ii}_{qm}\) from mode-Gruneisen parameter \(\gamma_{qm}\).
- property Q
Value of expression \(Q_{qm}(T, V)\)
\[Q_{qm}(T, V) = \frac{\hbar\omega_{qm}(V)}{k_\text{B}T}\]
- property Q1
Value of expression
\[\frac{Q_{qm}(T, V)}{\exp Q_{qm}(T, V) - 1}\]where \(Q_{qm}(T, V) = \frac{\hbar\omega_{qm}(V)}{k_\text{B}T}\)
- property Q2
Value of expression
\[\frac{Q_{qm}^2(T, V) \exp Q_{qm}(T, V) }{(\exp Q_{qm}(T, V) - 1) ^ 2}\]where \(Q_{qm}(T, V) = \frac{\hbar\omega_{qm}(V)}{k_\text{B}T}\)
- average_over_modes(amount)
- property freq_array: ndarray
- property isothermal_to_adiabatic
The difference between isothermal \(c^\text{T}_{ij}\) and adiabatic \(c^\text{S}_{ij}\) thermal elastic modulus
\[c^\text{S}_{ij} - c^\text{T}_{ij} = \frac{T}{V C_{V}} \frac{\partial S}{\partial e_{i i}} \frac{\partial S}{\partial e_{j j}}\]
- property mode_gamma
Values related to the strain-Grüneisen parameter
- property prefactors
- property q_weights: ndarray
The \(q\)-points multiplicities or weights \(w_{q}\)
- property t_array: ndarray
- property thermal_contribution
The thermal contribution \(c^\text{th}\) to the vibrational part of the longitudinal elastic modulus (\(c_{iiii}\)).
\[\]
- property v_array: ndarray
- property value_adiabatic
The adiabatic elastic modulus \(c^\text{S}_{ij}(T, V)\) as a function of temperature and volume, valid only for longitudinal and off-diagonal elastic modulus (\(i,j=1,2,3\))
\[c^\text{S}_{ij} = \frac{T}{V C_{V}} \frac{\partial S}{\partial e_{i i}} \frac{\partial S}{\partial e_{j j}} + c^\text{T}_{ij}\]
- property value_isothermal
The phonon part of the elastic constant \(c^\text{ph}_{ij}\) as a function of temeprature and volume
\[c^\text{ph}_{ij}(T, V) = c^\text{zpm}_{ij}(V) + c^\text{th}_{ij}(T, V)\]
- property zero_point_contribution
The zero-point motion contribution to the vibrational part of the longitudinal elastic modulus (\(c_{iiii}\), \(i = 1-3\)).
\[c^{\text{zpm}}_{iiii} = \frac{\hbar}{2V}\sum_{qm} \left(\frac{\partial^2\omega_{qm} (V)}{\partial e_{ii} ^ 2}\right) = \frac{\hbar}{2V}\sum_{qm} \left(\gamma^{ii}_{qm}\gamma^{ii}_{qm} - \frac{\partial \gamma^{ii}_{qm}}{\partial e_{ii}} + \gamma^{ii}_{qm}\right) \omega_{qm}\]
- class cij.core.phonon_contribution.nonshear.OffDiagonalElasticModulusPhononContribution(calculator, e)
Bases:
LongitudinalElasticModulusPhononContribution
- property mode_gamma
Values related to the strain-Grüneisen parameter
- property prefactors
- property thermal_contribution
The thermal contribution to the vibrational part of the longitudinal elastic modulus (\(c^\text{th}_{iijj}\), \(i,j = 1-3\), \(i \neq j\)).
\[c^{\text{th}}_{iijj} = \frac{k_{\mathrm{B}} T}{V} \sum_{q m} \frac{\partial^{2}\left[\ln \left(1-e^{-Q_{q m}}\right)\right]}{\partial e_{i i} \partial e_{j j}} = \]
- property value_isothermal
The phonon part of the elastic constant \(c^\text{ph}_{ij}\) as a function of temeprature and volume
\[c^\text{ph}_{ij}(T, V) = c^\text{zpm}_{ij}(V) + c^\text{th}_{ij}(T, V)\]
- property zero_point_contribution
The zero-point motion contribution to the vibrational part of the longitudinal elastic modulus (\(c^\text{zpm}_{iijj}\), \(i,j = 1-3\), \(i \neq j\)).
\[c^{\text{zpm}}_{iijj} = \frac{\hbar}{2V}\sum_{qm} \left(\frac{\partial^2\omega_{qm} (V)}{\partial e_{ii} \partial e_{jj}}\right) = \frac{\hbar}{2V}\sum_{qm} \left(\gamma^{ii}_{qm}\gamma^{jj}_{qm} - \frac{\partial \gamma^{ii}_{qm}}{\partial e_{jj}}\right) \omega_{qm}\]
- cij.core.phonon_contribution.nonshear.average_over_modes(amount, q_weights)
Calculate sum of physical quantity over \(3N\) phonon modes and \(N_q\) \(q\)-points (\(\sum_{qm}\)) except for accoustic modes at Gamma point (first \(q\)-point and first three modes).
- Parameters
amount (
ndarray
) – \(X_{qm}\)q_weights (
ndarray
) – \(q\)-point multiplicities \(w_q\)
- Return type
ndarray
- Returns
Sum \(\bar X = \sum_{qm} X_{qm} w_q\)
- cij.core.phonon_contribution.nonshear.clear_gamma_point(mat)
Shear phonon contribution
- class cij.core.phonon_contribution.shear.ShearElasticModulusPhononContribution(strain, key, calculator=None)
Bases:
object
- property fictitious_strain
The fictitious strain
- property fictitious_strain_energy: ndarray
The strain energy for the fictitious strain under the original coordinate system except for the unknown
- property fictitious_strain_energy_rotated: ndarray
The strain energy for the fictitious strain under the rotated coordinate system
- property fictitious_strain_rotated
The fictitious strain in the rotated coordinate system
- get_elastic_modulus(key)
- Return type
ndarray
- get_elastic_modulus_rotated(key)
- Return type
ndarray
- get_modulus_keys()
- get_modulus_keys_rotated()
- get_target_elastic_modulus()
The elastic modulus need to be calculated from the difference in fictitious strain energy of the rotated coordinate system and the known terms in the original coordinate.
- Return type
ndarray
- property strain_rotated
- property transformation_matrix
The transformation matrix
- property value_adiabatic
- property value_isothermal
- cij.core.phonon_contribution.shear.calculate_fictitious_strain_energy(fictitious_strain, resolve_elastic_modulus, target=None)
Calculate the strain energy for under given coordinate system, ignore the unknown.
- Parameters
fictitious_strain (
ndarray
) – the fictitious strain where strain energy is calculatedresolve_elastic_modulus (
callable
) – the function used to get elastic modulustarget (
Optional
[ModulusRepresentation
]) – the key for the elastic modulus
- Return type
ndarray
- cij.core.phonon_contribution.shear.get_fictitious_strain_energy_keys(fictitious_strain, target=None)
- Return type
ndarray