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
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
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.