I realize that the more ordered the supercell is, the lower the number of displacements. Perhaps, we could say the same with respect to symmetry.

Is there anything that can be done to reduce the number of displacements required to be studied, like maybe some way to circumvent the need to study all possible displacements?

  • 2
    $\begingroup$ Good question +1. $\endgroup$ May 27 '20 at 22:38

You can (should) use symmetry to reduce the number of displacements needed to construct the matrix of force constants. A nice pratical description of how to do this can be found in the description of the PHON package by Dario Alfè. In short: if you have the force constants for displacing a given atom, and when you apply the symmetry operations of the crystal this atom is mapped to a second atom, then you can build the corresponding force constants for the second atom without having to calculate them explicitly, simply by using the symmetry transformation rules.


ProfM's answer gets the core idea perfectly right: Symmetry really is your best friend here. However, symmetry analysis is often quite involved, especially for larger unit cells.

I recently discovered the hiPhive package, which uses statistical fits (forces from random displacements fit to a force-constant potential), combined with with symmetry analysis (from spglib), to create a sparse representation of your potential energy surface.

I'm still learning the package myself, so I cannot go into much more detail, but the idea behind the package, very coarsely, is:

  1. Create a few supercells with random atomic displacements. The magnitude of the displacements may be small (~0.01 Angstroms) if you want purely harmonic phonons, or can be larger (~0.2 Angstroms) if you want the anharmonic force-constants too (for thermal conductivity, etc).
  2. Once the forces have been calculated for a fair number of disordered supercells (this is the most time-consuming part, since your forces are typically being calculated by a DFT code, and you may end up with ~500-600+ atoms), you can then proceed to use the hiPhive to generate a force-constant potential. There are tutorials on the website as well as the the method paper about what parameters to check for convergence, what controls convergence, etc.
  3. Once you have your force-constant potential (fcp), you can then use Phono3py or any other code that can generate/use force-constants, to get your dynamical properties of choice.

There is absolutely the question where convergence for a statistical/least-squares process is subtle, but the method paper (linked below) goes into at least some detail about the procedures to follow for a meaningful result from your calculations.


  1. The Hiphive Package for the Extraction of High‐Order Force Constants by Machine Learning

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.