ifQt = False ifs2proj = True flmpsQ = h5py.File('./lmpsQ1', 'r') flmps0 = h5py.File('./lmps0', 'w') qtensor_api.fmpsQtReverse(flmpsQ, flmps0, 'L') flmps1 = h5py.File('./lmps1', 'w') # Conversion t0 = time.time() mpo_dmrg_conversion.sweep_projection(flmps0, flmps1, ifQt, sval, thresh=1.e-4) t1 = time.time() print 'dt=', (t1 - t0) flmps2 = h5py.File('./lmpsQ2', 'w') qtensor_api.fmpsQt(flmps1, flmps2, 'L') #=== Check ===# import h5py import shutil import numpy from mpi4py import MPI from zmpo_dmrg.source.itools.molinfo import class_molinfo from zmpo_dmrg.source import mpo_dmrg_class from zmpo_dmrg.source import mpo_dmrg_schedule #================================== # Main program #================================== comm = MPI.COMM_WORLD
dmrg.build() dmrg.comm = mol.comm dmrg.qsectors = {str([mol.nelec, sz]): 1} sc = mpo_dmrg_schedule.schedule() sc.fixed(maxM=1, maxiter=0) sc.prt() dmrg.ifIO = True dmrg.ifQt = False dmrg.partition() dmrg.loadInts(mol) dmrg.dumpMPO() dmrg.default(sc) dmrg.checkMPS() flmps1 = h5py.File(dmrg.path + '/lmpsQ0', 'w') qtensor_api.fmpsQt(dmrg.flmps, flmps1, 'L') flmps1.close() dmrg.final() ################################ # 1. Using an MPS in Qt form ################################ flmps1 = h5py.File(dmrg.path + '/lmpsQ0', 'r') dmrg2 = mpo_dmrg_class.mpo_dmrg() dmrg2.nsite = mol.sbas / 2 dmrg2.sbas = mol.sbas dmrg2.isym = 2 dmrg2.build() dmrg2.comm = mol.comm dmrg2.qsectors = {str([mol.nelec, sz]): 1}
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() if sc.maxiter > 0: frmps0 = dmrg.frmps frmps1 = h5py.File(dmrg.path + '/rmpsQt', 'w') qtensor_api.fmpsQt(frmps0, frmps1, 'R') frmps0.close() #------------------------------------------------------- ################################ # 1. Using an MPS in Qt form ################################ dmrg2 = mpo_dmrg_class.mpo_dmrg() dmrg2.nsite = mol.sbas / 2 dmrg2.sbas = mol.sbas
sc.prt() dmrg.ifQt = False dmrg.partition() #==================================== dmrg.h1e = tmatrix dmrg.model_Usite = us dmrg.dumpMPO_Model("HubbardGeneral") #==================================== dmrg.default(sc) dmrg.checkMPS() if rank == 0: #------------------------------------------------------- flmps0 = dmrg.flmps flmps1 = h5py.File(dmrg.path + '/lmpsQt', 'w') qtensor_api.fmpsQt(flmps0, flmps1, 'L', isym=isym) flmps0.close() flmps1.close() if ifQt: shutil.copy(dmrg.path + '/lmpsQt', './lmpsQ0') else: shutil.copy(dmrg.path + '/lmps', './lmpsQ0') #------------------------------------------------------- else: # 1. Using an MPS in Qt form flmps1 = h5py.File('./lmpsQ0', 'r') dmrg2 = mpo_dmrg_class.mpo_dmrg() dmrg2.nsite = nsite dmrg2.sbas = nsite * 2