Recently, while using the idmrg algorithm in tenpy, I observed a significant impact of the initial state selection on the results. I attempted two types of initial states, with consistent filling patterns. Quantum number conservation was also taken into account.
The first one is:
prod_state = [[(0,1), (0,0), (0,0), (0,0)],
[(0,0), (0,0), (1,0), (0,0)],
[(0,0), (0,0), (0,0), (0,0)],
[(0,1), (0,0), (0,0), (0,0)],
[(0,0), (0,0), (1,0), (0,0)],
[(0,0), (0,0), (0,0), (0,0)]]
The second one is:
prod_state = [[(1,0), (0,0), (0,0), (0,0)],
[(0,0), (0,0), (0,0), (0,0)],
[(0,1), (0,0), (0,0), (0,0)],
[(1,0), (0,0), (0,0), (0,0)],
[(0,0), (0,0), (0,0), (0,0)],
[(0,1), (0,0), (0,0), (0,0)]]
Both were constructed using the same method for the initial state:
psi = MPS.from_lat_product_state(M.lat, prod_state, bc=M.lat.bc_MPS)
However, I noticed that, under the same model parameters, the idmrg calculations for the ground state energy, correlation length, and entanglement entropy showed significant differences. Theoretically, the choice of the initial state should not impact the final results.
First set of results:
Correlation Length: 26.043602915400044
Entanglement Entropy (Half): 0.9044258691500284
Ground State Energy (E): -0.2585097644286
Second set of results:
Correlation Length: 11.265873325094045
Entanglement Entropy (Half): 0.6258906572377627
Ground State Energy (E): -0.2591735512362
I attempted to adopt some methods from the forum, such as:
1、psi.enlarge_mps_unit_cell(2)
'2、start_env': 10
3、Slowly increasing bond dimension
However, I still couldn't achieve consistency in the calculation results for the two different input states.
Finally, I wish you a Merry Christmas holiday!