def FLQTQEB(engine,app):
'''
This method calculates the Floquet quasi-energy bands.
'''
if app.path is None:
result=zeros((2,engine.nmatrix+1))
result[:,0]=array(xrange(2))
result[0,1:]=angle(eig(engine.evolution(ts=app.ts.mesh('t')))[0])/app.ts.volume('t')
result[1,1:]=result[0,1:]
else:
rank,mesh=app.path.rank(0),app.path.mesh(0)
result=zeros((rank,engine.nmatrix+1))
result[:,0]=mesh if mesh.ndim==1 else array(xrange(rank))
for i,paras in app.path('+'):
result[i,1:]=angle(eig(engine.evolution(ts=app.ts.mesh('t'),**paras))[0])/app.ts.volume('t')
name='%s_%s'%(engine,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
评论列表
文章目录