def read_from_wannier_dir(path, prefix, posfile='POSCAR', nls=True, groupby='spin'): """ read tight binding model from a wannier function directory. :param path: path :param prefix: prefix to the wannier files, often wannier90, or wannier90_up, or wannier90_dn for vasp. """ #tbmodel = Model.from_wannier_folder( # folder=path, prefix=prefix) #m = MyTB.from_tbmodel(tbmodel) nbasis, data = parse_ham(fname=os.path.join(path, prefix + '_hr.dat')) xcart, _, _ = parse_xyz(fname=os.path.join(path, prefix + '_centres.xyz')) atoms = read(os.path.join(path, posfile)) cell = atoms.get_cell() xred = cell.scaled_positions(xcart) if groupby == 'orbital': norb = nbasis // 2 xtmp = np.copy(xred) xred[:norb] = xtmp[::2] xred[norb:] = xtmp[1::2] for key, val in data.items(): dtmp = copy.deepcopy(val) data[key][:norb, :norb] = dtmp[::2, ::2] data[key][:norb, norb:] = dtmp[::2, 1::2] data[key][norb:, :norb] = dtmp[1::2, ::2] data[key][norb:, norb:] = dtmp[1::2, 1::2] ind, positions = auto_assign_basis_name(xred, atoms) m = MyTB(nbasis=nbasis, data=data, positions=xred) nm = m.shift_position(positions) nm.set_atoms(atoms) return nm
def read_from_wannier_dir(path, prefix, posfile='POSCAR', nls=True): """ read tight binding model from a wannier function directory. :param path: path :param prefix: prefix to the wannier files, often wannier90, or wannier90_up, or wannier90_dn for vasp. """ #tbmodel = Model.from_wannier_folder( # folder=path, prefix=prefix) #m = MyTB.from_tbmodel(tbmodel) nbasis, data = parse_ham(fname=os.path.join(path, prefix + '_hr.dat')) xcart, _, _ = parse_xyz(fname=os.path.join(path, prefix + '_centres.xyz')) atoms = read(os.path.join(path, posfile)) cell = atoms.get_cell() xred = cell.scaled_positions(xcart) ind, positions = auto_assign_basis_name(xred, atoms) m = MyTB(nbasis=nbasis, data=data, positions=xred) nm = m.shift_position(positions) nm.set_atoms(atoms) return nm