I have some questions on the different dmrg results using SingleSiteEngine and TwositeEngine, and on how to get dmrg results with certain filling.

For more details,

I am using the dmrg in tenpy to obtain ground state energy for fermi-hubbard model. And in particular I want to get some dmrg results with low bond dimension in order to benchmark and compare with some other optimization results I got.

My setup is as following:

Code: Select all

```
model_params = dict(L=2, t=t_value, U=U_value, mu=mu_value, bc_MPS = "infinite", cons_N = 'N', cons_Sz=None, verbose=True)
M = FermiHubbardChain(model_params)
site = SpinHalfFermionSite(cons_N = 'N', cons_Sz = None, filling = 1)
product_state = ["up", "down"] * (M.lat.N_sites // 2)
psi = MPS.from_product_state([site]*M.lat.N_sites, product_state, bc = M.lat.bc_MPS)
dmrg_params = {
'mixer': True,
'trunc_params':{
'chi_max':chi_value,
'svd_min':1.e-12,
},
'max_E_err':1e-12,
'verbose':True,
}
#eng = dmrg.SingleSiteDMRGEngine(psi, M, dmrg_params)
eng = dmrg.TwoSiteDMRGEngine(psi, M, dmrg_params)
E, psi = eng.run()
```

First, I noticed that for low bond dimension, I got different results between using SingleSiteEngine and TwoSiteEngine. For example, for bond dimension = 4, and t = 1, U =8, I got E = -0.209 using two site engine and E = -0.29 using single site engine. I am not sure which result is correct. I also noticed that in the doc it says two site engine sometimes have convergence issue, I am wondering whether this discrepancy is related that and if it is, whether there is some way to fix that (make sure get reasonable results using TwoSiteEngine).

Second, I am wondering how to use dmrg to get ground energy for certain filling. For example, for half-filling, previously I thought using cons_N = 'N' will enforce the half-filling for dmrg results, I checked by print out

Code: Select all

`psi.expectation_value("Ntot")`

Code: Select all

`psi.expectation_value("Ntot") = [1.02346393 0.97653607]`

So I am wondering if there any parameters to set/any ways to get the dmrg results with certain filling, for example half-filling or in general any filling.

Thank you for your time!