This keyword computes the phonon density of states (PDOS) using the mass-weighted velocity autocorrelation (VAC) function. The output is normalized such that the integral of the PDOS over all frequencies equals \(3N\), where \(N\) is the number of atoms. If this keyword appears in a run, the mass-weighted VAC function will be computed and directly used to compute the PDOS.

The results of these calculations will be written to mvac.out (for the mass-normalized VAC function) and dos.out (for the DOS).


For this keyword, the command looks like:

compute_dos <sample_interval> <Nc> <omega_max> [{<optional_arg>}]

with parameters defined as:

  • sample_interval: Sampling interval of the velocity data

  • Nc: Maximum number of correlation steps

  • omega_max: Maximum angular frequency \(\omega_{max}=2\pi\nu_{max}\) used in the PDOS calculation

The optional arguments (optional_arg) provide additional functionality by allowing special keywords. The keywords for this function are group and num_dos_points. These keywords can be used in any order but the parameters associated with each must follow directly.

The option group has two parameters:

group <group_method> <group>

where group_method is the grouping method to use for computation and group is the index of the group to use. If group is -1, it means to calculate the DOS for every group in the group_method. If each atom is in one group, one can get the per-atom DOS and then calculate the phonon participation ratio.

The option num_dos_points has one parameter:

num_dos_points <points>

where points is the number of frequency points to be used in the DOS calculation. It defaults to Nc if the num_dos_points option is not specified.


An example for the use of this keyword is:

compute_dos 5 200 400.0 group 1 2 num_dos_points 300

This means that you

  • want to calculate the PDOS

  • the velocity data will be recorded every 5 steps

  • the maximum number of correlation steps is 200

  • the maximum angular frequency you want to consider is \(\omega_{max} = 2\pi\nu_{max} =\) 400 THz

  • you would like to compute only over group 2 in group method 1

  • you would like the maximum angular frequency to be evenly divided into 300 points for output.


This keyword cannot be used in the same run as the compute_sdc keyword.