Пример #1
0
def get_ir_reciprocal_mesh(mesh,
                           cell,
                           is_shift=np.zeros(3, dtype=int),
                           is_time_reversal=False,
                           symprec=1e-5):
    """
    Return k-point map to the irreducible k-points and k-point grid points .
    The symmetry is serched from the input cell.
    is_shift=[ 0, 0, 0 ] gives Gamma center mesh.
    """

    return spg.get_ir_reciprocal_mesh(mesh, cell, is_shift, is_time_reversal,
                                      symprec)
Пример #2
0
def get_ir_grid_points(mesh, primitive, mesh_shifts=[False, False, False], is_return_map=False):
    grid_mapping_table, grid_address = spg.get_ir_reciprocal_mesh(
        mesh,
        primitive,
        is_shift=np.where(mesh_shifts, 1, 0))
    ir_grid_points = np.unique(grid_mapping_table)
    weights = np.zeros_like(grid_mapping_table)
    for g in grid_mapping_table:
        weights[g] += 1
    ir_grid_weights = weights[ir_grid_points]
    if is_return_map:
        return ir_grid_points, ir_grid_weights, grid_address, grid_mapping_table
    else:
        return ir_grid_points, ir_grid_weights, grid_address
Пример #3
0
def get_ir_grid_points(mesh,
                       primitive,
                       mesh_shifts=[False, False, False],
                       is_return_map=False):
    grid_mapping_table, grid_address = spg.get_ir_reciprocal_mesh(
        mesh, primitive, is_shift=np.where(mesh_shifts, 1, 0))
    ir_grid_points = np.unique(grid_mapping_table)
    weights = np.zeros_like(grid_mapping_table)
    for g in grid_mapping_table:
        weights[g] += 1
    ir_grid_weights = weights[ir_grid_points]
    if is_return_map:
        return ir_grid_points, ir_grid_weights, grid_address, grid_mapping_table
    else:
        return ir_grid_points, ir_grid_weights, grid_address
Пример #4
0
def get_ir_reciprocal_mesh(mesh,
                           cell,
                           is_shift=np.zeros(3, dtype=int),
                           is_time_reversal=False,
                           symprec=1e-5):
    """
    Return k-point map to the irreducible k-points and k-point grid points .
    The symmetry is serched from the input cell.
    is_shift=[ 0, 0, 0 ] gives Gamma center mesh.
    """

    return spg.get_ir_reciprocal_mesh(mesh,
                                      cell,
                                      is_shift,
                                      is_time_reversal,
                                      symprec)
Пример #5
0
    def set_grid(self):
        self._point_operations= get_pointgroup_operations(
                    Symmetry(self._cell).get_pointgroup_operations())
        self._kpoint_operations = get_kpoint_group(self._mesh, self._point_operations)

        (mapping, rot_mappings) =get_mappings(self._mesh,
                                                    Symmetry(self._cell).get_pointgroup_operations(),
                                                    qpoints=np.array([0,0,0],dtype="double"))
        self._rot_mappings = self._kpoint_operations[rot_mappings]
        self._mapping, self._grid=spg.get_ir_reciprocal_mesh(self._mesh, self._cell)
        assert (self._mapping==mapping).all()
        self._map_to_ir_index=np.zeros_like(mapping)
        reverse_mapping=[]
        for i,u in enumerate(np.unique(mapping)):
            reverse_mapping.append(np.where(mapping==u)[0])
            self._map_to_ir_index[np.where(mapping==u)] = i
        self._reverse_mapping=reverse_mapping
Пример #6
0
    def get_shortest_qpoints(self):
        return self._shortest_qpoints

if __name__ == '__main__':
    from phonopy.interface.vasp import read_vasp
    from phonopy.structure.symmetry import Symmetry, get_lattice_vector_equivalence
    from phonopy.structure.spglib import get_ir_reciprocal_mesh, relocate_BZ_grid_address
    import sys

    cell = read_vasp(sys.argv[1])
    symmetry = Symmetry(cell)
    mesh = [4, 4, 4]
    is_shift = np.array([0, 0, 0], dtype='intc')
    mapping_table, grid_address = get_ir_reciprocal_mesh(
        mesh,
        cell,
        is_shift=is_shift)
    ir_grid_points = np.unique(mapping_table)
    primitive_vectors = np.linalg.inv(cell.get_cell())
    bz_grid_address, bz_map = relocate_BZ_grid_address(
        grid_address,
        mesh,
        np.linalg.inv(cell.get_cell()),
        is_shift=is_shift)

    bz_points = np.extract(bz_map > -1, bz_map)
    qpoints = (grid_address + is_shift / 2.0) / mesh
    qpoints -= (qpoints > 0.5001) * 1

    bz = BrillouinZone(primitive_vectors)
    bz.run(qpoints)
Пример #7
0
    def get_shortest_qpoints(self):
        return self._shortest_qpoints

if __name__ == '__main__':
    from phonopy.interface.vasp import read_vasp
    from phonopy.structure.symmetry import Symmetry, get_lattice_vector_equivalence
    from phonopy.structure.spglib import get_ir_reciprocal_mesh, relocate_BZ_grid_address
    import sys

    cell = read_vasp(sys.argv[1])
    symmetry = Symmetry(cell)
    mesh = [4, 4, 4]
    is_shift = np.array([0, 0, 0], dtype='intc')
    mapping_table, grid_address = get_ir_reciprocal_mesh(
        mesh,
        cell,
        is_shift=is_shift)
    ir_grid_points = np.unique(mapping_table)
    primitive_vectors = np.linalg.inv(cell.get_cell())
    bz_grid_address, bz_map = relocate_BZ_grid_address(
        grid_address,
        mesh,
        np.linalg.inv(cell.get_cell()),
        is_shift=is_shift)

    bz_points = np.extract(bz_map > -1, bz_map)
    qpoints = (grid_address + is_shift / 2.0) / mesh
    qpoints -= (qpoints > 0.5001) * 1

    bz = BrillouinZone(primitive_vectors)
    bz.run(qpoints)