Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
        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