Entanglement Entropy in 1D spin-1 XXZ chain

How do I use this algorithm? What does that parameter do?
Post Reply
DK_Lee
Posts: 5
Joined: 05 Jul 2019, 04:59

Entanglement Entropy in 1D spin-1 XXZ chain

Post by DK_Lee »

Hello~
I’m a everyday user of tenpy whose last update was 6th January.

I use the iDMRG method and the system is 1D spin-1 XXZ chain:

Code: Select all

model_params = dict(S=1, L=2, Jx=1., Jy=1., Jz=Jz, D=0, bc_MPS='infinite', conserve='best', verbose=0)
M = SpinChain(model_params) 

product_state = ["up"] * M.lat.N_sites
psi = MPS.from_product_state(M.lat.mps_sites(), product_state, bc=M.lat.bc_MPS)

dmrg_params = {                                                                                             
    'mixer': True,                                                                                          
    'trunc_params': {                                                                                       
    'chi_max': 200,                                                                                 
    'symmetry_tol': 1.e-14,                                                                                
    'svd_min': 1.e-14                                                                                      
    },                                                                                                      
    'max_E_err': 1.e-16,                                                                                    
    'verbose': 1
}
 

I have two questions


Q1.
Screen Shot 2019-07-05 at 5.15.27 PM.png
Screen Shot 2019-07-05 at 5.15.27 PM.png (41.58 KiB) Viewed 5730 times
When the entanglement_entropy is plotted with respect to Jz, it is not continuous. (see Fig)

It is suddenly dropped in the vicinity of critical points (Jz~0.3, Jz~1.2).

In my opinion, This does happens is not related to the chi_max in trunc_params.

How to get the smooth curve?
Should I minutely tune some parameters in dmrg_params or trunc_params?


Q2.
When simulating the iDMRG method, ‘psi.get_SL(0).shape’ is not sometimes equal to ‘psi.get_SR(0).shape’

Is this fair? If not, How to make these equal?
Leon
Posts: 13
Joined: 23 Jul 2018, 09:08
Location: University of Kent

Re: Entanglement Entropy in 1D spin-1 XXZ chain

Post by Leon »

Hi, thanks for your questions! Firstly, if your last update was on 6th January, you might want to consider updating your code. Amongst many smaller changes, an updated version was released this April.

As to your questions:
Q1: At or near a critical point, DMRG can struggle with finding the correct ground state as correlations go off to infinity. Thus, you might end up in a state that is not actually the ground state. I would guess that if you computed the overlap between your states at different Jz, you would find a sharp drop right where there is a discontinuity in S. This you could overcome by 'seeding' each simulation with the result obtained by the Jz-value directly smaller. (Please let me know if this description makes sense).

Another thing you could try is to play with the max_S_err DMRG parameter, which tells the algorithm the maximum error in S you are willing to accept.

Q2: psi.get_SL(i) and psi.get_SR(i) return the singular values to the left and right (respectively) of site i. Thus, if the bond dimension is different on these two bonds, you should get a different shape for both these objects.
DK_Lee
Posts: 5
Joined: 05 Jul 2019, 04:59

Re: Entanglement Entropy in 1D spin-1 XXZ chain

Post by DK_Lee »

Thank you so much to reply my questions.


First of all, the last sentence (' This you could~ smaller.') in your answer for Q1 is not clear for me.


Secondly, for Q2, I understand psi.get_SL(i) and psi.get_SR(i) are coincide with the singular value matrices for the left and right of site i, respectively.

But, as I know, if the 1D infinite chain is invariant under the translational symmetry, all singular value matrices for any site should be the same, which leads to the fact that all bond dimensions for all site should be the same.

Whereas, the iDMRG method in tenpy package sometimes yields the different bond dimensions for the left and right of site i.

So, I have been confused.
Leon
Posts: 13
Joined: 23 Jul 2018, 09:08
Location: University of Kent

Re: Entanglement Entropy in 1D spin-1 XXZ chain

Post by Leon »

DK_Lee wrote: 12 Jul 2019, 02:34 First of all, the last sentence (' This you could~ smaller.') in your answer for Q1 is not clear for me.
I was afraid so. Let me try again:
I think you might be finding quite different states for different values of Jz. I assume you are running a separate simulation for each Jz. My suggestion would be to start at, e.g., Jz=-1, run DMRG on some initial guess. Then, update the model with the next Jz (e.g., -0.9) and run DMRG with the result of the previous simulation as initial guess. Hopefully, you will then get 'adiabatically' related states and will get a smoothly varying entanglement entropy.
DK_Lee wrote: 12 Jul 2019, 02:34 But, as I know, if the 1D infinite chain is invariant under the translational symmetry, all singular value matrices for any site should be the same, which leads to the fact that all bond dimensions for all site should be the same.

Whereas, the iDMRG method in tenpy package sometimes yields the different bond dimensions for the left and right of site i.
While this should be the case in theory, it is not very surprising that you sometimes find different bond dimensions; the DMRG updates are local so could lead to some anisotropies in the bond dimension at intermediate number of sweeps. If the different bond dimensions persist for long simulations (i.e. even after ~100-200 sweeps), could you post a (minimal) example of the code you are running?
DK_Lee
Posts: 5
Joined: 05 Jul 2019, 04:59

Re: Entanglement Entropy in 1D spin-1 XXZ chain

Post by DK_Lee »

Thank you for your kindness,
I finally comprehend what you want to say for Q1.

Moreover, I overcome the problem for the different bond dimension as I tune the "dmrg_params" appropriately.

So, thank you again~
Post Reply