Exemple #1
0
 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])
Exemple #2
0
 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]
Exemple #3
0
 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):
     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)
Exemple #5
0
 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)