def TBAEB(engine,app):
'''
This method calculates the energy bands of the Hamiltonian.
'''
nmatrix=engine.nmatrix
if app.path is not None:
assert len(app.path.tags)==1
result=zeros((app.path.rank(0),nmatrix+1))
if app.path.mesh(0).ndim==1:
result[:,0]=app.path.mesh(0)
else:
result[:,0]=array(xrange(app.path.rank(0)))
for i,paras in enumerate(app.path()):
result[i,1:]=eigh(engine.matrix(**paras),eigvals_only=True)
else:
result=zeros((2,nmatrix+1))
result[:,0]=array(xrange(2))
result[0,1:]=eigh(engine.matrix(),eigvals_only=True)
result[1,1:]=result[0,1:]
name='%s_%s'%(engine.tostr(mask=() if app.path is None else app.path.tags),app.name)
if app.savedata: savetxt('%s/%s.dat'%(engine.dout,name),result)
if app.plot: app.figure('L',result,'%s/%s'%(engine.dout,name))
if app.returndata: return result
评论列表
文章目录