I am very new to Tensor Network as well as TenPy. I was trying to implement Bose-Hubbard model in a 2-leg ladder finite system, where there is tunnelling tt in between two leg. For that I have added this "self.add_coupling(-tt,0,'Bd',1,'B',0,plus_hc=True) " in the BoseHubbardModel . I hope this is fine. The challenge I face is that the bond-dimension is not increasing while performing the dmrg. "final bond dimensions: [1, 1, 1, 1, 1, 1, 1]"
Also the energy it calculates depends on the p_state I choose. My guess is that I don't understand how to choose p_state in this case or I am missing something important for this twoSiteDMRG.
Thanking you in advance.
Code: Select all
from tenpy.networks.mps import MPS
from tenpy.networks.site import BosonSite
from tenpy.models.hubbard import BoseHubbardModel
from tenpy.models.lattice import Ladder
from tenpy.algorithms import dmrg
boson=BosonSite()
ladder_i=Ladder(4,[boson,boson])
model_params = dict(lattice="Ladder", L=4, t=1,tt=0, U=1, V=5,n_max=1, filling=1/2, bc_MPS="finite", verbose= 1)
M = BoseHubbardModel(model_params)
p_state=[[1,1],[1,1],[1,1],[1,1]]
psi = MPS.from_lat_product_state(ladder_i, p_state)
dmrg_params = {"max_sweeps":50,"trunc_params": {"chi_max": 50, "svd_min": 1.e-10}}
dmrg.run(psi, M, dmrg_params) # find the ground state
print(psi.expectation_value("N"))
print("final bond dimensions: ", psi.chi)
~