示例#1
0
文件: run.py 项目: ruoitrau86/Z2Pack
def calculate_chirality(tag, center, radius, overwrite=False, **kwargs):
    # converting the Model to the pickle format (which is quicker to load)
    # Note that keeping only the pickle format is dangerous, because it
    # may become unreadable -- use the JSON format for long-term saving.
    try:
        with open(MODEL_PATH, 'rb') as f:
            model = pickle.load(f)
    except IOError:
        # The .xz compression is used to avoid the GitHub file size limit
        with lzma.open(MODEL_SOURCE + '.xz') as fin, open(MODEL_SOURCE,
                                                          'wb') as fout:
            fout.write(fin.read())

        model = Model.from_json_file(MODEL_SOURCE)
        with open(MODEL_PATH, 'wb') as f:
            pickle.dump(model, f, protocol=pickle.HIGHEST_PROTOCOL)

    system = z2pack.tb.System(model)
    full_name = MODEL_NAME + '_' + tag
    res = z2pack.surface.run(system=system,
                             surface=z2pack.shape.Sphere(center, radius),
                             save_file=os.path.join('results',
                                                    full_name + '.p'),
                             load=not overwrite,
                             **kwargs)
    # Again, the pickle format is used because it is faster than JSON
    # or msgpack. If you wish to permanently store the result, use
    # z2pack.io.save(res, os.path.join('results', full_name + '.json'))
    print('Chern number:', z2pack.invariant.chern(res))
    def __init__(self, folder, prefix):
        """
        folder   # The folder containing the Wannier function files
        prefix,   # The prefix of Wannier90 outputs. e.g. wannier90_up
        """

        m = Model.from_wannier_folder(folder=folder, prefix=prefix)
        self.model = ijR.from_tbmodel(m)
示例#3
0
 def from_tbmodel_hdf5(fname):
     from tbmodels import Model
     m = Model.from_hdf5_file(fname)
     ret = ijR(nbasis=m.size)
     for R, v in m.hop.items():
         ret.data[R] = v
     ret.positions = np.reshape(m.pos, (m.size, 3))
     return ret
示例#4
0
    def from_tbmodel_hdf5(fname):
        """
        load model from a hdf5 file. It uses the tbmodel parser.
        """

        from tbmodels import Model
        m = Model.from_hdf5_file(fname)
        ret = MyTB(nbasis=m.size)
        for R, v in m.hop.items():
            ret.data[R] = v
        ret.positions = np.reshape(m.pos, (m.size, m.ndim))
        return ret
def save_Wannier_model():
    m = Model.from_wannier_folder(folder='/home/hexu/projects/SMO_Wannier/',
                                  prefix='abinito_w90_down')
    mijR = ijR.from_tbmodel(m)
    mijR.save(fname='SMO_tb.nc')