예제 #1
0
def test_structure_symmetrizer_sc_irreducible_kpoints():
    lattice = [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]
    coords = [[0.0, 0.0, 0.0]]
    structure = Structure(lattice=lattice, species=["H"], coords=coords)
    symmetrizer = StructureSymmetrizer(structure)

    num_kpt_list = [2, 2, 2]
    kpt_shift = [0.5, 0.5, 0.5]
    actual = symmetrizer.irreducible_kpoints(num_kpt_list, kpt_shift)
    expected = [([0.25, 0.25, 0.25], 8)]
    assert actual == expected
    def _set_kpoints(self):
        # symmetrizer must be recreated since the fractional coordinates are
        # different in different lattices.
        # Symmetrized structure doesn't need the symprec and angle_tolerance
        symmetrizer = StructureSymmetrizer(self._structure)
        irreducible_kpoints = symmetrizer.irreducible_kpoints(
            self._num_kpt_list, self._kpt_shift)

        self.comment = ""
        if self._kpt_mode is KpointsMode.band:
            self._add_weighted_kpts(irreducible_kpoints)
            self._add_band_path_kpts()
            self._num_kpts = len(self._kpoints.kpts)
        else:
            self._kpoints = Kpoints(comment=self.comment,
                                    kpts=(self._num_kpt_list, ),
                                    kpts_shift=self._kpt_shift)
            self._num_kpts = len(irreducible_kpoints)

            self.kpoints.comment += f"Num irrep kpoints: {self._num_kpts}"