コード例 #1
0
 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
コード例 #2
0
 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