def run(self): for ph_mode in self._phonon_modes: q, band_index, amplitude, argument = ph_mode eigvals, eigvecs = get_eigenvectors( q, self._dm, self._ddm, perturbation=self._delta_q, derivative_order=self._derivative_order, nac_q_direction=self._nac_q_direction) u = self._get_displacements(eigvecs[:, band_index], q, amplitude, argument) self._u.append(u) self._eigvecs.append(eigvecs[:, band_index]) self._eigvals.append(eigvals[band_index])
def run(self): """Calculate modulations.""" for i, ph_mode in enumerate(self._phonon_modes): q, band_index, amplitude, argument = ph_mode eigvals, eigvecs = get_eigenvectors( q, self._dm, self._ddm, perturbation=self._delta_q, derivative_order=self._derivative_order, nac_q_direction=self._nac_q_direction, ) u = self._get_displacements(eigvecs[:, band_index], q, amplitude, argument) self._u[i] = u self._eigvecs[i] = eigvecs[:, band_index] self._eigvals[i] = eigvals[band_index]
def run(self): for ph_mode in self._phonon_modes: q, band_index, amplitude, argument = ph_mode eigvals, eigvecs = get_eigenvectors( q, self._dm, self._ddm, perturbation=self._delta_q, derivative_order=self._derivative_order, nac_q_direction=self._nac_q_direction) u = self._get_delta(eigvecs[:, band_index], q) self._eigvecs.append(eigvecs[:, band_index]) self._eigvals.append(eigvals[band_index]) # Set phase of modulation so that phase of the element # that has maximum absolute value becomes 0. self._set_phase_of_modulation(u, argument) self._delta_modulations.append(u * amplitude)