Generate atomic displacements of phonon modes.

        The design of this feature is not very satisfactory, and thus API.
        Therefore it should be reconsidered someday in the fugure.

        Parameters
        ----------
        dimension : array_like
           Supercell dimension with respect to the primitive cell.
           dtype='intc', shape=(3, ), (3, 3), (9, )
        phonon_modes : list of phonon mode settings
           Each element of the outer list gives one phonon mode information:

               [q-point, band index (int), amplitude (float), phase (float)]

           In each list of the phonon mode information, the first element is
           a list that represents q-point in reduced coordinates. The second,
           third, and fourth elements show the band index starting with 0,
           amplitude, and phase factor, respectively.

def set_modulations(self,
                        dimension,
                        phonon_modes,
                        delta_q=None,
                        derivative_order=None,
                        nac_q_direction=None):
        """Generate atomic displacements of phonon modes.

        The design of this feature is not very satisfactory, and thus API.
        Therefore it should be reconsidered someday in the fugure.

        Parameters
        ----------
        dimension : array_like
           Supercell dimension with respect to the primitive cell.
           dtype='intc', shape=(3, ), (3, 3), (9, )
        phonon_modes : list of phonon mode settings
           Each element of the outer list gives one phonon mode information:

               [q-point, band index (int), amplitude (float), phase (float)]

           In each list of the phonon mode information, the first element is
           a list that represents q-point in reduced coordinates. The second,
           third, and fourth elements show the band index starting with 0,
           amplitude, and phase factor, respectively.

        """
        if self._dynamical_matrix is None:
            msg = ("Dynamical matrix has not yet built.")
            raise RuntimeError(msg)

        self._modulation = Modulation(self._dynamical_matrix,
                                      dimension,
                                      phonon_modes,
                                      delta_q=delta_q,
                                      derivative_order=derivative_order,
                                      nac_q_direction=nac_q_direction,
                                      factor=self._factor)
        self._modulation.run()