def test_Amm2(): """Test of DOS calculation using TetrahedronMesh for Amm2 crystal.""" data = np.loadtxt(StringIO(dos_str)) phonon = _get_phonon("Amm2", [3, 2, 2], [[1, 0, 0], [0, 0.5, -0.5], [0, 0.5, 0.5]]) mesh = [11, 11, 11] primitive = phonon.primitive phonon.run_mesh([11, 11, 11]) weights = phonon.mesh.weights frequencies = phonon.mesh.frequencies grid_address = phonon.mesh.grid_address ir_grid_points = phonon.mesh.ir_grid_points grid_mapping_table = phonon.mesh.grid_mapping_table thm = TetrahedronMesh( primitive, frequencies, mesh, np.array(grid_address, dtype="int_"), np.array(grid_mapping_table, dtype="int_"), ir_grid_points, ) thm.set(value="I", division_number=40) freq_points = thm.get_frequency_points() dos = np.zeros_like(freq_points) for i, iw in enumerate(thm): dos += np.sum(iw * weights[i], axis=1) dos_comp = np.transpose([freq_points, dos]).reshape(10, 8) np.testing.assert_allclose(dos_comp, data, atol=1e-5)
def test_Amm2(self): data = np.loadtxt(StringIO(dos_str)) phonon = self._get_phonon("Amm2", [3, 2, 2], [[1, 0, 0], [0, 0.5, -0.5], [0, 0.5, 0.5]]) mesh = [11, 11, 11] primitive = phonon.get_primitive() phonon.run_mesh([11, 11, 11]) qpoints = phonon.mesh.qpoints weights = phonon.mesh.weights frequencies = phonon.mesh.frequencies grid_address = phonon.mesh.grid_address ir_grid_points = phonon.mesh.ir_grid_points grid_mapping_table = phonon.mesh.grid_mapping_table thm = TetrahedronMesh(primitive, frequencies, mesh, grid_address, grid_mapping_table, ir_grid_points) thm.set(value='I', division_number=40) freq_points = thm.get_frequency_points() dos = np.zeros_like(freq_points) for i, iw in enumerate(thm): dos += np.sum(iw * weights[i], axis=1) dos_comp = np.transpose([freq_points, dos]).reshape(10, 8) self.assertTrue(np.abs(dos_comp - data).all() < 1e-5)
def test_Amm2(self): data = np.loadtxt(StringIO(dos_str)) phonon = self._get_phonon("Amm2", [3, 2, 2], [[1, 0, 0], [0, 0.5, -0.5], [0, 0.5, 0.5]]) mesh = [11, 11, 11] primitive = phonon.get_primitive() phonon.set_mesh([11, 11, 11]) qpoints, weights, frequencies, _ = phonon.get_mesh() (grid_address, ir_grid_points, grid_mapping_table) = phonon.get_mesh_grid_info() thm = TetrahedronMesh(primitive, frequencies, mesh, grid_address, grid_mapping_table, ir_grid_points) thm.set(value='I', division_number=40) freq_points = thm.get_frequency_points() dos = np.zeros_like(freq_points) for i, iw in enumerate(thm): dos += np.sum(iw * weights[i], axis=1) dos_comp = np.transpose([freq_points, dos]).reshape(10, 8) self.assertTrue(np.abs(dos_comp - data).all() < 1e-5)