pace-neutrons / Euphonic

Euphonic is a Python package for efficient simulation of phonon bandstructures, density of states and inelastic neutron scattering intensities from force constants.
GNU General Public License v3.0
29 stars 11 forks source link

Gamma points and DOS calculations #244

Open ajjackson opened 2 years ago

ajjackson commented 2 years ago

I've hit another "fun" problem with LO-TO splitting in DOS calculations!

While we do suggest that the Gamma point is avoided for DOS calculations, it is quite likely to be included as part of some symmetrised selection of points. Indeed spglib can only produce symmetry-reduced Gamma-centered meshes.

However, when dipole terms are included, the Gamma point frequencies depend on the order q-points are specified, e.g. for the test quartz force constants

fc.calculate_qpoint_phonon_modes(np.array([[0., 0., 0.], [0.5, 0., 0.]])).frequencies[:, -1]

> [152.81266107583681 148.48620386064283] millielectron_volt

fc.calculate_qpoint_phonon_modes(np.array([[0., 0., 0.], [0., 0., 0.5]])).frequencies[:, -1]

> [154.00566951775016 150.66306582308405] millielectron_volt

This makes it difficult to compare sampling schemes as the seemingly-insignificant implementation detail of q-point order determines the resulting spectrum.

For band structure plots this behaviour is correct, but for DOS perhaps it would be more correct to use the Gamma-point without non-analytic corrections, even though other points near Gamma use it? Would it be appropriate to provide a way of disabling this at Gamma?

rebeccafair commented 2 years ago

Have you tried setting splitting=false in calculate_qpoint_phonon_modes? This should still apply the dipole correction to all q-points but just not the non-analytical correction at gamma.

ajjackson commented 2 years ago

Aha, I forgot that was there :facepalm: Yes, that seems to fix it perfectly and gets me back on track for sampling work.

I think we should consider using this setting for the euphonic-dos command-line tool as well as any automatic Debye-Waller factor calculations. (i.e. GP splitting should only be enabled for band-structure calculations.)