Normal-Mode Analysis -------------------- Normal-mode analysis \ :ref:`54 `\ :ref:`56 ` can be performed using |Gromacs|, by diagonalization of the mass-weighted Hessian :math:`H`: .. math:: \begin{aligned} R^T M^{-1/2} H M^{-1/2} R &=& \mbox{diag}(\lambda_1,\ldots,\lambda_{3N}) \\ \lambda_i &=& (2 \pi \omega_i)^2\end{aligned} :label: eqnNMA where :math:`M` contains the atomic masses, :math:`R` is a matrix that contains the eigenvectors as columns, :math:`\lambda_i` are the eigenvalues and :math:`\omega_i` are the corresponding frequencies. First the Hessian matrix, which is a :math:`3N \times 3N` matrix where :math:`N` is the number of atoms, needs to be calculated: .. math:: \begin{aligned} H_{ij} &=& \frac{\partial^2 V}{\partial x_i \partial x_j}\end{aligned} :label: eqnNMAhessian where :math:`x_i` and :math:`x_j` denote the atomic x, y or z coordinates. In practice, this equation is not used, but the Hessian is calculated numerically from the force as: .. math:: \begin{aligned} H_{ij} &=& - \frac{f_i({\bf x}+h{\bf e}_j) - f_i({\bf x}-h{\bf e}_j)}{2h} \\ f_i &=& - \frac{\partial V}{\partial x_i}\end{aligned} :label: eqnNMAhessianfromforce where :math:`{\bf e}_j` is the unit vector in direction :math:`j`. It should be noted that for a usual normal-mode calculation, it is necessary to completely minimize the energy prior to computation of the Hessian. The tolerance required depends on the type of system, but a rough indication is 0.001 kJ mol\ :math:`^{-1}`. Minimization should be done with conjugate gradients or L-BFGS in double precision. A number of |Gromacs| programs are involved in these calculations. First, the energy should be minimized using :ref:`mdrun `. Then, :ref:`mdrun ` computes the Hessian. **Note** that for generating the run input file, one should use the minimized conformation from the full precision trajectory file, as the structure file is not accurate enough. :ref:`gmx nmeig` does the diagonalization and the sorting of the normal modes according to their frequencies. Both :ref:`mdrun ` and :ref:`gmx nmeig` should be run in double precision. The normal modes can be analyzed with the program :ref:`gmx anaeig`. Ensembles of structures at any temperature and for any subset of normal modes can be generated with :ref:`gmx nmens`. An overview of normal-mode analysis and the related principal component analysis (see sec. :ref:`covanal`) can be found in \ :ref:`57 `.