Ejemplo n.º 1
0
    def _allocate_values(self):
        num_band = self._primitive.get_number_of_atoms() * 3
        num_grid_points = len(self._grid_points)
        num_ir_grid_points = len(self._ir_grid_points)

        self._kappa = np.zeros((len(self._sigmas), len(self._temperatures), 6),
                               dtype='double')
        self._gv = np.zeros((num_grid_points, num_band, 3), dtype='double')
        self._averaged_pp_interaction = np.zeros((num_grid_points, num_band),
                                                 dtype='double')
        self._gamma = np.zeros((len(self._sigmas), len(
            self._temperatures), num_grid_points, num_band),
                               dtype='double')
        if self._isotope is not None:
            self._gamma_iso = np.zeros(
                (len(self._sigmas), num_grid_points, num_band), dtype='double')

        if self._is_reducible_collision_matrix:
            num_mesh_points = np.prod(self._mesh)
            self._mode_kappa = np.zeros(
                (len(self._sigmas), len(
                    self._temperatures), num_mesh_points, num_band, 6),
                dtype='double')
            self._collision = CollisionMatrix(
                self._pp, is_reducible_collision_matrix=True)
            self._collision_matrix = np.zeros(
                (len(self._sigmas), len(self._temperatures), num_grid_points,
                 num_band, num_mesh_points, num_band),
                dtype='double')
        else:
            self._mode_kappa = np.zeros(
                (len(self._sigmas), len(
                    self._temperatures), num_grid_points, num_band, 6),
                dtype='double')
            self._rot_grid_points = np.zeros(
                (len(self._ir_grid_points), len(self._point_operations)),
                dtype='intc')
            self._rot_BZ_grid_points = np.zeros(
                (len(self._ir_grid_points), len(self._point_operations)),
                dtype='intc')
            for i, ir_gp in enumerate(self._ir_grid_points):
                self._rot_grid_points[i] = get_grid_points_by_rotations(
                    self._grid_address[ir_gp], self._point_operations,
                    self._mesh)
                self._rot_BZ_grid_points[i] = get_BZ_grid_points_by_rotations(
                    self._grid_address[ir_gp], self._point_operations,
                    self._mesh, self._pp.get_bz_map())
            self._collision = CollisionMatrix(
                self._pp,
                point_operations=self._point_operations,
                ir_grid_points=self._ir_grid_points,
                rotated_grid_points=self._rot_BZ_grid_points)
            self._collision_matrix = np.zeros(
                (len(self._sigmas), len(self._temperatures), num_grid_points,
                 num_band, 3, num_ir_grid_points, num_band, 3),
                dtype='double')