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.


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$ Commented May 3, 2020 at 17:43
  • 1
    $\begingroup$ And can you post a source where I can read more on this, if possible. $\endgroup$ Commented May 3, 2020 at 17:44
  • 3
    $\begingroup$ @rashid You’re welcome :) Yes LAMMPS by using fix phonon command. See in answer. $\endgroup$ Commented May 3, 2020 at 17:44
  • 2
    $\begingroup$ @rashid See more information here: lammps.sandia.gov/doc/fix_phonon.html $\endgroup$ Commented May 3, 2020 at 17:46
  • 1
    $\begingroup$ Great. Thanks again! $\endgroup$ Commented 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 .