Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: phonon linewidths #240

Open
2 tasks
ajjackson opened this issue Sep 20, 2022 · 0 comments
Open
2 tasks

Feature request: phonon linewidths #240

ajjackson opened this issue Sep 20, 2022 · 0 comments

Comments

@ajjackson
Copy link
Collaborator

ajjackson commented Sep 20, 2022

We acknowledge "reviewer 2" for this feature request. The wording is our own.

Moving beyond harmonic lattice dynamics, there is significant research interest in the effect of finite phonon lifetimes, which can be described by third-order force constants within Boltzmann transport theory. These limit thermal lattice conductivity, an important property for thermoelectric materials [where low k_latt is preferred] and power electronics [where high k_latt is preferred]. They also lead to Lorentzian line broadening which can be observed in neutron scattering spectra separately from the instrumental resolution limits.

The phonon linewidth is a property that varies along each phonon band. Currently Euphonic allows per-mode broadening parameters to be supplied when creating density-of-states spectra from QpointPhononModes, for adaptive broadening purposes. An equivalent feature does not exist for creating spectra from StructureFactor, which would be the natural place to implement Lorentzian lifetime broadening. By providing similar broadening parameters here it would be possible to create linewidth-broadened spectra through the Python API.

Some practical issues would remain in how the data is actually collected. As far as I can tell, Phono3py prefers to calculate this property on Monkhorst-Pack meshes and e.g. the thermoplotter package interpolates per-band data from this mesh. That could lead to ambiguities regarding degenerate and crossing bands? A very nice solution would be to use Brille for interpolation, but this relies on a special mesh of input q-points which may not be possible using Phono3py. Perhaps with further investigation there might be a way of doing it within the Phono3py API...

So there are two packages of work to implement this:

  • Support rendering of phonon linewidths in core Euphonic API by adding Lorentzian broadening options to StructureFactor.calculate_sqw_map and StructureFactor.calculate_1d_average.
  • Explore practical workflows for extracting this information from appropriate codes (most likely Phono3py or ShenBTE)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant