Question about convergence of DMRG algorithm for 1d spin chain

I want to write a DMRG code for Majumdar-Ghosh model but defined on a spin chain with odd site, and PBC.

The Hamiltonian is defined as:

os = OpSum()
for j = 1:N-1
os += 0.5, “S+”, j, “S-”, j + 1
os += 0.5, “S-”, j, “S+”, j + 1
os += 1.0, “Sz”, j, “Sz”, j + 1
end
for j = 1:N-2
os += 0.25, “S+”, j, “S-”, j + 2
os += 0.25, “S-”, j, “S+”, j + 2
os += 0.5, “Sz”, j, “Sz”, j + 2
end
os += 0.5, “S+”, 1, “S-”, N
os += 0.5, “S-”, 1, “S+”, N
os += 1.0, “Sz”, 1, “Sz”, N
os += 0.25, “S+”, 1, “S-”, N-1
os += 0.25, “S-”, 1, “S+”, N-1
os += 0.5, “Sz”, 1, “Sz”, N-1
os += 0.25, “S+”, 2, “S-”, N
os += 0.25, “S-”, 2, “S+”, N
os += 0.5, “Sz”, 2, “Sz”, N

where N is defined as 2M-1 (like 127, 111, 95, 79, 63…)

When I run the code, I found the output like

After sweep 1 energy=-44.481929186344885 maxlinkdim=300 maxerr=8.69E-04 time=86.664
After sweep 2 energy=-44.491945171337946 maxlinkdim=294 maxerr=1.82E-11 time=56.699
After sweep 3 energy=-44.49596888252315 maxlinkdim=300 maxerr=2.79E-11 time=28.780
After sweep 4 energy=-44.49831553410645 maxlinkdim=284 maxerr=1.00E-12 time=14.488
After sweep 5 energy=-44.499941228459406 maxlinkdim=241 maxerr=9.99E-13 time=9.099
After sweep 6 energy=-44.50115479519257 maxlinkdim=236 maxerr=9.98E-13 time=7.928
After sweep 7 energy=-44.5020439307327 maxlinkdim=230 maxerr=9.98E-13 time=7.746
After sweep 8 energy=-44.50274876800401 maxlinkdim=209 maxerr=9.98E-13 time=6.959
After sweep 9 energy=-44.50339952131439 maxlinkdim=185 maxerr=9.99E-13 time=5.806
After sweep 10 energy=-44.503907791478824 maxlinkdim=162 maxerr=9.98E-13 time=3.995
After sweep 11 energy=-44.50434542303579 maxlinkdim=141 maxerr=9.98E-13 time=3.305
After sweep 12 energy=-44.50467922723091 maxlinkdim=123 maxerr=9.99E-13 time=2.544
After sweep 13 energy=-44.50494644606336 maxlinkdim=107 maxerr=9.99E-13 time=2.186
After sweep 14 energy=-44.50515744754459 maxlinkdim=88 maxerr=9.95E-13 time=1.659
After sweep 15 energy=-44.50533817095654 maxlinkdim=80 maxerr=9.96E-13 time=1.653
After sweep 16 energy=-44.50552529916788 maxlinkdim=78 maxerr=9.99E-13 time=1.350
After sweep 17 energy=-44.50571174377446 maxlinkdim=78 maxerr=1.00E-12 time=1.562
After sweep 18 energy=-44.505886707568344 maxlinkdim=73 maxerr=1.00E-12 time=1.279
After sweep 19 energy=-44.506031127699295 maxlinkdim=72 maxerr=9.99E-13 time=1.573
After sweep 20 energy=-44.50614257554192 maxlinkdim=63 maxerr=9.96E-13 time=1.247
After sweep 21 energy=-44.50622600499852 maxlinkdim=55 maxerr=9.99E-13 time=1.146
After sweep 22 energy=-44.506308740273 maxlinkdim=51 maxerr=9.96E-13 time=1.310
After sweep 23 energy=-44.50639583445144 maxlinkdim=49 maxerr=1.00E-12 time=0.968
After sweep 24 energy=-44.50649899547017 maxlinkdim=66 maxerr=9.98E-13 time=1.274
After sweep 25 energy=-44.50658135710624 maxlinkdim=53 maxerr=1.00E-12 time=1.377
After sweep 26 energy=-44.50663860455781 maxlinkdim=50 maxerr=1.00E-12 time=1.112
After sweep 27 energy=-44.50669707260257 maxlinkdim=63 maxerr=9.99E-13 time=1.397
After sweep 28 energy=-44.50674986889638 maxlinkdim=56 maxerr=9.98E-13 time=1.157
After sweep 29 energy=-44.506795094424106 maxlinkdim=49 maxerr=9.94E-13 time=1.054
After sweep 30 energy=-44.506842287314576 maxlinkdim=47 maxerr=9.99E-13 time=1.403
After sweep 31 energy=-44.5069124670681 maxlinkdim=59 maxerr=9.99E-13 time=1.094
After sweep 32 energy=-44.506966178281175 maxlinkdim=53 maxerr=1.00E-12 time=1.264
After sweep 33 energy=-44.50701140060947 maxlinkdim=48 maxerr=9.97E-13 time=1.459
After sweep 34 energy=-44.50705438963784 maxlinkdim=49 maxerr=9.96E-13 time=1.450
After sweep 35 energy=-44.50709172757356 maxlinkdim=44 maxerr=9.99E-13 time=1.481
After sweep 36 energy=-44.50712029911698 maxlinkdim=44 maxerr=9.99E-13 time=1.250
After sweep 37 energy=-44.50714873624605 maxlinkdim=45 maxerr=1.00E-12 time=1.281
After sweep 38 energy=-44.50717753916703 maxlinkdim=50 maxerr=9.95E-13 time=1.443
After sweep 39 energy=-44.50720567342386 maxlinkdim=51 maxerr=9.98E-13 time=1.254
After sweep 40 energy=-44.50723066557673 maxlinkdim=46 maxerr=9.97E-13 time=1.275
After sweep 41 energy=-44.507255748411374 maxlinkdim=46 maxerr=9.99E-13 time=1.523
After sweep 42 energy=-44.50727752728447 maxlinkdim=46 maxerr=9.99E-13 time=1.301
After sweep 43 energy=-44.50729802345977 maxlinkdim=51 maxerr=9.99E-13 time=1.601
After sweep 44 energy=-44.50731794456762 maxlinkdim=51 maxerr=9.99E-13 time=1.299
After sweep 45 energy=-44.50733591769872 maxlinkdim=57 maxerr=1.00E-12 time=1.603
After sweep 46 energy=-44.50735128040145 maxlinkdim=51 maxerr=9.98E-13 time=1.212
After sweep 47 energy=-44.50736700247448 maxlinkdim=57 maxerr=1.00E-12 time=1.401
After sweep 48 energy=-44.50737990968225 maxlinkdim=45 maxerr=1.00E-12 time=1.612
After sweep 49 energy=-44.50739000230962 maxlinkdim=46 maxerr=9.97E-13 time=1.343
After sweep 50 energy=-44.507399622370265 maxlinkdim=43 maxerr=9.98E-13 time=1.553
After sweep 51 energy=-44.50740816650574 maxlinkdim=45 maxerr=9.99E-13 time=1.210
After sweep 52 energy=-44.50741592984533 maxlinkdim=47 maxerr=1.00E-12 time=1.373
After sweep 53 energy=-44.507423293004976 maxlinkdim=48 maxerr=9.99E-13 time=1.529
After sweep 54 energy=-44.50742982522328 maxlinkdim=51 maxerr=1.00E-12 time=1.234
After sweep 55 energy=-44.50743583743276 maxlinkdim=50 maxerr=9.98E-13 time=1.556
After sweep 56 energy=-44.50744143999142 maxlinkdim=53 maxerr=9.96E-13 time=1.299
After sweep 57 energy=-44.5074461689624 maxlinkdim=56 maxerr=9.99E-13 time=1.610
After sweep 58 energy=-44.507450464650695 maxlinkdim=51 maxerr=9.97E-13 time=1.348
After sweep 59 energy=-44.507454019576734 maxlinkdim=45 maxerr=1.00E-12 time=1.273
After sweep 60 energy=-44.50745718651609 maxlinkdim=49 maxerr=9.96E-13 time=1.540
After sweep 61 energy=-44.50746002541054 maxlinkdim=48 maxerr=9.99E-13 time=1.302
After sweep 62 energy=-44.50746268734314 maxlinkdim=50 maxerr=9.99E-13 time=1.617
After sweep 63 energy=-44.50746485884627 maxlinkdim=48 maxerr=9.96E-13 time=1.328
After sweep 64 energy=-44.50746670663664 maxlinkdim=48 maxerr=9.99E-13 time=1.276
After sweep 65 energy=-44.507468421502004 maxlinkdim=53 maxerr=1.00E-12 time=1.558
After sweep 66 energy=-44.50746989879488 maxlinkdim=50 maxerr=1.00E-12 time=1.309
After sweep 67 energy=-44.50747118044341 maxlinkdim=52 maxerr=1.00E-12 time=1.586
After sweep 68 energy=-44.50747232598204 maxlinkdim=55 maxerr=1.00E-12 time=1.390
After sweep 69 energy=-44.507473324056576 maxlinkdim=55 maxerr=1.00E-12 time=1.367
After sweep 70 energy=-44.50747413739557 maxlinkdim=56 maxerr=1.00E-12 time=1.557
After sweep 71 energy=-44.50747482576718 maxlinkdim=49 maxerr=9.95E-13 time=1.274
After sweep 72 energy=-44.50747540547035 maxlinkdim=46 maxerr=9.99E-13 time=1.571
After sweep 73 energy=-44.50747588201757 maxlinkdim=48 maxerr=1.00E-12 time=1.374
After sweep 74 energy=-44.50747630807204 maxlinkdim=48 maxerr=9.98E-13 time=1.575
After sweep 75 energy=-44.50747666458328 maxlinkdim=47 maxerr=9.98E-13 time=1.277
After sweep 76 energy=-44.50747698781786 maxlinkdim=49 maxerr=9.98E-13 time=1.284
After sweep 77 energy=-44.507477280049905 maxlinkdim=51 maxerr=9.99E-13 time=1.574
After sweep 78 energy=-44.50747753506067 maxlinkdim=47 maxerr=1.00E-12 time=1.359
After sweep 79 energy=-44.50747774828389 maxlinkdim=48 maxerr=9.99E-13 time=1.564
After sweep 80 energy=-44.507477937831155 maxlinkdim=48 maxerr=1.00E-12 time=1.323
After sweep 81 energy=-44.507478095157616 maxlinkdim=46 maxerr=9.99E-13 time=1.336
After sweep 82 energy=-44.5074782382683 maxlinkdim=49 maxerr=9.98E-13 time=1.618
After sweep 83 energy=-44.50747836658586 maxlinkdim=47 maxerr=9.99E-13 time=1.283
After sweep 84 energy=-44.50747848408119 maxlinkdim=48 maxerr=1.00E-12 time=1.554
After sweep 85 energy=-44.50747858622078 maxlinkdim=48 maxerr=9.97E-13 time=1.318
After sweep 86 energy=-44.50747867474391 maxlinkdim=53 maxerr=9.99E-13 time=1.614
After sweep 87 energy=-44.507478752107005 maxlinkdim=52 maxerr=1.00E-12 time=1.325
After sweep 88 energy=-44.507478821271526 maxlinkdim=50 maxerr=1.00E-12 time=1.358
After sweep 89 energy=-44.50747888444592 maxlinkdim=50 maxerr=9.98E-13 time=1.426
After sweep 90 energy=-44.50747893956039 maxlinkdim=52 maxerr=9.98E-13 time=1.298
After sweep 91 energy=-44.50747898836787 maxlinkdim=56 maxerr=9.98E-13 time=1.590
After sweep 92 energy=-44.507479031383994 maxlinkdim=54 maxerr=9.99E-13 time=1.339
After sweep 93 energy=-44.50747907004947 maxlinkdim=50 maxerr=9.98E-13 time=1.314
After sweep 94 energy=-44.50747910655964 maxlinkdim=51 maxerr=1.00E-12 time=1.508
After sweep 95 energy=-44.50747913518592 maxlinkdim=52 maxerr=1.00E-12 time=1.247
After sweep 96 energy=-44.507479161232645 maxlinkdim=48 maxerr=1.00E-12 time=1.656
After sweep 97 energy=-44.50747918253786 maxlinkdim=52 maxerr=1.00E-12 time=1.369
After sweep 98 energy=-44.507479198563665 maxlinkdim=46 maxerr=9.98E-13 time=1.331
After sweep 99 energy=-44.50747921066809 maxlinkdim=44 maxerr=9.98E-13 time=1.542
After sweep 100 energy=-44.50747921997647 maxlinkdim=43 maxerr=9.92E-13 time=1.246

It seems so weird… Could I believe that it is converged? Here, I guess the system is gapless, so are there any other possible way to improve this?

Thanks

Glad to hear you are trying ITensor. Could you please clarify what your question is?

As a general rule, always test your code for small systems with exact diagonalization. For the rest, as Miles said, the question is not really clear. If you think the dmrg is having an hard time converging because of degeneracy, you could add an additive term that explicitly breaks it.

If you want to know in general whether a dmrg converged, I’d suggest you to take a look (if you haven’t already) at this beautiful FAQs DMRG FAQs · ITensorMPS.jl.

If this still does not answer your question, if you could please be more specific.

It can be converged with the results from ED for small size (like L=9, 11, 13)

Now I find the bond dim is much less than which I set, and it seems that the ground state has short-range entangled properties. But I’m not sure if the state is the true ground state because I’m afraid about some localized min-energy states.

Therefore, if I try to do simulation again, are there any suggestions about the code, or the parameters I set.

I guess I still don’t understand your precise question? Are you asking something like “what are good parameters to choose for DMRG”? And “how can one be sure DMRG has converged”?

A few rough answers to those questions are:

  1. a good practice is to raise the maximum bond dimension each sweep, starting from a small value. So like maxdim = [10,20,40, 80, 160]
  2. another good practice is to just use a medium-small cutoff throughout, so like cutoff=1E-8
  3. as far as checking the right answer and avoiding local minima, this is a hard question in general, and the main thing you can do is test against exact results on small systems or exactly solvable points etc. or reason about physical properties, like plotting the expected value of operators as a function of site number. Are the properties smooth? Are they left-right symmetric? Etc.