Esempio n. 1
0
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
Esempio n. 2
0
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}
Esempio n. 3
0
    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
Esempio n. 4
0
    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