def set_thermal_displacement_matrices(self, t_step=10, t_max=1000, t_min=0, cutoff_eigenvalue=None): """ cutoff_eigenvalue: phonon modes that have frequencies below cutoff_eigenvalue are ignored. e.g. 0.1 (THz^2) direction: Projection direction in reduced coordinates """ if self._mesh == None: print "set_mesh has to be done before set_thermal_properties" sys.exit(1) eigvecs = self._mesh.get_eigenvectors() frequencies = self._mesh.get_frequencies() mesh_nums = self._mesh.get_mesh_numbers() if self._mesh.get_eigenvectors() is None: print "Eigenvectors have to be calculated." sys.exit(1) if np.prod(mesh_nums) != len(eigvecs): print "Sampling mesh must not be symmetrized." sys.exit(1) tdm = ThermalDisplacementMatrices(frequencies, eigvecs, self._primitive.get_masses(), cutoff_eigenvalue=cutoff_eigenvalue) tdm.set_temperature_range(t_min, t_max, t_step) # tdm.run() tdm.run_mesh() self._thermal_displacement_matrices = tdm
def set_thermal_displacement_matrices(self, t_step=10, t_max=1000, t_min=0, cutoff_eigenvalue=None): """ cutoff_eigenvalue: phonon modes that have frequencies below cutoff_eigenvalue are ignored. e.g. 0.1 (THz^2) direction: Projection direction in reduced coordinates """ if self._mesh==None: print "set_mesh has to be done before set_thermal_properties" sys.exit(1) eigvecs = self._mesh.get_eigenvectors() frequencies = self._mesh.get_frequencies() mesh_nums = self._mesh.get_mesh_numbers() if self._mesh.get_eigenvectors() is None: print "Eigenvectors have to be calculated." sys.exit(1) if np.prod(mesh_nums) != len(eigvecs): print "Sampling mesh must not be symmetrized." sys.exit(1) tdm = ThermalDisplacementMatrices(frequencies, eigvecs, self._primitive.get_masses(), cutoff_eigenvalue=cutoff_eigenvalue) tdm.set_temperature_range(t_min, t_max, t_step) # tdm.run() tdm.run_mesh() self._thermal_displacement_matrices = tdm