There are several ways to use symmetry to compute phonons, but the one that gets the most speedup is also the simplest to implement : just compute phonons in the irreducible bz and unfold them onto the full set of q points. For each q point in the ibz, just use the full unfolded set of kpoints, like we do now. A second optimization step would be to optimize the computation of high symmetry q points, but the speedup is less and the implementation more annoying so let's not do it.
@copilot go for it. Start by writing out the math of how dynamical matrices transform under symmetry. Find the relevant code in response/ as well as in symmetry.jl. Write a test that computes the dynamical matrix at a point q not in the IBZ by getting it from symmetries and a computation of a q inside the ibz, and comparing to the direct computation. Once this works you can hook it into the computation of the full dynamical matrix for all q.
There are several ways to use symmetry to compute phonons, but the one that gets the most speedup is also the simplest to implement : just compute phonons in the irreducible bz and unfold them onto the full set of q points. For each q point in the ibz, just use the full unfolded set of kpoints, like we do now. A second optimization step would be to optimize the computation of high symmetry q points, but the speedup is less and the implementation more annoying so let's not do it.
@copilot go for it. Start by writing out the math of how dynamical matrices transform under symmetry. Find the relevant code in response/ as well as in symmetry.jl. Write a test that computes the dynamical matrix at a point q not in the IBZ by getting it from symmetries and a computation of a q inside the ibz, and comparing to the direct computation. Once this works you can hook it into the computation of the full dynamical matrix for all q.