VCA.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:HamiltonianPy 作者: waltergu 项目源码 文件源码
def VCAOP(engine,app):
    '''
    This method calculates the order parameters.
    '''
    engine.rundependences(app.name)
    engine.cache.pop('pt_kmesh',None)
    cgf,kmesh,nk=engine.apps[engine.preloads[0]],app.BZ.mesh('k'),app.BZ.rank('k')
    ops,ms={},np.zeros((len(app.terms),engine.ncopt,engine.ncopt),dtype=np.complex128)
    for i,term in enumerate(app.terms):
        order=deepcopy(term)
        order.value=1.0
        for opt in HP.Generator(engine.lattice.bonds,engine.config,table=engine.config.table(mask=engine.mask),terms=[order],half=True).operators.itervalues():
            ms[i,opt.seqs[0],opt.seqs[1]]+=opt.value
        ms[i,:,:]+=ms[i,:,:].T.conjugate()
    fx=lambda omega,m: (np.trace(engine.mgf_kmesh(omega=app.mu+1j*omega,kmesh=kmesh).dot(m),axis1=1,axis2=2)-np.trace(m)/(1j*omega-app.p)).sum().real
    for term,m,dtype in zip(app.terms,ms,app.dtypes):
        ops[term.id]=quad(fx,0,np.float(np.inf),args=m)[0]/nk/engine.ncopt*2/np.pi
        if dtype in (np.float32,np.float64): ops[term.id]=ops[term.id].real
    engine.log<<HP.Sheet(corner='Order',rows=['Value'],cols=ops.keys(),contents=np.array(ops.values()).reshape((1,-1)))<<'\n'
    if app.returndata: return ops
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号