How would one obtain the phonon dispersion curve from a molecular dynamics simulation trajectory? What are the steps involved? Are there any packages that does this? If so, please mention them.

  • 1
    $\begingroup$ I'm very interested in this! $\endgroup$ May 3, 2020 at 14:49

2 Answers 2


You are basically looking for finding phonon frequencies with respect to $\mathbf{q}$ the scattering vector in reciprocal space. From fluctuation-dissipation theory, the force constants of the system in the reciprocal space is given by:

$$\Phi_{k\alpha,k^{'}\beta}(\mathbf{q}) = k_{B}T \mathbf{G}^{-1}_{k\alpha,k^{'}\beta}(\mathbf{q})$$

$\mathbf{G}$ is the green function defined as:

$$\mathbf{G}_{k\alpha,k^{'}\beta}(\mathbf{q}) = \langle \mathbf{u}_{k\alpha}(\mathbf{q}) \cdot \mathbf{u}_{k^{'}\beta}^{*}(\mathbf{q}) \rangle$$

$\langle...\rangle$ is the ensemble average and $\mathbf{u}_{k\alpha}$ is $\alpha$ component of atomic displacement for $k$-th atom:

$$\mathbf{u}_{k\alpha}(\mathbf{q}) = \sum_{\ell}\mathbf{u}_{k\alpha}^{\ell}\exp{(i\mathbf{q}\cdot \mathbf{r}_{\ell})}$$

We could calculate Green function based on the instantaneous position of atoms ($\mathbf{R}$) and their ensemble average as:

$$\mathbf{G}_{k\alpha,k^{'}\beta}(\mathbf{q}) = \langle \mathbf{R}_{k\alpha}(\mathbf{q}) \cdot \mathbf{R}^{*}_{k^{'}\beta}(\mathbf{q})\rangle - \langle \mathbf{R}\rangle_{k\alpha} (\mathbf{q}) \cdot \langle \mathbf{R} \rangle^{*}_{k^{'}\beta}(\mathbf{q})$$

Now the dynamical matrix $\mathbf{D}$ is calculated as:

$$\mathbf{D}_{k\alpha,k^{'}\beta}(\mathbf{q}) = (m_{k}m_{k^{'}})^{-\frac{1}{2}} \Phi_{k\alpha,k^{'}\beta}(\mathbf{q})$$

The eigenvalues of this matrix are phonon frequencies at $\mathbf{q}$ and if you plot them versus $\mathbf{q}$ you would get the phonon dispersion curve. This is done in LAMMPS by using fix phonon command.

  • $\begingroup$ Great answer. Thanks. Are there / do you know any packages which has implemented this computation. $\endgroup$ May 3, 2020 at 17:43
  • 1
    $\begingroup$ And can you post a source where I can read more on this, if possible. $\endgroup$ May 3, 2020 at 17:44
  • 3
    $\begingroup$ @rashid You’re welcome :) Yes LAMMPS by using fix phonon command. See in answer. $\endgroup$ May 3, 2020 at 17:44
  • 2
    $\begingroup$ @rashid See more information here: lammps.sandia.gov/doc/fix_phonon.html $\endgroup$ May 3, 2020 at 17:46
  • 1
    $\begingroup$ Great. Thanks again! $\endgroup$ May 3, 2020 at 17:48

I think one could try to utilize a functionality of hiPhive or TDEP to fit the data from MD-simulations. hiPhive is probably an easier way since it is installed pretty easy using pip. In case of hiPhive once the force-field trained on the MD data is created, generation of the phonon spectrum is straightforward and discussed in the tutorial section.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .