def add_H(self): self.get_free_coor_vector() new_Hs = [] for atom in self.choosed_atoms: if len(atom.coor_vec_free) > 0: length = read_cov_rad(atom.nat, unit='a') + \ read_cov_rad('1', unit='a') new_H = self.get_new_atom_according_to_vetor( atom, atom.coor_vec_free[0], length, nat='1') new_Hs.append(new_H) final_cluster = self.choosed_atoms + new_Hs return final_cluster
def cal_coor_no_of_all_atoms(self, atoms): for i in range(len(atoms)): coor = 0 coor_vec = [] for j in range(len(atoms)): if i != j: cor_rad = read_cov_rad( atoms[i].nat, unit='a') + read_cov_rad(atoms[j].nat, unit='a') dis = self.cal_dis_two_atoms(atoms[i], atoms[j]) if dis <= cor_rad * 1.1 and dis > 0: # print(atoms[i], atoms[j], cor_rad*1.2, dis) vec = self.cal_vector_between_two_atoms( atoms[i], atoms[j]) coor_vec.append(vec) coor += 1 atoms[i].coor = coor atoms[i].coor_vec = coor_vec # for i in self.original_atoms: # print(i.coor) return atoms
def cal_coordinate_number_of_original_atoms(self): """ according to the distance between two atoms to judge if there is conectivity between these two atoms afterwards calculate the coordniation number of each atom and calculate the direction of each coordinated atom of each atom :return: """ if self.dimensionality == 2: vec = (1, 1) else: vec = (1, 1, 1) new_atoms = self.gen_all_atoms(self.original_atoms, vec) all_atoms = new_atoms + self.original_atoms for i in range(len(self.original_atoms)): coor = 0 coor_vec = [] for new_atom in all_atoms: if new_atom != self.original_atoms[i]: cov_rad = ( read_cov_rad(self.original_atoms[i].nat, unit='a') + read_cov_rad(new_atom.nat, unit='a')) * 1.1 distance = self.cal_dis_two_atoms(self.original_atoms[i], new_atom) if distance <= cov_rad: #print(self.original_atoms[i], new_atom.nat, distance, cov_rad) vec = self.cal_vector_between_two_atoms( self.original_atoms[i], new_atom) coor_vec.append(vec) coor += 1 self.original_atoms[i].coor = coor # print(coor) self.original_atoms[i].coor_vec = coor_vec # print(coor_vec) atoms_coor_dict, atoms_coor_vec_dict = {}, {} for atom in self.original_atoms: atoms_coor_dict[atom.no] = atom.coor atoms_coor_vec_dict[atom.no] = atom.coor_vec return atoms_coor_dict, atoms_coor_vec_dict