Page 1 of 1

DMRG of Two Component Bose-Hubbard Model

Posted: 10 Dec 2021, 06:43
by ksuzuki
Hello.
I used TwoSiteDMRGEngine for this code under the specified initial state psi = MPS.from_lat_product_state(M.lat, [[1, 1]]), but it did not successfully find the ground state. (viewtopic.php?t=160)

I would appreciate it if you could tell me how you used it. 

Code: Select all

model_params=dict(L=L,n_max=n_max,t=t,U=U,UAB=UAB,mu=mu,conserve=None)
M=TwoComponentBoseHubbardModel(model_params) 
psi=MPS.from_lat_product_state(M.lat,[[1,1]])
dmrg_params = { 
        'mixer': None,  
        'max_E_err': 1.e-10, 
        'trunc_params': {
            'chi_max': 30,
            'svd_min': 1.e-10  
        },
        'combine': True 
    }
eng_dmrg = dmrg.TwoSiteDMRGEngine(psi,M,dmrg_params)
E, psi= eng_dmrg.run()
I'm a beginner, so this question may contain a fundamental error.
thank you.

Re: DMRG of Two Component Bose-Hubbard Model

Posted: 11 Jan 2022, 09:55
by Johannes
Welcome to TenPy, happy new year, and sorry for the long delay in the answer, I had a few things I needed to finish before Christmas.....

I think the issue here is that the mixer is disabled, just try setting 'mixer': True.
The reason why you need the mixer is that you always just optimize two sites at once while projecting to the current schmidt states outside of the two sites, and you start with a product state of all single-site filling. In the TwoComponentBoseHubbardModel defined in the other thread, neighboring sites are always from the different species with no hopping term, so the smallest, non-trivial hopping involves 3 sites (from i to i+2).