def run(self): ''' Execute the Wannier90_run ''' assert type(self.num_wann_loc) != None assert type(self.M_matrix_loc) == np.ndarray assert type(self.A_matrix_loc) == np.ndarray assert type(self.eigenvalues_loc) == np.ndarray seed__name = "wannier90" recip_lattice_loc = self.recip_lattice_loc.flatten() kpt_latt_loc = self.kpt_latt_loc.flatten() atoms_cart_loc = self.atoms_cart_loc.flatten() real_lattice_loc = self.real_lattice_loc.flatten() M_matrix_loc = self.M_matrix_loc.flatten() A_matrix_loc = self.A_matrix_loc.flatten() eigenvalues_loc = self.eigenvalues_loc.flatten() U_matrix, U_matrix_opt, lwindow, wann_centres, wann_spreads, spread = \ libwannier90.run(seed__name, self.mp_grid_loc, self.num_kpts_loc, real_lattice_loc, \ recip_lattice_loc, kpt_latt_loc, self.num_bands_tot, self.num_bands_loc, self.num_wann_loc, self.nntot_loc, self.num_atoms_loc, \ self.atom_atomic_loc, atoms_cart_loc, self.gamma_only, \ M_matrix_loc, A_matrix_loc, eigenvalues_loc) # Convert outputs to the correct data type self.U_matrix = U_matrix self.U_matrix_opt = U_matrix_opt lwindow = np.int32(lwindow.real) self.lwindow = (lwindow == 1) self.wann_centres = wann_centres.real self.wann_spreads = wann_spreads.real self.spread = spread.real
def run(self): ''' Execute the Wannier90_run ''' assert type(self.num_wann_loc) != None assert type(self.M_matrix_loc) == np.ndarray assert type(self.A_matrix_loc) == np.ndarray assert type(self.eigenvalues_loc) == np.ndarray seed__name = "wannier90" real_lattice_loc = self.real_lattice_loc.T.flatten() recip_lattice_loc = self.recip_lattice_loc.T.flatten() kpt_latt_loc = self.kpt_latt_loc.flatten() atoms_cart_loc = self.atoms_cart_loc.flatten() M_matrix_loc = self.M_matrix_loc.flatten() A_matrix_loc = self.A_matrix_loc.flatten() eigenvalues_loc = self.eigenvalues_loc.flatten() U_matrix, U_matrix_opt, lwindow, wann_centres, wann_spreads, spread = \ libwannier90.run(seed__name, self.mp_grid_loc, self.num_kpts_loc, real_lattice_loc, \ recip_lattice_loc, kpt_latt_loc, self.num_bands_tot, self.num_bands_loc, self.num_wann_loc, self.nntot_loc, self.num_atoms_loc, \ self.atom_atomic_loc, atoms_cart_loc, self.gamma_only, \ M_matrix_loc, A_matrix_loc, eigenvalues_loc) # Convert outputs to the correct data typ self.U_matrix = U_matrix self.U_matrix_opt = U_matrix_opt lwindow = np.int32(lwindow.real) self.lwindow = (lwindow == 1) self.wann_centres = wann_centres.real self.wann_spreads = wann_spreads.real self.spread = spread.real
for n in range(num_bands_loc): for m in range(num_bands_loc): x = float(lines[nkp * M3 + nn * M2 + n * M1 + m][0]) y = float(lines[nkp * M3 + nn * M2 + n * M1 + m][1]) M_matrix_loc[nkp, nn_index, n, m] = complex(x, y) # Reading eigenvals_matrix eigenvalues_loc = np.empty([num_kpts_loc, num_bands_loc], dtype=float) file = open(name + ".eig") for i in range(num_kpts_loc): for j in range(num_bands_loc): line = file.readline().split() eigenvalues_loc[i, j] = float(line[2]) A_matrix_loc = A_matrix_loc.flatten() M_matrix_loc = M_matrix_loc.flatten() eigenvalues_loc = eigenvalues_loc.flatten() U_matrix, U_matrix_opt, lwindow, wann_centres, wann_spreads, spread = \ libwannier90.run(seed__name, mp_grid_loc, num_kpts_loc, real_lattice_loc, \ recip_lattice_loc, kpt_latt_loc.flatten(order='F'), num_bands_tot, num_bands_loc, num_wann_loc, nntot_loc, num_atoms_loc, \ atom_atomic_loc, atoms_cart_loc, gamma_only_boolean, \ M_matrix_loc, A_matrix_loc, eigenvalues_loc) # Convert outputs to the correct data type lwindow = np.int32(lwindow.real) lwindow = (lwindow == 1) wann_centres = wann_centres.real wann_spreads = wann_spreads.real spread = spread.real