Пример #1
0
maxM = 200
if icase == 0:

    ################################
    # 0. Initialize an MPS(N,Sz)
    ################################
    dmrg = mpo_dmrg_class.mpo_dmrg()
    dmrg.occun = mol.orboccun
    dmrg.path = mol.path
    dmrg.nsite = mol.sbas / 2
    dmrg.sbas = mol.sbas
    dmrg.isym = 2
    dmrg.build()
    dmrg.comm = mol.comm
    dmrg.qsectors = {str([mol.nelec, sz]): 1}
    sc = mpo_dmrg_schedule.schedule()
    sc.fixed(maxM=100, maxiter=0)
    sc.prt()
    dmrg.ifIO = True
    dmrg.partition()
    dmrg.loadInts(mol)
    dmrg.dumpMPO()
    dmrg.default(sc)
    dmrg.checkMPS()

    #-------------------------------------------------------
    flmps0 = dmrg.flmps
    flmps1 = h5py.File(dmrg.path + '/lmpsQt', 'w')
    qtensor_api.fmpsQt(flmps0, flmps1, 'L')
    flmps0.close()
Пример #2
0
from zmpo_dmrg.source import mpo_dmrg_class
from zmpo_dmrg.source import mpo_dmrg_schedule

sz = 1.0

dmrg = mpo_dmrg_class.mpo_dmrg()
dmrg.nsite = mol.sbas / 2
dmrg.nhops = mol.sbas
dmrg.isym = 2
dmrg.build()
dmrg.comm = mol.comm
dmrg.qsectors = {str([mol.nelec, sz]): 1}
Dmax = 10
dmrg.Dmax = Dmax
#dmrg.test(mol)
sc = mpo_dmrg_schedule.schedule(maxM=Dmax, tol=1.e-7)
#sc.startM = 1000
sc.maxiter = 3
sc.mixed()
dmrg.ifplot = False
dmrg.partition()
dmrg.default(mol, sc)
dmrg.checkMPS(mol)
exit()

#lmps = [dmrg.lmps,dmrg.qnuml]
#dmrg2 = mpo_dmrg_class.mpo_dmrg()
#dmrg2.nsite = mol.sbas/2
#dmrg2.isym = 2
#dmrg2.build()
#dmrg2.comm = mol.comm
Пример #3
0
conf = [1,1]+[1,0,]*8+[0,0]

################################
# 0. Initialize an MPS(N,Sz) 
################################
dmrg = mpo_dmrg_class.mpo_dmrg()
dmrg.occun = numpy.array(conf)
dmrg.const = mol.ecor
dmrg.path = mol.path
dmrg.nsite = mol.sbas/2
dmrg.sbas  = mol.sbas
dmrg.isym = 2
dmrg.build()
dmrg.comm = mol.comm
dmrg.qsectors = {str([nelec,sz]):1} 
sc = mpo_dmrg_schedule.schedule()
sc.fixed(maxM=1,maxiter=0)
sc.prt()
dmrg.partition()
dmrg.loadInts(mol)
dmrg.dumpMPO()
dmrg.default(sc)

#-------------------------------------------------------
if rank == 0:
   flmps0 = dmrg.flmps
   flmps1 = h5py.File(dmrg.path+'/lmpsQt','w')
   qtensor_api.fmpsQt(flmps0,flmps1,'L')
   flmps0.close()
   flmps1.close()
   shutil.copy(dmrg.path+'/lmpsQt','./lmpsQ0')
Пример #4
0
#############################
# 0. Initialize an MPS(N,Sz)
#############################
dmrg = mpo_dmrg_class.mpo_dmrg()
dmrg.occun = mol.orboccun
dmrg.comm = mol.comm
dmrg.path = mol.path
dmrg.nsite = mol.sbas / 2
dmrg.sbas = mol.sbas
dmrg.isym = 2
dmrg.build()
dmrg.qsectors = {str([mol.nelec, sz]): 1}
Dmax = 10
thresh = 1.e-10
sc = mpo_dmrg_schedule.schedule()
sc.fixed(maxM=Dmax, maxiter=0)
sc.prt()
dmrg.ifplot = False
dmrg.ifIO = True
dmrg.partition()
dmrg.loadInts(mol)
dmrg.default(sc)
dmrg.checkMPS()

#-------------------------------------------------------
# The last site only carries information from one state
flmps0 = h5py.File(dmrg.path + '/lmps', 'r')
flmps1 = h5py.File(dmrg.path + '/lmpsQt', 'w')
qtensor_api.fmpsQt(flmps0, flmps1, 'L')
flmps0.close()