def __init__(self, phonon, phonon_plus, phonon_minus, mesh, shift=None, is_time_reversal=True, is_gamma_center=False, is_mesh_symmetry=True): self._phonon = phonon self._mesh = np.array(mesh, dtype='intc') self._factor = phonon.get_unit_conversion_factor(), primitive = phonon.get_primitive() primitive_symmetry = phonon.get_primitive_symmetry() gruneisen = Gruneisen(phonon.get_dynamical_matrix(), phonon_plus.get_dynamical_matrix(), phonon_minus.get_dynamical_matrix()) self._qpoints, self._weights = get_qpoints( self._mesh, np.linalg.inv(primitive.get_cell()), q_mesh_shift=shift, is_time_reversal=is_time_reversal, is_gamma_center=is_gamma_center, rotations=primitive_symmetry.get_pointgroup_operations(), is_mesh_symmetry=is_mesh_symmetry) gruneisen.set_qpoints(self._qpoints) self._gamma = gruneisen.get_gruneisen() self._gamma_prime = gruneisen.get_gamma_prime() self._eigenvalues = gruneisen.get_eigenvalues() self._frequencies = np.sqrt( abs(self._eigenvalues)) * np.sign(self._eigenvalues) * self._factor