示例#1
0
def genMPO_S2GlobalRpt(nsite,fname,xts,ifQt,debug=False):
   if debug: print('\n[mpo_dmrg_propsMPORpt.genMPO_S2GlobalRpt] fname=',fname)
   t0 = time.time()
   fop = h5py.File(fname,'w')
   npt = len(xts)
   nop = 1*npt
   fop['nop'] = nop
   for isite in range(nsite):
      ti = time.time()
      gname = 'site'+str(isite)
      grp = fop.create_group(gname)
      if not ifQt:
         cop = mpo_dmrg_spinopers.genS2GlobalSpatial(nsite,isite)
         for ipt in range(npt):
            rop = mpo_dmrg_opers.genExpISyPhiMat(xts[ipt])
            wop = numpy.tensordot(cop,rop,axes=([3],[0]))
            grp['op'+str(ipt)] = wop
      else:
         for ipt in range(npt):
            cop = qtensor_spinopers.genS2GlobalRSpatialQt(nsite,isite,xts[ipt])
            cop.dump(grp,'op'+str(ipt))
      tf = time.time()
      if debug: print(' isite =',isite,' time = %.2f s'%(tf-ti)) 
   t1 = time.time()
   if debug: print(' time for genMPO_S2GlobalRpt = %.2f s'%(t1-t0))
   return fop
示例#2
0
def genS2GlobalSpatialQt(nsite,isite):
   isym = 2 
   # (5,5,4,4)
   site = mpo_dmrg_spinopers.genS2GlobalSpatial(nsite,isite)
   # Status
   qt = qtensor.qtensor([False,True,False,True])
   # Site physical indices
   qu,qd = qtensor_opers.genQphys(isym,isite)
   ql,qr = genSpinOpersQnums(nsite,isite,'S2')
   qt.fromDenseTensor(site,[ql,qr,qu,qd])
   return qt
示例#3
0
def genS2GlobalRSpatialQt(nsite,isite,phi):
   isym = 2 
   # (D,D,4,4) [D<=2] 
   cop = mpo_dmrg_spinopers.genS2GlobalSpatial(nsite,isite)
   rop = mpo_dmrg_opers.genExpISyPhiMat(phi)
   site = numpy.tensordot(cop,rop,axes=([3],[0]))
   # Status
   qt = qtensor.qtensor([False,True,False,True])
   # Site physical indices
   qu,qd = qtensor_opers.genQphys(isym,isite)
   ql,qr = genSpinOpersQnums(nsite,isite,'S2')
   # Reduce symmetry
   qu = qtensor_util.reduceQnumsToN(qu)
   qd = qtensor_util.reduceQnumsToN(qd)
   ql = qtensor_util.reduceQnumsToN(ql)
   qr = qtensor_util.reduceQnumsToN(qr)
   qt.fromDenseTensor(site,[ql,qr,qu,qd],ifcollect=[0,0,0,0])
   return qt
示例#4
0
def genMPO_S2Global(nsite, fname, ifQt, debug=False):
    if debug: print '\n[mpo_dmrg_propsMPO.genMPO_S2Global] fname=', fname
    t0 = time.time()
    fop = h5py.File(fname, 'w')
    nop = 1
    fop['nop'] = nop
    for isite in range(nsite):
        ti = time.time()
        gname = 'site' + str(isite)
        grp = fop.create_group(gname)
        if not ifQt:
            cop = mpo_dmrg_spinopers.genS2GlobalSpatial(nsite, isite)
            grp['op' + str(0)] = cop
        else:
            cop = qtensor_spinopers.genS2GlobalSpatialQt(nsite, isite)
            cop.dump(grp, 'op' + str(0))
        tf = time.time()
        if debug: print ' isite =', isite, ' time = %.2f s' % (tf - ti)
    t1 = time.time()
    if debug: print ' time for genMPO_S2Global = %.2f s' % (t1 - t0)
    return fop