def _set_triplets(self): if self._is_nosym: if self._log_level: print "Triplets at q without considering symmetry" sys.stdout.flush() (self._triplets_at_q, self._weights_at_q, self._grid_address, self._bz_map, map_triplets, map_q) = get_nosym_triplets_at_q( self._grid_point, self._mesh, self._reciprocal_lattice, with_bz_map=True) else: (self._triplets_at_q, self._weights_at_q, self._grid_address, self._bz_map, map_triplets, map_q) = get_triplets_at_q( self._grid_point, self._mesh, self._symmetry.get_pointgroup_operations(), self._reciprocal_lattice)
def _set_triplets(self): primitive_lattice = self._primitive.get_cell() if self._is_nosym: if self._log_level: print "Triplets at q without considering symmetry" sys.stdout.flush() (self._triplets_at_q, self._weights_at_q, self._grid_address, self._bz_map, map_triplets, map_q) = get_nosym_triplets_at_q( self._grid_point, self._mesh, primitive_lattice) else: (self._triplets_at_q, self._weights_at_q, self._grid_address, self._bz_map, map_q) = get_triplets_at_q( self._grid_point, self._mesh, self._symmetry.get_pointgroup_operations(), primitive_lattice)
def _set_triplets(self): if not self._is_mesh_symmetry: if self._log_level: print("Triplets at q without considering symmetry") sys.stdout.flush() (self._triplets_at_q, self._weights_at_q, self._grid_address, self._bz_map, map_triplets, map_q) = get_nosym_triplets_at_q( self._grid_point, self._mesh, self._reciprocal_lattice, with_bz_map=True) else: (self._triplets_at_q, self._weights_at_q, self._grid_address, self._bz_map, map_triplets, map_q) = get_triplets_at_q( self._grid_point, self._mesh, self._symmetry.get_pointgroup_operations(), self._reciprocal_lattice)
def set_grid_point(self, grid_point, stores_triplets_map=False): reciprocal_lattice = np.linalg.inv(self._primitive.get_cell()) if not self._is_mesh_symmetry: (triplets_at_q, weights_at_q, grid_address, bz_map, triplets_map_at_q, ir_map_at_q) = get_nosym_triplets_at_q( grid_point, self._mesh, reciprocal_lattice, stores_triplets_map=stores_triplets_map) else: (triplets_at_q, weights_at_q, grid_address, bz_map, triplets_map_at_q, ir_map_at_q)= get_triplets_at_q( grid_point, self._mesh, self._symmetry.get_pointgroup_operations(), reciprocal_lattice, stores_triplets_map=stores_triplets_map) for triplet in triplets_at_q: sum_q = (grid_address[triplet]).sum(axis=0) if (sum_q % self._mesh != 0).any(): print("============= Warning ==================") print("%s" % triplet) for tp in triplet: print("%s %s" % (grid_address[tp], np.linalg.norm( np.dot(reciprocal_lattice, grid_address[tp] / self._mesh.astype('double'))))) print("%s" % sum_q) print("============= Warning ==================") self._grid_point = grid_point self._triplets_at_q = triplets_at_q self._weights_at_q = weights_at_q self._triplets_map_at_q = triplets_map_at_q self._grid_address = grid_address self._bz_map = bz_map self._ir_map_at_q = ir_map_at_q self.set_phonons(self._triplets_at_q.ravel())
def set_grid_point(self, grid_point, stores_triplets_map=False): reciprocal_lattice = np.linalg.inv(self._primitive.get_cell()) if self._is_nosym: (triplets_at_q, weights_at_q, grid_address, bz_map, triplets_map_at_q, ir_map_at_q) = get_nosym_triplets_at_q( grid_point, self._mesh, reciprocal_lattice, stores_triplets_map=stores_triplets_map) else: (triplets_at_q, weights_at_q, grid_address, bz_map, triplets_map_at_q, ir_map_at_q)= get_triplets_at_q( grid_point, self._mesh, self._symmetry.get_pointgroup_operations(), reciprocal_lattice, stores_triplets_map=stores_triplets_map) for triplet in triplets_at_q: sum_q = (grid_address[triplet]).sum(axis=0) if (sum_q % self._mesh != 0).any(): print "============= Warning ==================" print triplet for tp in triplet: print grid_address[tp], print np.linalg.norm( np.dot(reciprocal_lattice, grid_address[tp] / self._mesh)) print sum_q print "============= Warning ==================" self._triplets_at_q = triplets_at_q self._weights_at_q = weights_at_q self._triplets_map_at_q = triplets_map_at_q self._grid_address = grid_address self._bz_map = bz_map self._ir_map_at_q = ir_map_at_q
def set_grid_point(self, grid_point, stores_triplets_map=False): reciprocal_lattice = np.linalg.inv(self._primitive.get_cell()) if not self._is_mesh_symmetry: (triplets_at_q, weights_at_q, grid_address, bz_map, triplets_map_at_q, ir_map_at_q) = get_nosym_triplets_at_q( grid_point, self._mesh, reciprocal_lattice, stores_triplets_map=stores_triplets_map) else: (triplets_at_q, weights_at_q, grid_address, bz_map, triplets_map_at_q, ir_map_at_q) = get_triplets_at_q( grid_point, self._mesh, self._symmetry.get_pointgroup_operations(), reciprocal_lattice, stores_triplets_map=stores_triplets_map) for triplet in triplets_at_q: sum_q = (grid_address[triplet]).sum(axis=0) if (sum_q % self._mesh != 0).any(): print("============= Warning ==================") print("%s" % triplet) for tp in triplet: print("%s %s" % (grid_address[tp], np.linalg.norm( np.dot( reciprocal_lattice, grid_address[tp] / self._mesh.astype('double'))))) print("%s" % sum_q) print("============= Warning ==================") self._grid_point = grid_point self._triplets_at_q = triplets_at_q self._weights_at_q = weights_at_q self._triplets_map_at_q = triplets_map_at_q self._grid_address = grid_address self._bz_map = bz_map self._ir_map_at_q = ir_map_at_q self.set_phonons(self._triplets_at_q.ravel())
def set_grid_point(self, grid_point, stores_triplets_map=False): reciprocal_lattice = np.linalg.inv(self._primitive.get_cell()) if self._is_nosym: (triplets_at_q, weights_at_q, grid_address, bz_map, triplets_map_at_q, ir_map_at_q) = get_nosym_triplets_at_q( grid_point, self._mesh, reciprocal_lattice, stores_triplets_map=stores_triplets_map) else: (triplets_at_q, weights_at_q, grid_address, bz_map, triplets_map_at_q, ir_map_at_q)= get_triplets_at_q( grid_point, self._mesh, self._symmetry.get_pointgroup_operations(), reciprocal_lattice, stores_triplets_map=stores_triplets_map) for triplet in triplets_at_q: sum_q = (grid_address[triplet]).sum(axis=0) if (sum_q % self._mesh != 0).any(): print "============= Warning ==================" print triplet print grid_address[triplet] print sum_q print "============= Warning ==================" self._triplets_at_q = triplets_at_q self._weights_at_q = weights_at_q self._triplets_map_at_q = triplets_map_at_q self._grid_address = grid_address self._bz_map = bz_map self._ir_map_at_q = ir_map_at_q
def set_grid_point(self, grid_point, i=None, stores_triplets_map=False): if i==None: self._grid_point = grid_point if self._grid_points is not None: self._i = np.where(grid_point == self._grid_points)[0][0] else: self._i = i self._grid_point = self._grid_points[i] if self._triplets is not None: self._triplets_at_q = self._triplets[self._i] self._weights_at_q = self._weights[self._i] self._triplets_address = self._grid_address[self._triplets_at_q] if self._is_dispersed: self._triplets_uniq_index_at_grid = self._unique_triplets[self._i] self._triplets_maping_at_grid = self._triplets_mappings[self._i] self._triplet_sequence_at_grid = self._triplets_sequence[self._i] else: reciprocal_lattice = np.linalg.inv(self._primitive.get_cell()) if self._is_nosym: (triplets_at_q, weights_at_q, grid_address, bz_map, triplets_map_at_q, ir_map_at_q) = get_nosym_triplets_at_q( grid_point, self._mesh, reciprocal_lattice, stores_triplets_map=stores_triplets_map) if self._is_dispersed: self._triplets_uniq_index_at_grid = np.arange(len(triplets_at_q), dtype="intc") self._triplets_maping_at_grid = np.arange(len(triplets_at_q), dtype="intc") self._triplet_sequence_at_grid = np.arange(3, dtype="intc")[np.newaxis].repeat(len(triplets_at_q)) else: (triples_at_q_crude, weights_at_q, grid_address, grid_map)=\ get_triplets_at_q_crude(grid_point, self._mesh, self._point_group_operations) (triplets_at_q, weights, bz_grid_address, bz_map)=\ get_BZ_triplets_at_q(grid_point, self._mesh, reciprocal_lattice, grid_address, grid_map) if self._is_dispersed: (unique_triplet_nums, triplets_mappings, triplet_sequence) = \ reduce_triplets_by_permutation_symmetry([triples_at_q_crude], self._mesh, first_mapping=self._grid_mapping, first_rotation=self._kpoint_operations[self._grid_mapping_rot], second_mapping=np.array([grid_map])) self._triplets_uniq_index_at_grid = unique_triplet_nums self._triplets_maping_at_grid = triplets_mappings[0] self._triplet_sequence_at_grid = triplet_sequence[0] sum_qs = bz_grid_address[triplets_at_q].sum(axis=1) resi = sum_qs % self._mesh if (resi != 0).any(): triplets = triplets_at_q[np.where(resi != 0)[0]] print "============= Warning ==================" print triplets print sum_qs print "============= Warning ==================" self._triplets_at_q = triplets_at_q self._weights_at_q = weights_at_q self._ir_map_at_q = grid_map